Skip to content

Commit ec016bf

Browse files
committed
Move SYCL setup into workflow
1 parent a53f908 commit ec016bf

2 files changed

Lines changed: 163 additions & 160 deletions

File tree

.github/workflows/sycl-ci.yml

Lines changed: 163 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,169 @@ jobs:
5959
uses: ilammy/msvc-dev-cmd@v1
6060

6161
- name: Prepare AdaptiveCpp toolchain
62-
run: python ./scripts/ci/sycl_setup.py ${{ matrix.platform }}
62+
if: runner.os == 'macOS'
63+
shell: bash
64+
run: |
65+
brew install adaptivecpp libomp ninja
66+
echo "ITLABAI_CC=$(xcrun --find clang)" >> "${GITHUB_ENV}"
67+
echo "ITLABAI_CXX=$(xcrun --find clang++)" >> "${GITHUB_ENV}"
68+
echo "ITLABAI_CMAKE_PREFIX_PATH=$(brew --prefix adaptivecpp);$(brew --prefix libomp)" >> "${GITHUB_ENV}"
69+
echo "ITLABAI_OPENMP_ROOT=$(brew --prefix libomp)" >> "${GITHUB_ENV}"
70+
echo "ACPP_TARGETS=omp.library-only" >> "${GITHUB_ENV}"
71+
72+
- name: Prepare AdaptiveCpp toolchain
73+
if: runner.os == 'Linux'
74+
shell: bash
75+
run: |
76+
sudo apt-get update
77+
sudo apt-get install -y \
78+
build-essential \
79+
ccache \
80+
clang-18 \
81+
cmake \
82+
libboost-context-dev \
83+
libboost-fiber-dev \
84+
libboost-filesystem-dev \
85+
libboost-system-dev \
86+
libboost-test-dev \
87+
libclang-18-dev \
88+
libomp-18-dev \
89+
llvm-18-dev \
90+
ninja-build \
91+
python3
92+
93+
install_dir="${RUNNER_TEMP}/adaptivecpp-install"
94+
config="${install_dir}/lib/cmake/AdaptiveCpp/AdaptiveCppConfig.cmake"
95+
archive_dir="${RUNNER_TEMP}/archives"
96+
archive="${archive_dir}/AdaptiveCpp-${ADAPTIVECPP_TAG}.tar.gz"
97+
source_dir="${RUNNER_TEMP}/AdaptiveCpp"
98+
build_dir="${RUNNER_TEMP}/AdaptiveCpp-build"
99+
100+
mkdir -p "${archive_dir}"
101+
if [ ! -f "${archive}" ]; then
102+
curl -L "https://github.com/AdaptiveCpp/AdaptiveCpp/archive/refs/tags/${ADAPTIVECPP_TAG}.tar.gz" -o "${archive}"
103+
fi
104+
105+
if [ ! -f "${config}" ]; then
106+
rm -rf "${source_dir}" "${build_dir}"
107+
mkdir -p "${source_dir}" "${build_dir}" "${install_dir}"
108+
tar -xzf "${archive}" -C "${RUNNER_TEMP}"
109+
extracted_dir="$(find "${RUNNER_TEMP}" -maxdepth 1 -type d -name 'AdaptiveCpp-*' | head -n 1)"
110+
rm -rf "${source_dir}"
111+
mv "${extracted_dir}" "${source_dir}"
112+
113+
cmake -S "${source_dir}" -B "${build_dir}" -G Ninja \
114+
-DCMAKE_BUILD_TYPE=Release \
115+
-DCMAKE_INSTALL_PREFIX="${install_dir}" \
116+
-DCMAKE_C_COMPILER=/usr/bin/clang-18 \
117+
-DCMAKE_CXX_COMPILER=/usr/bin/clang++-18 \
118+
-DLLVM_DIR=/usr/lib/llvm-18/lib/cmake/llvm \
119+
-DClang_DIR=/usr/lib/llvm-18/lib/cmake/clang \
120+
$(command -v ccache >/dev/null 2>&1 && printf '%s ' -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache)
121+
cmake --build "${build_dir}" --target install --parallel
122+
fi
123+
124+
echo "ITLABAI_CC=/usr/bin/clang-18" >> "${GITHUB_ENV}"
125+
echo "ITLABAI_CXX=/usr/bin/clang++-18" >> "${GITHUB_ENV}"
126+
echo "ITLABAI_CMAKE_PREFIX_PATH=${install_dir}" >> "${GITHUB_ENV}"
127+
echo "ITLABAI_OPENMP_ROOT=/usr/lib/llvm-18" >> "${GITHUB_ENV}"
128+
echo "ACPP_TARGETS=omp.library-only" >> "${GITHUB_ENV}"
129+
if [ -d "${install_dir}/bin" ]; then
130+
echo "${install_dir}/bin" >> "${GITHUB_PATH}"
131+
fi
132+
133+
- name: Prepare AdaptiveCpp toolchain
134+
if: runner.os == 'Windows'
135+
shell: pwsh
136+
run: |
137+
$archiveDir = Join-Path $env:RUNNER_TEMP 'archives'
138+
$llvmDir = Join-Path $env:RUNNER_TEMP 'llvm'
139+
$ninjaDir = Join-Path $env:RUNNER_TEMP 'ninja_install'
140+
$boostDir = Join-Path $env:RUNNER_TEMP 'boost_1_87_0'
141+
$sourceDir = Join-Path $env:RUNNER_TEMP 'AdaptiveCpp'
142+
$buildDir = Join-Path $env:RUNNER_TEMP 'AdaptiveCpp-build'
143+
$installDir = Join-Path $env:RUNNER_TEMP 'adaptivecpp-install'
144+
145+
New-Item -ItemType Directory -Force -Path $archiveDir | Out-Null
146+
147+
$ninjaArchive = Join-Path $archiveDir 'ninja-win.zip'
148+
if (-not (Test-Path (Join-Path $ninjaDir 'ninja.exe'))) {
149+
if (-not (Test-Path $ninjaArchive)) {
150+
Invoke-WebRequest 'https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-win.zip' -OutFile $ninjaArchive
151+
}
152+
Remove-Item $ninjaDir -Recurse -Force -ErrorAction SilentlyContinue
153+
Expand-Archive $ninjaArchive -DestinationPath $ninjaDir
154+
}
155+
156+
$llvmArchive = Join-Path $archiveDir \"llvm-mingw-$env:LLVM_MINGW_VERSION.zip\"
157+
if (-not (Test-Path (Join-Path $llvmDir 'bin/clang++.exe'))) {
158+
if (-not (Test-Path $llvmArchive)) {
159+
Invoke-WebRequest \"https://github.com/mstorsjo/llvm-mingw/releases/download/$env:LLVM_MINGW_VERSION/llvm-mingw-$env:LLVM_MINGW_VERSION-msvcrt-x86_64.zip\" -OutFile $llvmArchive
160+
}
161+
Remove-Item $llvmDir -Recurse -Force -ErrorAction SilentlyContinue
162+
Expand-Archive $llvmArchive -DestinationPath $env:RUNNER_TEMP
163+
$extractedLlvm = Get-ChildItem $env:RUNNER_TEMP -Directory | Where-Object { $_.Name -like 'llvm-mingw-*-msvcrt-x86_64' } | Select-Object -First 1
164+
Move-Item $extractedLlvm.FullName $llvmDir
165+
}
166+
167+
$env:PATH = \"$($llvmDir)\\bin;$ninjaDir;$env:PATH\"
168+
169+
if (-not (Test-Path (Join-Path $boostDir 'stage/lib'))) {
170+
$boostArchive = Join-Path $archiveDir 'boost_1_87_0.zip'
171+
if (-not (Test-Path $boostArchive)) {
172+
Invoke-WebRequest 'https://archives.boost.io/release/1.87.0/source/boost_1_87_0.zip' -OutFile $boostArchive
173+
}
174+
Remove-Item $boostDir -Recurse -Force -ErrorAction SilentlyContinue
175+
Expand-Archive $boostArchive -DestinationPath $env:RUNNER_TEMP
176+
Push-Location $boostDir
177+
cmd /c bootstrap.bat clang | Out-Host
178+
cmd /c \"b2.exe --with-context --with-fiber --with-atomic --with-filesystem --with-test toolset=clang address-model=64 variant=release --build-type=complete stage\" | Out-Host
179+
Pop-Location
180+
}
181+
182+
$acppConfig = Join-Path $installDir 'lib/cmake/AdaptiveCpp/AdaptiveCppConfig.cmake'
183+
$adaptiveCppArchive = Join-Path $archiveDir \"AdaptiveCpp-$env:ADAPTIVECPP_TAG.tar.gz\"
184+
if (-not (Test-Path $adaptiveCppArchive)) {
185+
Invoke-WebRequest \"https://github.com/AdaptiveCpp/AdaptiveCpp/archive/refs/tags/$env:ADAPTIVECPP_TAG.tar.gz\" -OutFile $adaptiveCppArchive
186+
}
187+
188+
if (-not (Test-Path $acppConfig)) {
189+
Remove-Item $sourceDir,$buildDir -Recurse -Force -ErrorAction SilentlyContinue
190+
New-Item -ItemType Directory -Force -Path $buildDir,$installDir | Out-Null
191+
tar -xzf $adaptiveCppArchive -C $env:RUNNER_TEMP
192+
$extractedAcpp = Get-ChildItem $env:RUNNER_TEMP -Directory | Where-Object { $_.Name -like 'AdaptiveCpp-*' } | Select-Object -First 1
193+
Move-Item $extractedAcpp.FullName $sourceDir
194+
195+
$cmakeArgs = @(
196+
'-S', $sourceDir,
197+
'-B', $buildDir,
198+
'-G', 'Ninja',
199+
'-DCMAKE_BUILD_TYPE=Release',
200+
\"-DCMAKE_INSTALL_PREFIX=$installDir\",
201+
\"-DCMAKE_C_COMPILER=$llvmDir/bin/clang.exe\",
202+
\"-DCMAKE_CXX_COMPILER=$llvmDir/bin/clang++.exe\",
203+
\"-DBOOST_ROOT=$boostDir\",
204+
'-DBoost_COMPILER=-clang17',
205+
'-DBoost_ARCHITECTURE=-x64'
206+
)
207+
if (Get-Command ccache -ErrorAction SilentlyContinue) {
208+
$cmakeArgs += '-DCMAKE_C_COMPILER_LAUNCHER=ccache'
209+
$cmakeArgs += '-DCMAKE_CXX_COMPILER_LAUNCHER=ccache'
210+
}
211+
& cmake @cmakeArgs
212+
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
213+
& cmake --build $buildDir --target install --parallel
214+
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
215+
}
216+
217+
\"ITLABAI_CC=$llvmDir/bin/clang.exe\" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
218+
\"ITLABAI_CXX=$llvmDir/bin/clang++.exe\" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
219+
\"ITLABAI_CMAKE_PREFIX_PATH=$installDir\" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
220+
\"ITLABAI_OPENMP_ROOT=$llvmDir\" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
221+
'ACPP_TARGETS=omp.library-only' | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
222+
\"$installDir\\bin\" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
223+
\"$llvmDir\\bin\" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
224+
\"$ninjaDir\" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
63225
64226
- name: Configure, build and test
65227
if: runner.os != 'Windows'

scripts/ci/sycl_setup.py

Lines changed: 0 additions & 159 deletions
This file was deleted.

0 commit comments

Comments
 (0)