@@ -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'
0 commit comments