Updated CI workflow #4
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Windows | |
on: [push, pull_request] | |
jobs: | |
tools: | |
runs-on: windows-2022 | |
strategy: | |
matrix: | |
CMAKE: [3.22.0] | |
NINJA: [1.10.2] | |
env: | |
CMAKE_URL: https://github.com/Kitware/CMake/releases/download/v${{matrix.CMAKE}}/cmake-${{matrix.CMAKE}}-windows-x86_64.zip | |
NINJA_URL: https://github.com/ninja-build/ninja/releases/download/v${{matrix.NINJA}}/ninja-win.zip | |
steps: | |
- name: Cache CMake | |
uses: actions/cache@v3 | |
id: cmake | |
env: | |
cache-name: cache-cmake | |
with: | |
path: ~/Downloads/cmake-${{matrix.CMAKE}}-windows-x86_64.zip | |
key: ${{ runner.os }}-${{ env.cache-name }}-${{matrix.CMAKE}} | |
- name: Cache Ninja | |
uses: actions/cache@v3 | |
id: ninja | |
env: | |
cache-name: cache-ninja | |
with: | |
path: ~/Downloads/ninja-win.zip | |
key: ${{ runner.os }}-${{ env.cache-name }}-${{matrix.NINJA}} | |
- name: Checkout CMake | |
if: steps.cmake.outputs.cache-hit != 'true' | |
shell: pwsh | |
run: Invoke-WebRequest ${env:CMAKE_URL} -OutFile ~\Downloads\cmake-${{matrix.CMAKE}}-windows-x86_64.zip | |
- name: Checkout Ninja | |
if: steps.ninja.outputs.cache-hit != 'true' | |
shell: pwsh | |
run: Invoke-WebRequest ${env:NINJA_URL} -OutFile ~\Downloads\ninja-win.zip | |
msvc: | |
needs: [tools] | |
runs-on: windows-2022 | |
strategy: | |
matrix: | |
VER: [v141, v142, v143] | |
EXT: [ON, OFF] | |
GEN: [Visual Studio 17 2022, Ninja Multi-Config] | |
BIN: [x64, x86] | |
STD: [90, 11, 17] | |
CMAKE: [3.22.0] | |
NINJA: [1.10.2] | |
env: | |
CMAKE_EXE: C:\Tools\Kitware\CMake\${{matrix.CMAKE}}\bin\cmake.exe | |
CTEST_EXE: C:\Tools\Kitware\CMake\${{matrix.CMAKE}}\bin\ctest.exe | |
NINJA_EXE: C:\Tools\Ninja\ninja.exe | |
steps: | |
- name: Checkout OpenCL-ICD-Loader | |
uses: actions/checkout@v3 | |
- name: Checkout OpenCL-Headers | |
uses: actions/checkout@v3 | |
with: | |
repository: KhronosGroup/OpenCL-Headers | |
path: external/OpenCL-Headers | |
- name: Restore CMake | |
uses: actions/cache@v3 | |
id: cmake | |
env: | |
cache-name: cache-cmake | |
with: | |
path: ~/Downloads/cmake-${{matrix.CMAKE}}-windows-x86_64.zip | |
key: ${{ runner.os }}-${{ env.cache-name }}-${{matrix.CMAKE}} | |
- name: Restore Ninja | |
uses: actions/cache@v3 | |
id: ninja | |
env: | |
cache-name: cache-ninja | |
with: | |
path: ~/Downloads/ninja-win.zip | |
key: ${{ runner.os }}-${{ env.cache-name }}-${{matrix.NINJA}} | |
- name: Create Build Environment | |
shell: pwsh | |
run: | | |
Expand-Archive ~\Downloads\cmake-${{matrix.CMAKE}}-windows-x86_64.zip -DestinationPath C:\Tools\Kitware\CMake\ | |
Rename-Item C:\Tools\Kitware\CMake\* ${{matrix.CMAKE}} | |
Expand-Archive ~\Downloads\ninja-win.zip -DestinationPath C:\Tools\Ninja\ | |
& ${env:CMAKE_EXE} --version | |
& ${env:NINJA_EXE} --version | |
- name: Build & install OpenCL-Headers (MSBuild) | |
if: matrix.GEN == 'Visual Studio 17 2022' | |
shell: cmd | |
run: | | |
set C_FLAGS="/W4 /WX" | |
if /I "${{matrix.BIN}}"=="x86" (set BIN=Win32) else (set BIN=x64) | |
%CMAKE_EXE% -G "${{matrix.GEN}}" -A %BIN% -T ${{matrix.VER}} -D CMAKE_C_FLAGS=%C_FLAGS% -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%\external\OpenCL-Headers\install -D BUILD_TESTING=OFF -S %GITHUB_WORKSPACE%\external\OpenCL-Headers -B %GITHUB_WORKSPACE%\external\OpenCL-Headers\build | |
%CMAKE_EXE% --build %GITHUB_WORKSPACE%/external/OpenCL-Headers/build --target install --config Release -- /verbosity:minimal /maxCpuCount /noLogo | |
- name: Build & install OpenCL-Headers (Ninja Multi-Config) | |
if: matrix.GEN == 'Ninja Multi-Config' | |
shell: cmd | |
run: | | |
set C_FLAGS="/W4 /WX" | |
if /I "${{matrix.VER}}"=="v140" (set VER=14.0) | |
if /I "${{matrix.VER}}"=="v141" (set VER=14.1) | |
if /I "${{matrix.VER}}"=="v142" (set VER=14.2) | |
if /I "${{matrix.VER}}"=="v143" (set VER=14.3) | |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{matrix.BIN}} /vcvars_ver=%VER% | |
%CMAKE_EXE% -G "${{matrix.GEN}}" -D CMAKE_MAKE_PROGRAM=%NINJA_EXE% -D CMAKE_C_FLAGS=%C_FLAGS% -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%\external\OpenCL-Headers\install -D BUILD_TESTING=OFF -S %GITHUB_WORKSPACE%\external\OpenCL-Headers -B %GITHUB_WORKSPACE%\external\OpenCL-Headers\build | |
%CMAKE_EXE% --build %GITHUB_WORKSPACE%/external/OpenCL-Headers/build --target install -- -j%NUMBER_OF_PROCESSORS% | |
- name: Configure (MSBuild) | |
if: matrix.GEN == 'Visual Studio 17 2022' | |
shell: cmd | |
# no /WX during configuration because: | |
# warning C4459: declaration of 'platform' hides global declaration | |
# warning C4100: 'input_headers': unreferenced formal parameter | |
run: | | |
set C_FLAGS="/W4" | |
if /I "${{matrix.BIN}}"=="x86" (set BIN=Win32) else (set BIN=x64) | |
%CMAKE_EXE% -G "${{matrix.GEN}}" -A %BIN% -T ${{matrix.VER}} -D BUILD_TESTING=ON -D CMAKE_C_FLAGS=%C_FLAGS% -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%\install -D CMAKE_PREFIX_PATH=%GITHUB_WORKSPACE%\external\OpenCL-Headers\install -S %GITHUB_WORKSPACE% -B %GITHUB_WORKSPACE%\build | |
- name: Configure (Ninja Multi-Config) | |
if: matrix.GEN == 'Ninja Multi-Config' | |
shell: cmd | |
# no /WX during configuration because: | |
# warning C4459: declaration of 'platform' hides global declaration | |
# warning C4100: 'input_headers': unreferenced formal parameter | |
run: | | |
set C_FLAGS="/W4" | |
if /I "${{matrix.VER}}"=="v140" (set VER=14.0) | |
if /I "${{matrix.VER}}"=="v141" (set VER=14.1) | |
if /I "${{matrix.VER}}"=="v142" (set VER=14.2) | |
if /I "${{matrix.VER}}"=="v143" (set VER=14.3) | |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{matrix.BIN}} /vcvars_ver=%VER% | |
%CMAKE_EXE% -G "${{matrix.GEN}}" -D CMAKE_MAKE_PROGRAM=%NINJA_EXE% -D BUILD_TESTING=ON -D CMAKE_C_FLAGS=%C_FLAGS% -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL -D CMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%\install -D CMAKE_PREFIX_PATH=%GITHUB_WORKSPACE%\external\OpenCL-Headers\install -S %GITHUB_WORKSPACE% -B %GITHUB_WORKSPACE%\build | |
- name: Build (MSBuild) | |
if: matrix.GEN == 'Visual Studio 17 2022' | |
shell: cmd | |
run: | | |
%CMAKE_EXE% --build %GITHUB_WORKSPACE%\build --config Release -- /verbosity:minimal /maxCpuCount /noLogo | |
%CMAKE_EXE% --build %GITHUB_WORKSPACE%\build --config Debug -- /verbosity:minimal /maxCpuCount /noLogo | |
- name: Build (Ninja) | |
if: matrix.GEN == 'Ninja Multi-Config' | |
shell: cmd | |
run: | | |
if /I "${{matrix.VER}}"=="v140" set VER=14.0 | |
if /I "${{matrix.VER}}"=="v141" set VER=14.1 | |
if /I "${{matrix.VER}}"=="v142" set VER=14.2 | |
if /I "${{matrix.VER}}"=="v143" set VER=14.3 | |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{matrix.BIN}} /vcvars_ver=%VER% | |
%CMAKE_EXE% --build %GITHUB_WORKSPACE%\build --config Release | |
%CMAKE_EXE% --build %GITHUB_WORKSPACE%\build --config Debug | |
- name: Test | |
working-directory: ${{runner.workspace}}/OpenCL-ICD-Loader/build | |
shell: cmd | |
run: | | |
if /I "${{matrix.BIN}}"=="x64" set REG=reg | |
if /I "${{matrix.BIN}}"=="x86" set REG=%systemroot%\Syswow64\reg.exe | |
%REG% ADD HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenCL\Vendors /v %GITHUB_WORKSPACE%/build/Release/OpenCLDriverStub.dll /t REG_DWORD /d 0 | |
%CTEST_EXE% -C Release --output-on-failure --parallel %NUMBER_OF_PROCESSORS% | |
if errorlevel 1 ( | |
exit /b %errorlevel% | |
) | |
%REG% DELETE HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenCL\Vendors /v %GITHUB_WORKSPACE%/build/Release/OpenCLDriverStub.dll /f | |
%REG% ADD HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenCL\Vendors /v %GITHUB_WORKSPACE%/build/Debug/OpenCLDriverStub.dll /t REG_DWORD /d 0 | |
%CTEST_EXE% -C Debug --output-on-failure --parallel %NUMBER_OF_PROCESSORS% | |
if errorlevel 1 ( | |
exit /b %errorlevel% | |
) | |
%REG% DELETE HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenCL\Vendors /v %GITHUB_WORKSPACE%/build/Debug/OpenCLDriverStub.dll /f | |
- name: Install | |
shell: cmd | |
run: | | |
%CMAKE_EXE% --build %GITHUB_WORKSPACE%/build --config Release --target install | |
- name: "Consume (MSBuild standalone): Configure/Build/Test" | |
shell: cmd | |
run: | | |
set C_FLAGS="/W4" | |
if /I "${{matrix.BIN}}"=="x86" (set BIN=Win32) else (set BIN=x64) | |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{matrix.BIN}} /vcvars_ver=%VER% | |
%CMAKE_EXE% -G "${{matrix.GEN}}" -D CMAKE_C_FLAGS=%C_FLAGS% -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL -D CMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%\install -D CMAKE_PREFIX_PATH="%GITHUB_WORKSPACE%\external\OpenCL-Headers\install;%GITHUB_WORKSPACE%\install" -D DRIVER_STUB_PATH=%GITHUB_WORKSPACE%/build/Release/OpenCLDriverStub.dll -B %GITHUB_WORKSPACE%/build/downstream/bare -S %GITHUB_WORKSPACE%/test/pkgconfig/bare | |
%CMAKE_EXE% --build %GITHUB_WORKSPACE%/test/pkgconfig/bare --config Release | |
%CMAKE_EXE% --build %GITHUB_WORKSPACE%/test/pkgconfig/bare --config Debug | |
cd %GITHUB_WORKSPACE%/test/pkgconfig/bare | |
%CTEST_EXE% --output-on-failure -C Release | |
%CTEST_EXE% --output-on-failure -C Debug | |
- name: "Consume (MSBuild SDK): Configure/Build/Test" | |
shell: cmd | |
run: | | |
set C_FLAGS="/W4" | |
if /I "${{matrix.BIN}}"=="x86" (set BIN=Win32) else (set BIN=x64) | |
%CMAKE_EXE% -E make_directory $GITHUB_WORKSPACE/install/share/cmake/OpenCL | |
echo -e 'include("/home/runner/work/OpenCL-ICD-Loader/OpenCL-ICD-Loader/external/OpenCL-Headers/install/share/cmake/OpenCLHeaders/OpenCLHeadersTargets.cmake")\ninclude("${CMAKE_CURRENT_LIST_DIR}/../OpenCLICDLoader/OpenCLICDLoaderTargets.cmake")' > $GITHUB_WORKSPACE/install/share/cmake/OpenCL/OpenCLConfig.cmake | |
%CMAKE_EXE% -G "${{matrix.GEN}}" -D CMAKE_C_FLAGS=%C_FLAGS% -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL -D CMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%\install -D CMAKE_PREFIX_PATH="%GITHUB_WORKSPACE%\external\OpenCL-Headers\install;%GITHUB_WORKSPACE%\install" -D DRIVER_STUB_PATH=%GITHUB_WORKSPACE%/build/Release/OpenCLDriverStub.dll -B %GITHUB_WORKSPACE%/build/downstream/bare -S %GITHUB_WORKSPACE%/test/pkgconfig/bare | |
%CMAKE_EXE% --build %GITHUB_WORKSPACE%/test/pkgconfig/bare --config Release | |
%CMAKE_EXE% --build %GITHUB_WORKSPACE%/test/pkgconfig/bare --config Debug | |
cd %GITHUB_WORKSPACE%/test/pkgconfig/bare | |
%CTEST_EXE% --output-on-failure -C Release | |
%CTEST_EXE% --output-on-failure -C Debug | |
- name: "Consume (Ninja-Multi-Config standalone): Configure/Build/Test" | |
shell: cmd | |
run: | | |
set C_FLAGS="/W4" | |
if /I "${{matrix.VER}}"=="v140" (set VER=14.0) | |
if /I "${{matrix.VER}}"=="v141" (set VER=14.1) | |
if /I "${{matrix.VER}}"=="v142" (set VER=14.2) | |
if /I "${{matrix.VER}}"=="v143" (set VER=14.3) | |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{matrix.BIN}} /vcvars_ver=%VER% | |
%CMAKE_EXE% -G "${{matrix.GEN}}" -D CMAKE_MAKE_PROGRAM=%NINJA_EXE% -D CMAKE_C_FLAGS=%C_FLAGS% -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL -D CMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%\install -D CMAKE_PREFIX_PATH="%GITHUB_WORKSPACE%\external\OpenCL-Headers\install;%GITHUB_WORKSPACE%\install" -D DRIVER_STUB_PATH=%GITHUB_WORKSPACE%/build/Release/OpenCLDriverStub.dll -B %GITHUB_WORKSPACE%/build/downstream/bare -S %GITHUB_WORKSPACE%/test/pkgconfig/bare | |
%CMAKE_EXE% --build %GITHUB_WORKSPACE%/test/pkgconfig/bare --config Release | |
%CMAKE_EXE% --build %GITHUB_WORKSPACE%/test/pkgconfig/bare --config Debug | |
cd %GITHUB_WORKSPACE%/test/pkgconfig/bare | |
%CTEST_EXE% --output-on-failure -C Release | |
%CTEST_EXE% --output-on-failure -C Debug | |
- name: "Consume (Ninja-Multi-Config SDK): Configure/Build/Test" | |
shell: cmd | |
run: | | |
set C_FLAGS="/W4" | |
if /I "${{matrix.VER}}"=="v140" (set VER=14.0) | |
if /I "${{matrix.VER}}"=="v141" (set VER=14.1) | |
if /I "${{matrix.VER}}"=="v142" (set VER=14.2) | |
if /I "${{matrix.VER}}"=="v143" (set VER=14.3) | |
%CMAKE_EXE% -E make_directory $GITHUB_WORKSPACE/install/share/cmake/OpenCL | |
echo -e 'include("/home/runner/work/OpenCL-ICD-Loader/OpenCL-ICD-Loader/external/OpenCL-Headers/install/share/cmake/OpenCLHeaders/OpenCLHeadersTargets.cmake")\ninclude("${CMAKE_CURRENT_LIST_DIR}/../OpenCLICDLoader/OpenCLICDLoaderTargets.cmake")' > $GITHUB_WORKSPACE/install/share/cmake/OpenCL/OpenCLConfig.cmake | |
%CMAKE_EXE% -G "${{matrix.GEN}}" -D CMAKE_MAKE_PROGRAM=%NINJA_EXE% -D CMAKE_C_FLAGS=%C_FLAGS% -D CMAKE_C_STANDARD=${{matrix.STD}} -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL -D CMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%\install -D CMAKE_PREFIX_PATH="%GITHUB_WORKSPACE%\external\OpenCL-Headers\install;%GITHUB_WORKSPACE%\install" -D DRIVER_STUB_PATH=%GITHUB_WORKSPACE%/build/Release/OpenCLDriverStub.dll -B %GITHUB_WORKSPACE%/build/downstream/bare -S %GITHUB_WORKSPACE%/test/pkgconfig/bare | |
%CMAKE_EXE% --build %GITHUB_WORKSPACE%/test/pkgconfig/bare --config Release | |
%CMAKE_EXE% --build %GITHUB_WORKSPACE%/test/pkgconfig/bare --config Debug | |
cd %GITHUB_WORKSPACE%/test/pkgconfig/bare | |
%CTEST_EXE% --output-on-failure -C Release | |
%CTEST_EXE% --output-on-failure -C Debug |