1name: Build 2 3on: [push, pull_request] 4 5jobs: 6 linux-gcc: 7 runs-on: ubuntu-latest 8 strategy: 9 matrix: 10 VER: [7, 8, 9] 11 EXT: [ON, OFF] 12 GEN: [Unix Makefiles, Ninja] 13 VAR: [Debug, Release] 14 STD: [99, 11] # 90 results in errors 15 BIN: [32, 64] 16 17 steps: 18 - uses: actions/checkout@v2 19 20 - name: Create Build Environment 21 run: cmake -E make_directory $GITHUB_WORKSPACE/build; 22 cmake -E make_directory $GITHUB_WORKSPACE/install; 23 cmake -E make_directory $GITHUB_WORKSPACE/downstream/pkgconfig/bare; 24 cmake -E make_directory $GITHUB_WORKSPACE/downstream/pkgconfig/sdk; 25 if [[ "${{matrix.GEN}}" == "Ninja" && ! `which ninja` ]]; then sudo apt install -y ninja-build; fi; 26 if [[ "${{matrix.BIN}}" == "32" ]]; then sudo apt install -y gcc-multilib gcc-8-multilib gcc-9-multilib; fi 27 # Install Ninja only if it's the selected generator and it's not available. 28 29 - name: Configure CMake 30 shell: bash 31 run: cmake 32 -G "${{matrix.GEN}}" 33 -D BUILD_TESTING=ON 34 -D CMAKE_BUILD_TYPE=${{matrix.VAR}} 35 -D CMAKE_C_FLAGS="-Wall -Wextra -Werror -pedantic -m${{matrix.BIN}}" 36 -D CMAKE_C_COMPILER=gcc-${{matrix.VER}} 37 -D CMAKE_C_STANDARD=${{matrix.STD}} 38 -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} 39 -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install 40 -S $GITHUB_WORKSPACE 41 -B $GITHUB_WORKSPACE/build 42 43 - name: Build 44 shell: bash 45 run: cmake 46 --build $GITHUB_WORKSPACE/build 47 -- 48 -j`nproc` 49 50 - name: Test 51 working-directory: ${{runner.workspace}}/OpenCL-Headers/build 52 shell: bash 53 run: ctest --parallel `nproc` 54 55 - name: Install 56 shell: bash 57 run: cmake 58 --build $GITHUB_WORKSPACE/build 59 --target install 60 -- 61 -j`nproc` 62 63 - name: Consume (Configure PkgConfig - bare) 64 shell: bash 65 run: cmake 66 -G "${{matrix.GEN}}" 67 -D BUILD_TESTING=ON 68 -D CMAKE_BUILD_TYPE=${{matrix.VAR}} 69 -D CMAKE_C_FLAGS="-Wall -Wextra -Werror -pedantic -m${{matrix.BIN}}" 70 -D CMAKE_C_COMPILER=gcc-${{matrix.VER}} 71 -D CMAKE_C_STANDARD=${{matrix.STD}} 72 -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} 73 -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/install 74 -S $GITHUB_WORKSPACE/tests/pkgconfig/bare 75 -B $GITHUB_WORKSPACE/downstream/pkgconfig/bare 76 77 - name: Consume (Build PkgConfig - bare) 78 shell: bash 79 run: cmake 80 --build $GITHUB_WORKSPACE/downstream/pkgconfig/bare 81 -- 82 -j`nproc` 83 84 - name: Consume (Emulate SDK presence) 85 shell: bash 86 run: cmake -E make_directory $GITHUB_WORKSPACE/install/share/cmake/OpenCL; 87 echo 'include("${CMAKE_CURRENT_LIST_DIR}/../OpenCLHeaders/OpenCLHeadersTargets.cmake")' > $GITHUB_WORKSPACE/install/share/cmake/OpenCL/OpenCLConfig.cmake 88 89 - name: Consume (Configure PkgConfig - SDK) 90 shell: bash 91 run: cmake 92 -G "${{matrix.GEN}}" 93 -D BUILD_TESTING=ON 94 -D CMAKE_BUILD_TYPE=${{matrix.VAR}} 95 -D CMAKE_C_FLAGS="-Wall -Wextra -Werror -pedantic -m${{matrix.BIN}}" 96 -D CMAKE_C_COMPILER=gcc-${{matrix.VER}} 97 -D CMAKE_C_STANDARD=${{matrix.STD}} 98 -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} 99 -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/install 100 -S $GITHUB_WORKSPACE/tests/pkgconfig/sdk 101 -B $GITHUB_WORKSPACE/downstream/pkgconfig/sdk 102 103 - name: Consume (Build PkgConfig - SDK) 104 shell: bash 105 run: cmake 106 --build $GITHUB_WORKSPACE/downstream/pkgconfig/sdk 107 -- 108 -j`nproc` 109 110 windows-msvc: 111 runs-on: windows-latest 112 strategy: 113 matrix: 114 VER: [v140, v141, v142] 115 EXT: [ON, OFF] 116 GEN: [Visual Studio 16 2019, Ninja Multi-Config] 117 BIN: [x64, x86] 118 #STD Proper 11, 17 incoming: https://devblogs.microsoft.com/cppblog/c11-and-c17-standard-support-arriving-in-msvc/ 119 120 steps: 121 - uses: actions/checkout@v2 122 123 - name: Create Build Environment 124 shell: cmd 125 run: | 126 cmake -E make_directory $GITHUB_WORKSPACE/build; 127 cmake -E make_directory $GITHUB_WORKSPACE/install; 128 129 - name: Configure (MSBuild) 130 if: matrix.GEN == 'Visual Studio 16 2019' 131 shell: cmd 132 run: | 133 if /I "${{matrix.EXT}}"=="ON" (set C_FLAGS="/W4 /WX") else (set C_FLAGS="/W4 /WX /Za /wd4001") 134 if /I "${{matrix.BIN}}"=="x86" (set BIN=Win32) else (set BIN=x64) 135 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}} -D CMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%/install -S %GITHUB_WORKSPACE% -B %GITHUB_WORKSPACE%/build 136 137 - name: Configure (Ninja) 138 if: matrix.GEN == 'Ninja Multi-Config' 139 shell: cmd 140 run: | 141 if /I "${{matrix.VER}}"=="v140" (set VER=14.0) 142 if /I "${{matrix.VER}}"=="v141" (set VER=14.1) 143 if /I "${{matrix.VER}}"=="v142" (set VER=14.2) 144 if /I "${{matrix.EXT}}"=="ON" (set C_FLAGS="/W4 /WX") else (set C_FLAGS="/W4 /WX /Za /wd4001") 145 call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{matrix.BIN}} /vcvars_ver=%VER% 146 cmake -G "${{matrix.GEN}}" -D BUILD_TESTING=ON -D CMAKE_C_FLAGS=%C_FLAGS% -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} -D CMAKE_EXE_LINKER_FLAGS=/INCREMENTAL -D CMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%/install -S %GITHUB_WORKSPACE% -B %GITHUB_WORKSPACE%/build 147 148 - name: Build (MSBuild) 149 if: matrix.GEN == 'Visual Studio 16 2019' 150 shell: cmd 151 run: | 152 cmake --build %GITHUB_WORKSPACE%\build --config Release -- /verbosity:minimal /maxCpuCount /noLogo 153 cmake --build %GITHUB_WORKSPACE%\build --config Debug -- /verbosity:minimal /maxCpuCount /noLogo 154 155 - name: Build (Ninja) 156 if: matrix.GEN == 'Ninja Multi-Config' 157 shell: cmd 158 run: | 159 if /I "${{matrix.VER}}"=="v140" set VER=14.0 160 if /I "${{matrix.VER}}"=="v141" set VER=14.1 161 if /I "${{matrix.VER}}"=="v142" set VER=14.2 162 call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{matrix.BIN}} /vcvars_ver=%VER% 163 cmake --build %GITHUB_WORKSPACE%\build --config Release 164 cmake --build %GITHUB_WORKSPACE%\build --config Debug 165 166 - name: Test 167 working-directory: ${{runner.workspace}}/OpenCL-Headers/build 168 shell: cmd 169 run: | 170 ctest -C Release --parallel %NUMBER_OF_PROCESSORS% 171 172 - name: Install 173 shell: cmd 174 run: | 175 cmake --build %GITHUB_WORKSPACE%/build --config Release --target install 176 177 - name: Consume (Configure PkgConfig - bare MSBuild) 178 if: matrix.GEN == 'Visual Studio 16 2019' 179 shell: cmd 180 run: | 181 if /I "${{matrix.EXT}}"=="ON" (set C_FLAGS="/W4 /WX") else (set C_FLAGS="/W4 /WX /Za /wd4001") 182 if /I "${{matrix.BIN}}"=="x86" (set BIN=Win32) else (set BIN=x64) 183 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}} -D CMAKE_PREFIX_PATH=%GITHUB_WORKSPACE%/install -S %GITHUB_WORKSPACE%\tests\pkgconfig\bare -B %GITHUB_WORKSPACE%\downstream\pkgconfig\bare 184 185 - name: Consume (Configure PkgConfig - bare Ninja) 186 if: matrix.GEN == 'Ninja Multi-Config' 187 shell: cmd 188 run: | 189 if /I "${{matrix.VER}}"=="v140" (set VER=14.0) 190 if /I "${{matrix.VER}}"=="v141" (set VER=14.1) 191 if /I "${{matrix.VER}}"=="v142" (set VER=14.2) 192 if /I "${{matrix.EXT}}"=="ON" (set C_FLAGS="/W4 /WX") else (set C_FLAGS="/W4 /WX /Za /wd4001") 193 call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{matrix.BIN}} /vcvars_ver=%VER% 194 cmake -G "${{matrix.GEN}}" -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=%GITHUB_WORKSPACE%/install -S %GITHUB_WORKSPACE%\tests\pkgconfig\bare -B %GITHUB_WORKSPACE%\downstream\pkgconfig\bare 195 196 - name: Consume (Build PkgConfig - bare MSBuild) 197 if: matrix.GEN == 'Visual Studio 16 2019' 198 shell: cmd 199 run: | 200 cmake --build %GITHUB_WORKSPACE%\downstream\pkgconfig\bare --config Release -- /verbosity:minimal /maxCpuCount /noLogo 201 cmake --build %GITHUB_WORKSPACE%\downstream\pkgconfig\bare --config Debug -- /verbosity:minimal /maxCpuCount /noLogo 202 203 - name: Consume (Build PkgConfig - bare Ninja) 204 if: matrix.GEN == 'Ninja Multi-Config' 205 shell: cmd 206 run: | 207 if /I "${{matrix.VER}}"=="v140" set VER=14.0 208 if /I "${{matrix.VER}}"=="v141" set VER=14.1 209 if /I "${{matrix.VER}}"=="v142" set VER=14.2 210 call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{matrix.BIN}} /vcvars_ver=%VER% 211 cmake --build %GITHUB_WORKSPACE%\downstream\pkgconfig\bare --config Release 212 cmake --build %GITHUB_WORKSPACE%\downstream\pkgconfig\bare --config Debug 213 214 - name: Consume (Emulate SDK presence) 215 shell: bash 216 run: cmake -E make_directory $GITHUB_WORKSPACE/install/share/cmake/OpenCL; 217 echo 'include("${CMAKE_CURRENT_LIST_DIR}/../OpenCLHeaders/OpenCLHeadersTargets.cmake")' > $GITHUB_WORKSPACE/install/share/cmake/OpenCL/OpenCLConfig.cmake 218 219 - name: Consume (Configure PkgConfig - SDK MSBuild) 220 if: matrix.GEN == 'Visual Studio 16 2019' 221 shell: cmd 222 run: | 223 if /I "${{matrix.EXT}}"=="ON" (set C_FLAGS="/W4 /WX") else (set C_FLAGS="/W4 /WX /Za /wd4001") 224 if /I "${{matrix.BIN}}"=="x86" (set BIN=Win32) else (set BIN=x64) 225 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}} -D CMAKE_PREFIX_PATH=%GITHUB_WORKSPACE%/install -S %GITHUB_WORKSPACE%\tests\pkgconfig\sdk -B %GITHUB_WORKSPACE%\downstream\pkgconfig\sdk 226 227 - name: Consume (Configure PkgConfig - SDK Ninja) 228 if: matrix.GEN == 'Ninja Multi-Config' 229 shell: cmd 230 run: | 231 if /I "${{matrix.VER}}"=="v140" (set VER=14.0) 232 if /I "${{matrix.VER}}"=="v141" (set VER=14.1) 233 if /I "${{matrix.VER}}"=="v142" (set VER=14.2) 234 if /I "${{matrix.EXT}}"=="ON" (set C_FLAGS="/W4 /WX") else (set C_FLAGS="/W4 /WX /Za /wd4001") 235 call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{matrix.BIN}} /vcvars_ver=%VER% 236 cmake -G "${{matrix.GEN}}" -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=%GITHUB_WORKSPACE%/install -S %GITHUB_WORKSPACE%\tests\pkgconfig\sdk -B %GITHUB_WORKSPACE%\downstream\pkgconfig\sdk 237 238 - name: Consume (Build PkgConfig - SDK MSBuild) 239 if: matrix.GEN == 'Visual Studio 16 2019' 240 shell: cmd 241 run: | 242 cmake --build %GITHUB_WORKSPACE%\downstream\pkgconfig\sdk --config Release -- /verbosity:minimal /maxCpuCount /noLogo 243 cmake --build %GITHUB_WORKSPACE%\downstream\pkgconfig\sdk --config Debug -- /verbosity:minimal /maxCpuCount /noLogo 244 245 - name: Consume (Build PkgConfig - SDK Ninja) 246 if: matrix.GEN == 'Ninja Multi-Config' 247 shell: cmd 248 run: | 249 if /I "${{matrix.VER}}"=="v140" set VER=14.0 250 if /I "${{matrix.VER}}"=="v141" set VER=14.1 251 if /I "${{matrix.VER}}"=="v142" set VER=14.2 252 call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{matrix.BIN}} /vcvars_ver=%VER% 253 cmake --build %GITHUB_WORKSPACE%\downstream\pkgconfig\sdk --config Release 254 cmake --build %GITHUB_WORKSPACE%\downstream\pkgconfig\sdk --config Debug 255 256 macos-gcc: 257 runs-on: macos-latest 258 strategy: 259 matrix: 260 VER: [8, 9] 261 EXT: [ON, OFF] 262 GEN: [Xcode, Ninja Multi-Config] 263 STD: [99, 11] # 90 results in errors 264 265 steps: 266 - uses: actions/checkout@v2 267 268 - name: Create Build Environment 269 run: | 270 cmake -E make_directory $GITHUB_WORKSPACE/build; 271 cmake -E make_directory $GITHUB_WORKSPACE/install; 272 if [[ "${{matrix.GEN}}" == "Ninja Multi-Config" && ! `which ninja` ]]; then brew install ninja; fi; 273 # Install Ninja only if it's the selected generator and it's not available. 274 275 - name: Configure CMake 276 shell: bash 277 run: cmake 278 -G "${{matrix.GEN}}" 279 -D BUILD_TESTING=ON 280 -D CMAKE_C_FLAGS="-Wall -Wextra -Werror -pedantic -Wno-format" 281 -D CMAKE_C_COMPILER=/usr/local/bin/gcc-${{matrix.VER}} 282 -D CMAKE_C_STANDARD=${{matrix.STD}} 283 -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} 284 -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install 285 -S $GITHUB_WORKSPACE 286 -B $GITHUB_WORKSPACE/build 287 288 - name: Build (Xcode) 289 if: matrix.GEN == 'Xcode' 290 shell: bash 291 run: | 292 cmake --build $GITHUB_WORKSPACE/build --config Release 293 cmake --build $GITHUB_WORKSPACE/build --config Debug 294 295 - name: Build (Ninja) 296 if: matrix.GEN == 'Ninja Multi-Config' 297 shell: bash 298 run: | 299 cmake --build $GITHUB_WORKSPACE/build --config Release 300 cmake --build $GITHUB_WORKSPACE/build --config Debug 301 302 - name: Test 303 working-directory: ${{runner.workspace}}/OpenCL-Headers/build 304 shell: bash 305 run: ctest -C Release --parallel `sysctl -n hw.logicalcpu` 306 307 - name: Install (Xcode) 308 if: matrix.GEN == 'Xcode' 309 shell: bash 310 run: | 311 cmake --build $GITHUB_WORKSPACE/build --config Release --target install 312 313 - name: Install (Ninja) 314 if: matrix.GEN == 'Ninja Multi-Config' 315 shell: bash 316 run: | 317 cmake --build $GITHUB_WORKSPACE/build --config Release --target install 318 319 - name: Consume (Configure PkgConfig - bare) 320 shell: bash 321 run: cmake 322 -G "${{matrix.GEN}}" 323 -D BUILD_TESTING=ON 324 -D CMAKE_C_FLAGS="-Wall -Wextra -Werror -pedantic -Wno-format" 325 -D CMAKE_C_COMPILER=/usr/local/bin/gcc-${{matrix.VER}} 326 -D CMAKE_C_STANDARD=${{matrix.STD}} 327 -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} 328 -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/install 329 -S $GITHUB_WORKSPACE/tests/pkgconfig/bare 330 -B $GITHUB_WORKSPACE/downstream/pkgconfig/bare 331 332 - name: Consume (Build PkgConfig - bare) 333 shell: bash 334 run: | 335 cmake --build $GITHUB_WORKSPACE/downstream/pkgconfig/bare --config Release 336 cmake --build $GITHUB_WORKSPACE/downstream/pkgconfig/bare --config Debug 337 338 - name: Consume (Emulate SDK presence) 339 shell: bash 340 run: cmake -E make_directory $GITHUB_WORKSPACE/install/share/cmake/OpenCL; 341 echo 'include("${CMAKE_CURRENT_LIST_DIR}/../OpenCLHeaders/OpenCLHeadersTargets.cmake")' > $GITHUB_WORKSPACE/install/share/cmake/OpenCL/OpenCLConfig.cmake 342 343 - name: Consume (Configure PkgConfig - SDK) 344 shell: bash 345 run: cmake 346 -G "${{matrix.GEN}}" 347 -D BUILD_TESTING=ON 348 -D CMAKE_C_FLAGS="-Wall -Wextra -Werror -pedantic -Wno-format" 349 -D CMAKE_C_COMPILER=/usr/local/bin/gcc-${{matrix.VER}} 350 -D CMAKE_C_STANDARD=${{matrix.STD}} 351 -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} 352 -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/install 353 -S $GITHUB_WORKSPACE/tests/pkgconfig/sdk 354 -B $GITHUB_WORKSPACE/downstream/pkgconfig/sdk 355 356 - name: Consume (Build PkgConfig - SDK) 357 shell: bash 358 run: | 359 cmake --build $GITHUB_WORKSPACE/downstream/pkgconfig/sdk --config Release 360 cmake --build $GITHUB_WORKSPACE/downstream/pkgconfig/sdk --config Debug