• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1name: Windows
2
3on:
4  push:
5    paths-ignore:
6      - '**/*.md'
7  pull_request:
8    paths-ignore:
9      - '**/*.md'
10
11jobs:
12  compatibility:
13    runs-on: windows-latest
14    strategy:
15      matrix:
16        VER: [v142, v143]
17        EXT: [ON, OFF]
18        GEN: [Visual Studio 17 2022]
19        BIN: [x64, x86]
20        STD: [99, 11, 17]
21        include:
22          - VER: v141
23            EXT: OFF
24            GEN: Ninja Multi-Config
25            BIN: x64
26            STD: 89 # /Za
27    env:
28      NINJA_URL: https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-win.zip
29      NINJA_ROOT: C:\Tools\Ninja
30      VS_ROOT: 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise'
31      UseMultiToolTask: true # Better parallel MSBuild execution
32
33    steps:
34    - uses: actions/checkout@v3
35
36    - name: Cache Ninja install
37      if: matrix.GEN == 'Ninja Multi-Config'
38      id: ninja-install
39      uses: actions/cache@v2
40      with:
41        path: |
42          C:\Tools\Ninja
43        key: ${{runner.os}}-ninja-${{env.NINJA_URL}}
44
45    - name: Install Ninja
46      if: matrix.GEN == 'Ninja Multi-Config' && steps.ninja-install.outputs.cache-hit != 'true'
47      shell: pwsh
48      run: |
49        Invoke-WebRequest ${env:NINJA_URL} -OutFile ~\Downloads\ninja-win.zip
50        Expand-Archive ~\Downloads\ninja-win.zip -DestinationPath ${env:NINJA_ROOT}\
51        Remove-Item ~\Downloads\*
52
53    - name: Configure (MSBuild)
54      if: matrix.GEN == 'Visual Studio 17 2022'
55      shell: pwsh
56      run: |
57        $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'}
58        $C_FLAGS = '/W4 /WX'
59        & cmake `
60          -G '${{matrix.GEN}}' `
61          -A $BIN `
62          -T ${{matrix.VER}} `
63          -D BUILD_TESTING=ON `
64          -D CMAKE_C_FLAGS="${C_FLAGS}" `
65          -D CMAKE_C_EXTENSIONS='${{matrix.EXT}}' `
66          -S "${env:GITHUB_WORKSPACE}" `
67          -B "${env:GITHUB_WORKSPACE}\build"
68
69    - name: Configure (Ninja Multi-Config)
70      if: matrix.GEN == 'Ninja Multi-Config'
71      shell: pwsh
72      run: |
73        $VER = switch ('${{matrix.VER}}') { `
74          'v141' {'14.1'} `
75          'v142' {'14.2'} `
76          'v143' {'14.3'} }
77        Import-Module "${env:VS_ROOT}\Common7\Tools\Microsoft.VisualStudio.DevShell.dll"
78        Enter-VsDevShell -VsInstallPath ${env:VS_ROOT} -SkipAutomaticLocation -DevCmdArguments "-host_arch=x64 -arch=${{matrix.BIN}} -vcvars_ver=${VER}"
79        $C_FLAGS = '/W4 /WX'
80        & cmake `
81          -G '${{matrix.GEN}}' `
82          -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" `
83          -D BUILD_TESTING=ON `
84          -D CMAKE_C_FLAGS="${C_FLAGS}" `
85          -D CMAKE_C_EXTENSIONS='${{matrix.EXT}}' `
86          -D CMAKE_EXE_LINKER_FLAGS='/INCREMENTAL' `
87          -S "${env:GITHUB_WORKSPACE}" `
88          -B "${env:GITHUB_WORKSPACE}\build"
89
90    - name: Build (MSBuild)
91      if: matrix.GEN == 'Visual Studio 17 2022'
92      shell: pwsh
93      run: |
94        foreach ($Config in 'Release','Debug') { `
95          & cmake `
96            --build "${env:GITHUB_WORKSPACE}\build" `
97            --config ${Config} `
98            -- `
99            /verbosity:minimal `
100            /maxCpuCount `
101            /noLogo
102        }
103
104    - name: Build (Ninja)
105      if: matrix.GEN == 'Ninja Multi-Config'
106      shell: pwsh
107      run: |
108        $VER = switch ('${{matrix.VER}}') { `
109          'v141' {'14.1'} `
110          'v142' {'14.2'} `
111          'v143' {'14.3'} }
112        Import-Module "${env:VS_ROOT}\Common7\Tools\Microsoft.VisualStudio.DevShell.dll"
113        Enter-VsDevShell -VsInstallPath ${env:VS_ROOT} -SkipAutomaticLocation -DevCmdArguments "-host_arch=x64 -arch=${{matrix.BIN}} -vcvars_ver=${VER}"
114        foreach ($Config in 'Release','Debug') { `
115          & cmake `
116            --build "${env:GITHUB_WORKSPACE}\build" `
117            --config ${Config} `
118            -- `
119            -j ${env:NUMBER_OF_PROCESSORS}
120        }
121
122    - name: Test
123      shell: pwsh
124      run: |
125        foreach ($Config in 'Release','Debug') { `
126          & ctest `
127            --test-dir "${env:GITHUB_WORKSPACE}\build" `
128            --build-config ${Config} `
129            --output-on-failure `
130            --parallel ${env:NUMBER_OF_PROCESSORS}
131        }
132
133    - name: Install
134      shell: pwsh
135      run: |
136        & cmake `
137          --install "${env:GITHUB_WORKSPACE}\build" `
138          --prefix "${env:GITHUB_WORKSPACE}\install" `
139          --config Release
140
141    - name: Consume (PkgConfig - bare MSBuild)
142      if: matrix.GEN == 'Visual Studio 17 2022'
143      shell: pwsh
144      run: |
145        $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'}
146        $C_FLAGS = '/W4 /WX'
147        & cmake `
148          -G '${{matrix.GEN}}' `
149          -A $BIN `
150          -T ${{matrix.VER}} `
151          -D CMAKE_C_FLAGS="${C_FLAGS}" `
152          -D CMAKE_C_EXTENSIONS='${{matrix.EXT}}' `
153          -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\install" `
154          -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\bare" `
155          -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare"
156        foreach ($Config in 'Release','Debug') { `
157          & cmake `
158            --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare" `
159            --config ${Config} `
160            -- `
161            /verbosity:minimal `
162            /maxCpuCount `
163            /noLogo `
164        }
165
166    - name: Consume (PkgConfig - bare Ninja)
167      if: matrix.GEN == 'Ninja Multi-Config'
168      shell: pwsh
169      run: |
170        $VER = switch ('${{matrix.VER}}') { `
171          'v141' {'14.1'} `
172          'v142' {'14.2'} `
173          'v143' {'14.3'} }
174        Import-Module "${env:VS_ROOT}\Common7\Tools\Microsoft.VisualStudio.DevShell.dll"
175        Enter-VsDevShell -VsInstallPath ${env:VS_ROOT} -SkipAutomaticLocation -DevCmdArguments "-host_arch=x64 -arch=${{matrix.BIN}} -vcvars_ver=${VER}"
176        $C_FLAGS = '/W4 /WX'
177        & cmake `
178          -G '${{matrix.GEN}}' `
179          -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" `
180          -D BUILD_TESTING=ON `
181          -D CMAKE_C_FLAGS="${C_FLAGS}" `
182          -D CMAKE_C_EXTENSIONS='${{matrix.EXT}}' `
183          -D CMAKE_EXE_LINKER_FLAGS='/INCREMENTAL' `
184          -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\install" `
185          -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\bare" `
186          -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare"
187        foreach ($Config in 'Release','Debug') { `
188          & cmake `
189            --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare" `
190            --config ${Config} `
191            -- `
192            -j ${env:NUMBER_OF_PROCESSORS} `
193        }
194
195    - name: Consume (Emulate SDK presence)
196      shell: pwsh
197      run: |
198        New-Item -Type Directory -Path ${env:GITHUB_WORKSPACE}\install\share\cmake\OpenCL
199        New-Item -Type File -Path ${env:GITHUB_WORKSPACE}\install\share\cmake\OpenCL\OpenCLConfig.cmake -Value 'include("${CMAKE_CURRENT_LIST_DIR}/../OpenCLHeaders/OpenCLHeadersTargets.cmake")'
200
201    - name: Consume (PkgConfig - SDK MSBuild)
202      if: matrix.GEN == 'Visual Studio 17 2022'
203      shell: pwsh
204      run: |
205        $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'}
206        $C_FLAGS = '/W4 /WX'
207        & cmake `
208          -G '${{matrix.GEN}}' `
209          -A $BIN `
210          -T ${{matrix.VER}} `
211          -D CMAKE_C_FLAGS="${C_FLAGS}" `
212          -D CMAKE_C_EXTENSIONS='${{matrix.EXT}}' `
213          -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\install" `
214          -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\sdk" `
215          -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk"
216        foreach ($Config in 'Release','Debug') { `
217          & cmake `
218            --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk" `
219            --config ${Config} `
220            -- `
221            /verbosity:minimal `
222            /maxCpuCount `
223            /noLogo `
224        }
225
226    - name: Consume (PkgConfig - SDK Ninja)
227      if: matrix.GEN == 'Ninja Multi-Config'
228      shell: pwsh
229      run: |
230        $VER = switch ('${{matrix.VER}}') { `
231          'v141' {'14.1'} `
232          'v142' {'14.2'} `
233          'v143' {'14.3'} }
234        Import-Module "${env:VS_ROOT}\Common7\Tools\Microsoft.VisualStudio.DevShell.dll"
235        Enter-VsDevShell -VsInstallPath ${env:VS_ROOT} -SkipAutomaticLocation -DevCmdArguments "-host_arch=x64 -arch=${{matrix.BIN}} -vcvars_ver=${VER}"
236        $C_FLAGS = '/W4 /WX'
237        & cmake `
238          -G '${{matrix.GEN}}' `
239          -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" `
240          -D BUILD_TESTING=ON `
241          -D CMAKE_C_FLAGS="${C_FLAGS}" `
242          -D CMAKE_C_EXTENSIONS='${{matrix.EXT}}' `
243          -D CMAKE_EXE_LINKER_FLAGS='/INCREMENTAL' `
244          -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\install" `
245          -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\sdk" `
246          -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk"
247        foreach ($Config in 'Release','Debug') { `
248          & cmake `
249            --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk" `
250            --config ${Config} `
251            -- `
252            -j ${env:NUMBER_OF_PROCESSORS} `
253        }