name: Windows on: [push, pull_request] jobs: msvc: runs-on: windows-2022 strategy: matrix: VER: [v141, v142, v143] EXT: [ON] # OFF: error C2079: 'statbuf' uses undefined struct 'stat' GEN: [Visual Studio 17 2022, Ninja Multi-Config] BIN: [x64, x86] STD: [11, 17] CMAKE: [3.22.0] env: CMAKE_URL: https://github.com/Kitware/CMake/releases/download/v${{matrix.CMAKE}}/cmake-${{matrix.CMAKE}}-windows-x86_64.zip CMAKE_EXE: C:\Tools\Kitware\CMake\${{matrix.CMAKE}}\bin\cmake.exe CTEST_EXE: C:\Tools\Kitware\CMake\${{matrix.CMAKE}}\bin\ctest.exe NINJA_URL: https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-win.zip NINJA_EXE: C:\Tools\Ninja\ninja.exe steps: - name: Checkout OpenCL-CLHPP uses: actions/checkout@v3 with: submodules: recursive - name: Checkout OpenCL-Headers uses: actions/checkout@v3 with: repository: KhronosGroup/OpenCL-Headers path: external/OpenCL-Headers - name: Checkout OpenCL-ICD-Loader uses: actions/checkout@v3 with: repository: KhronosGroup/OpenCL-ICD-Loader path: external/OpenCL-ICD-Loader - name: Create Build Environment shell: pwsh run: | Invoke-WebRequest ${env:CMAKE_URL} -OutFile ~\Downloads\cmake-${{matrix.CMAKE}}-windows-x86_64.zip Expand-Archive ~\Downloads\cmake-${{matrix.CMAKE}}-windows-x86_64.zip -DestinationPath C:\Tools\Kitware\CMake\ Rename-Item C:\Tools\Kitware\CMake\* ${{matrix.CMAKE}} Invoke-WebRequest ${env:NINJA_URL} -OutFile ~\Downloads\ninja-win.zip Expand-Archive ~\Downloads\ninja-win.zip -DestinationPath C:\Tools\Ninja\ Remove-Item ~\Downloads\* & ${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="/w" 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="/w" 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: Build & install OpenCL-ICD-Loader (MSBuild) if: matrix.GEN == 'Visual Studio 17 2022' shell: cmd run: | set C_FLAGS="/w" 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-ICD-Loader\install -D CMAKE_PREFIX_PATH=%GITHUB_WORKSPACE%\external\OpenCL-Headers\install -D BUILD_TESTING=OFF -S %GITHUB_WORKSPACE%\external\OpenCL-ICD-Loader -B %GITHUB_WORKSPACE%\external\OpenCL-ICD-Loader\build %CMAKE_EXE% --build %GITHUB_WORKSPACE%/external/OpenCL-ICD-Loader/build --target install --config Release -- /verbosity:minimal /maxCpuCount /noLogo - name: Build & install OpenCL-ICD-Loader (Ninja Multi-Config) if: matrix.GEN == 'Ninja Multi-Config' shell: cmd run: | set C_FLAGS="/w" 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-ICD-Loader\install -D CMAKE_PREFIX_PATH=%GITHUB_WORKSPACE%\external\OpenCL-Headers\install -D BUILD_TESTING=OFF -S %GITHUB_WORKSPACE%\external\OpenCL-ICD-Loader -B %GITHUB_WORKSPACE%\external\OpenCL-ICD-Loader\build %CMAKE_EXE% --build %GITHUB_WORKSPACE%/external/OpenCL-ICD-Loader/build --target install --config Release -- -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;%GITHUB_WORKSPACE%\external\OpenCL-ICD-Loader\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;%GITHUB_WORKSPACE%\external\OpenCL-ICD-Loader\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 continue-on-error: true working-directory: ${{runner.workspace}}/OpenCL-CLHPP/build shell: cmd run: | %CTEST_EXE% -C Release --output-on-failure --parallel %NUMBER_OF_PROCESSORS% %CTEST_EXE% -C Debug --output-on-failure --parallel %NUMBER_OF_PROCESSORS% - 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%/tests/pkgconfig/bare %CMAKE_EXE% --build %GITHUB_WORKSPACE%/tests/pkgconfig/bare --config Release %CMAKE_EXE% --build %GITHUB_WORKSPACE%/tests/pkgconfig/bare --config Debug cd %GITHUB_WORKSPACE%/tests/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-CLHPP/OpenCL-CLHPP/external/OpenCL-Headers/install/share/cmake/OpenCLHeaders/OpenCLHeadersTargets.cmake")\ninclude("/home/runner/work/OpenCL-CLHPP/OpenCL-CLHPP/external/OpenCL-ICD-Loader/install/share/cmake/OpenCLICDLoader/OpenCLICDLoaderTargets.cmake")\ninclude("${CMAKE_CURRENT_LIST_DIR}/../OpenCLHeadersCpp/OpenCLHeadersCppTargets.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%/tests/pkgconfig/bare %CMAKE_EXE% --build %GITHUB_WORKSPACE%/tests/pkgconfig/bare --config Release %CMAKE_EXE% --build %GITHUB_WORKSPACE%/tests/pkgconfig/bare --config Debug cd %GITHUB_WORKSPACE%/tests/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%/tests/pkgconfig/bare %CMAKE_EXE% --build %GITHUB_WORKSPACE%/tests/pkgconfig/bare --config Release %CMAKE_EXE% --build %GITHUB_WORKSPACE%/tests/pkgconfig/bare --config Debug cd %GITHUB_WORKSPACE%/tests/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-CLHPP/OpenCL-CLHPP/external/OpenCL-Headers/install/share/cmake/OpenCLHeaders/OpenCLHeadersTargets.cmake")\ninclude("/home/runner/work/OpenCL-CLHPP/OpenCL-CLHPP/external/OpenCL-ICD-Loader/install/share/cmake/OpenCLICDLoader/OpenCLICDLoaderTargets.cmake")\ninclude("${CMAKE_CURRENT_LIST_DIR}/../OpenCLHeadersCpp/OpenCLHeadersCppTargets.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%/tests/pkgconfig/bare %CMAKE_EXE% --build %GITHUB_WORKSPACE%/tests/pkgconfig/bare --config Release %CMAKE_EXE% --build %GITHUB_WORKSPACE%/tests/pkgconfig/bare --config Debug cd %GITHUB_WORKSPACE%/tests/pkgconfig/bare %CTEST_EXE% --output-on-failure -C Release %CTEST_EXE% --output-on-failure -C Debug