blob: 7fd79c99c050fbcc1214623c5b4702c5149ce7c4 [file] [log] [blame]
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} `
}