| name: Windows |
| |
| on: [push, pull_request] |
| |
| jobs: |
| compatibility: |
| runs-on: windows-latest |
| strategy: |
| matrix: |
| VER: [v142, v143] |
| EXT: [ON, OFF] |
| GEN: [Visual Studio 17 2022] |
| BIN: [x64, x86] |
| STD: [99, 11, 17] |
| include: |
| - VER: v141 |
| EXT: OFF |
| GEN: Ninja Multi-Config |
| BIN: x64 |
| STD: 89 # /Za |
| env: |
| NINJA_URL: https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-win.zip |
| NINJA_ROOT: C:\Tools\Ninja |
| VS_ROOT: 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise' |
| UseMultiToolTask: true # Better parallel MSBuild execution |
| |
| steps: |
| - uses: actions/checkout@v2 |
| |
| - name: Cache Ninja install |
| if: matrix.GEN == 'Ninja Multi-Config' |
| id: ninja-install |
| uses: actions/cache@v2 |
| with: |
| path: | |
| C:\Tools\Ninja |
| key: ${{runner.os}}-ninja-${{env.NINJA_URL}} |
| |
| - name: Install Ninja |
| if: matrix.GEN == 'Ninja Multi-Config' && steps.ninja-install.outputs.cache-hit != 'true' |
| shell: pwsh |
| run: | |
| Invoke-WebRequest ${env:NINJA_URL} -OutFile ~\Downloads\ninja-win.zip |
| Expand-Archive ~\Downloads\ninja-win.zip -DestinationPath ${env:NINJA_ROOT}\ |
| Remove-Item ~\Downloads\* |
| |
| - name: Configure (MSBuild) |
| if: matrix.GEN == 'Visual Studio 17 2022' |
| shell: pwsh |
| run: | |
| $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'} |
| $C_FLAGS = '/W4 /WX' |
| & cmake ` |
| -G '${{matrix.GEN}}' ` |
| -A $BIN ` |
| -T ${{matrix.VER}} ` |
| -D BUILD_TESTING=ON ` |
| -D CMAKE_C_FLAGS="${C_FLAGS}" ` |
| -D CMAKE_C_EXTENSIONS='${{matrix.EXT}}' ` |
| -S "${env:GITHUB_WORKSPACE}" ` |
| -B "${env:GITHUB_WORKSPACE}\build" |
| |
| - name: Configure (Ninja Multi-Config) |
| if: matrix.GEN == 'Ninja Multi-Config' |
| shell: pwsh |
| run: | |
| $VER = switch ('${{matrix.VER}}') { ` |
| 'v141' {'14.1'} ` |
| 'v142' {'14.2'} ` |
| 'v143' {'14.3'} } |
| Import-Module "${env:VS_ROOT}\Common7\Tools\Microsoft.VisualStudio.DevShell.dll" |
| Enter-VsDevShell -VsInstallPath ${env:VS_ROOT} -SkipAutomaticLocation -DevCmdArguments "-host_arch=x64 -arch=${{matrix.BIN}} -vcvars_ver=${VER}" |
| $C_FLAGS = '/W4 /WX' |
| & cmake ` |
| -G '${{matrix.GEN}}' ` |
| -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` |
| -D BUILD_TESTING=ON ` |
| -D CMAKE_C_FLAGS="${C_FLAGS}" ` |
| -D CMAKE_C_EXTENSIONS='${{matrix.EXT}}' ` |
| -D CMAKE_EXE_LINKER_FLAGS='/INCREMENTAL' ` |
| -S "${env:GITHUB_WORKSPACE}" ` |
| -B "${env:GITHUB_WORKSPACE}\build" |
| |
| - name: Build (MSBuild) |
| if: matrix.GEN == 'Visual Studio 17 2022' |
| shell: pwsh |
| run: | |
| foreach ($Config in 'Release','Debug') { ` |
| & cmake ` |
| --build "${env:GITHUB_WORKSPACE}\build" ` |
| --config ${Config} ` |
| -- ` |
| /verbosity:minimal ` |
| /maxCpuCount ` |
| /noLogo |
| } |
| |
| - name: Build (Ninja) |
| if: matrix.GEN == 'Ninja Multi-Config' |
| shell: pwsh |
| run: | |
| $VER = switch ('${{matrix.VER}}') { ` |
| 'v141' {'14.1'} ` |
| 'v142' {'14.2'} ` |
| 'v143' {'14.3'} } |
| Import-Module "${env:VS_ROOT}\Common7\Tools\Microsoft.VisualStudio.DevShell.dll" |
| Enter-VsDevShell -VsInstallPath ${env:VS_ROOT} -SkipAutomaticLocation -DevCmdArguments "-host_arch=x64 -arch=${{matrix.BIN}} -vcvars_ver=${VER}" |
| foreach ($Config in 'Release','Debug') { ` |
| & cmake ` |
| --build "${env:GITHUB_WORKSPACE}\build" ` |
| --config ${Config} ` |
| -- ` |
| -j ${env:NUMBER_OF_PROCESSORS} |
| } |
| |
| - name: Test |
| shell: pwsh |
| run: | |
| foreach ($Config in 'Release','Debug') { ` |
| & ctest ` |
| --test-dir "${env:GITHUB_WORKSPACE}\build" ` |
| --build-config ${Config} ` |
| --output-on-failure ` |
| --parallel ${env:NUMBER_OF_PROCESSORS} |
| } |
| |
| - name: Install |
| shell: pwsh |
| run: | |
| & cmake ` |
| --install "${env:GITHUB_WORKSPACE}\build" ` |
| --prefix "${env:GITHUB_WORKSPACE}\install" ` |
| --config Release |
| |
| - name: Consume (PkgConfig - bare MSBuild) |
| if: matrix.GEN == 'Visual Studio 17 2022' |
| shell: pwsh |
| run: | |
| $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'} |
| $C_FLAGS = '/W4 /WX' |
| & cmake ` |
| -G '${{matrix.GEN}}' ` |
| -A $BIN ` |
| -T ${{matrix.VER}} ` |
| -D CMAKE_C_FLAGS="${C_FLAGS}" ` |
| -D CMAKE_C_EXTENSIONS='${{matrix.EXT}}' ` |
| -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\install" ` |
| -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\bare" ` |
| -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare" |
| foreach ($Config in 'Release','Debug') { ` |
| & cmake ` |
| --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare" ` |
| --config ${Config} ` |
| -- ` |
| /verbosity:minimal ` |
| /maxCpuCount ` |
| /noLogo ` |
| } |
| |
| - name: Consume (PkgConfig - bare Ninja) |
| if: matrix.GEN == 'Ninja Multi-Config' |
| shell: pwsh |
| run: | |
| $VER = switch ('${{matrix.VER}}') { ` |
| 'v141' {'14.1'} ` |
| 'v142' {'14.2'} ` |
| 'v143' {'14.3'} } |
| Import-Module "${env:VS_ROOT}\Common7\Tools\Microsoft.VisualStudio.DevShell.dll" |
| Enter-VsDevShell -VsInstallPath ${env:VS_ROOT} -SkipAutomaticLocation -DevCmdArguments "-host_arch=x64 -arch=${{matrix.BIN}} -vcvars_ver=${VER}" |
| $C_FLAGS = '/W4 /WX' |
| & cmake ` |
| -G '${{matrix.GEN}}' ` |
| -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` |
| -D BUILD_TESTING=ON ` |
| -D CMAKE_C_FLAGS="${C_FLAGS}" ` |
| -D CMAKE_C_EXTENSIONS='${{matrix.EXT}}' ` |
| -D CMAKE_EXE_LINKER_FLAGS='/INCREMENTAL' ` |
| -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\install" ` |
| -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\bare" ` |
| -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare" |
| foreach ($Config in 'Release','Debug') { ` |
| & cmake ` |
| --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare" ` |
| --config ${Config} ` |
| -- ` |
| -j ${env:NUMBER_OF_PROCESSORS} ` |
| } |
| |
| - name: Consume (Emulate SDK presence) |
| shell: pwsh |
| run: | |
| New-Item -Type Directory -Path ${env:GITHUB_WORKSPACE}\install\share\cmake\OpenCL |
| New-Item -Type File -Path ${env:GITHUB_WORKSPACE}\install\share\cmake\OpenCL\OpenCLConfig.cmake -Value 'include("${CMAKE_CURRENT_LIST_DIR}/../OpenCLHeaders/OpenCLHeadersTargets.cmake")' |
| |
| - name: Consume (PkgConfig - SDK MSBuild) |
| if: matrix.GEN == 'Visual Studio 17 2022' |
| shell: pwsh |
| run: | |
| $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'} |
| $C_FLAGS = '/W4 /WX' |
| & cmake ` |
| -G '${{matrix.GEN}}' ` |
| -A $BIN ` |
| -T ${{matrix.VER}} ` |
| -D CMAKE_C_FLAGS="${C_FLAGS}" ` |
| -D CMAKE_C_EXTENSIONS='${{matrix.EXT}}' ` |
| -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\install" ` |
| -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\sdk" ` |
| -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk" |
| foreach ($Config in 'Release','Debug') { ` |
| & cmake ` |
| --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk" ` |
| --config ${Config} ` |
| -- ` |
| /verbosity:minimal ` |
| /maxCpuCount ` |
| /noLogo ` |
| } |
| |
| - name: Consume (PkgConfig - SDK Ninja) |
| if: matrix.GEN == 'Ninja Multi-Config' |
| shell: pwsh |
| run: | |
| $VER = switch ('${{matrix.VER}}') { ` |
| 'v141' {'14.1'} ` |
| 'v142' {'14.2'} ` |
| 'v143' {'14.3'} } |
| Import-Module "${env:VS_ROOT}\Common7\Tools\Microsoft.VisualStudio.DevShell.dll" |
| Enter-VsDevShell -VsInstallPath ${env:VS_ROOT} -SkipAutomaticLocation -DevCmdArguments "-host_arch=x64 -arch=${{matrix.BIN}} -vcvars_ver=${VER}" |
| $C_FLAGS = '/W4 /WX' |
| & cmake ` |
| -G '${{matrix.GEN}}' ` |
| -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` |
| -D BUILD_TESTING=ON ` |
| -D CMAKE_C_FLAGS="${C_FLAGS}" ` |
| -D CMAKE_C_EXTENSIONS='${{matrix.EXT}}' ` |
| -D CMAKE_EXE_LINKER_FLAGS='/INCREMENTAL' ` |
| -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\install" ` |
| -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\sdk" ` |
| -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk" |
| foreach ($Config in 'Release','Debug') { ` |
| & cmake ` |
| --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk" ` |
| --config ${Config} ` |
| -- ` |
| -j ${env:NUMBER_OF_PROCESSORS} ` |
| } |