| name: Presubmit |
| |
| on: |
| push: |
| paths-ignore: |
| - '**/*.md' |
| pull_request: |
| paths-ignore: |
| - '**/*.md' |
| |
| jobs: |
| format: |
| name: Code formatting |
| runs-on: ubuntu-latest |
| defaults: |
| run: |
| shell: bash |
| steps: |
| - uses: actions/checkout@v4 |
| with: |
| # repository: ${{github.repository}} (default) |
| fetch-depth: 0 |
| - name: Install clang-format |
| run: sudo apt-get install clang-format |
| - name: Check format |
| run: $GITHUB_WORKSPACE/scripts/check-format.sh |
| origin/`if [[ "${{github.event_name}}" == "push" ]]; then echo "main"; else echo "${{github.base_ref}}"; fi` |
| --binary clang-format |
| |
| linux: |
| runs-on: ubuntu-latest |
| needs: format |
| defaults: |
| run: |
| shell: bash |
| strategy: |
| matrix: |
| CMAKE: [3.26.4] |
| COMPILER: |
| - C_NAME: gcc |
| CXX_NAME: g++ |
| VER: 11 |
| - C_NAME: gcc |
| CXX_NAME: g++ |
| VER: 13 |
| - C_NAME: clang |
| CXX_NAME: clang++ |
| VER: 14 |
| - C_NAME: clang |
| CXX_NAME: clang++ |
| VER: 16 |
| BIN: [64] |
| STD: [99, 11, 17] |
| CONF: |
| - GEN: Unix Makefiles |
| CONFIG: Debug |
| - GEN: Unix Makefiles |
| CONFIG: Release |
| - GEN: Ninja Multi-Config |
| CONFIG: Release |
| IMAGE: |
| - streamhpc/opencl-sdk-intelcpu:ubuntu-22.04-20230717 |
| include: |
| - CMAKE: system |
| COMPILER: |
| C_NAME: gcc |
| CXX_NAME: g++ |
| VER: 9 |
| BIN: 64 |
| STD: 99 |
| CONF: |
| GEN: Unix Makefiles |
| CONFIG: Debug |
| IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-20.04-20230717 |
| - CMAKE: system |
| COMPILER: |
| C_NAME: gcc |
| CXX_NAME: g++ |
| VER: 9 |
| BIN: 64 |
| STD: 99 |
| CONF: |
| GEN: Unix Makefiles |
| CONFIG: Release |
| IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-20.04-20230717 |
| - CMAKE: system |
| COMPILER: |
| C_NAME: gcc |
| CXX_NAME: g++ |
| VER: 9 |
| BIN: 32 |
| STD: 99 |
| CONF: |
| GEN: Unix Makefiles |
| CONFIG: Debug |
| IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-20.04-20230717 |
| - CMAKE: system |
| COMPILER: |
| C_NAME: gcc |
| CXX_NAME: g++ |
| VER: 9 |
| BIN: 32 |
| STD: 99 |
| CONF: |
| GEN: Unix Makefiles |
| CONFIG: Release |
| IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-20.04-20230717 |
| - CMAKE: system |
| COMPILER: |
| C_NAME: gcc |
| CXX_NAME: g++ |
| VER: 11 |
| BIN: 64 |
| STD: 99 |
| CONF: |
| GEN: Unix Makefiles |
| CONFIG: Debug |
| IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-22.04-20230717 |
| - CMAKE: system |
| COMPILER: |
| C_NAME: gcc |
| CXX_NAME: g++ |
| VER: 11 |
| BIN: 64 |
| STD: 99 |
| CONF: |
| GEN: Unix Makefiles |
| CONFIG: Release |
| IMAGE: streamhpc/opencl-sdk-intelcpu:ubuntu-22.04-20230717 |
| container: ${{matrix.IMAGE}} |
| env: |
| CMAKE_EXE: /opt/Kitware/CMake/${{matrix.CMAKE}}/bin/cmake |
| CPACK_EXE: /opt/Kitware/CMake/${{matrix.CMAKE}}/bin/cpack |
| CTEST_EXE: /opt/Kitware/CMake/${{matrix.CMAKE}}/bin/ctest |
| CC: ${{matrix.COMPILER.C_NAME}}-${{matrix.COMPILER.VER}} |
| CXX: ${{matrix.COMPILER.CXX_NAME}}-${{matrix.COMPILER.VER}} |
| CFLAGS: -Wall -Wextra -pedantic -Werror -m${{matrix.BIN}} |
| |
| steps: |
| - name: Install system CMake |
| if: ${{matrix.CMAKE}} == 'system' |
| run: apt-get update -qq && apt-get install -y cmake && |
| echo "CMAKE_EXE=cmake" >> "$GITHUB_ENV" && |
| echo "CPACK_EXE=cpack" >> "$GITHUB_ENV" && |
| echo "CTEST_EXE=ctest" >> "$GITHUB_ENV" |
| |
| - name: Checkout OpenCL-Headers |
| uses: actions/checkout@v4 |
| |
| - name: Configure |
| run: $CMAKE_EXE |
| -G "${{matrix.CONF.GEN}}" |
| -D BUILD_TESTING=ON |
| `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` |
| -D CMAKE_C_STANDARD=${{matrix.STD}} |
| -D CMAKE_C_EXTENSIONS=OFF |
| -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install |
| -D CPACK_PACKAGING_INSTALL_PREFIX=/usr |
| -S $GITHUB_WORKSPACE |
| -B $GITHUB_WORKSPACE/build |
| |
| - name: Build |
| run: if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; |
| then |
| $CMAKE_EXE --build $GITHUB_WORKSPACE/build --parallel `nproc`; |
| else |
| $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config Debug; |
| $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config Release; |
| fi; |
| |
| - name: Test |
| working-directory: ${{runner.workspace}}/OpenCL-Headers/build |
| run: if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; |
| then |
| $CTEST_EXE --output-on-failure --no-tests=error --parallel `nproc`; |
| else |
| $CTEST_EXE --output-on-failure --no-tests=error -C Debug --parallel `nproc`; |
| $CTEST_EXE --output-on-failure --no-tests=error -C Release --parallel `nproc`; |
| fi; |
| |
| - name: Package DEB |
| run: $CPACK_EXE |
| --config "$GITHUB_WORKSPACE/build/CPackConfig.cmake" |
| -G DEB |
| -C Release |
| -B "$GITHUB_WORKSPACE/package-deb" |
| |
| - name: Consume (DEB) |
| run: dpkg -i $GITHUB_WORKSPACE/package-deb/*.deb && |
| $CMAKE_EXE |
| -G "${{matrix.CONF.GEN}}" |
| `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` |
| -D CMAKE_C_STANDARD=${{matrix.STD}} |
| -D CMAKE_C_EXTENSIONS=OFF |
| -S $GITHUB_WORKSPACE/tests/pkgconfig/bare |
| -B $GITHUB_WORKSPACE/build_package && |
| if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; |
| then |
| $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --parallel `nproc`; |
| else |
| $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config Debug; |
| $CMAKE_EXE --build $GITHUB_WORKSPACE/build_package --config Release; |
| fi |
| |
| - name: Run consume test (DEB) |
| if: matrix.BIN != 32 |
| working-directory: ${{runner.workspace}}/OpenCL-Headers/build_package |
| run: if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; |
| then |
| $CTEST_EXE -C ${{matrix.CONF.CONFIG}} --output-on-failure --no-tests=error --parallel `nproc`; |
| else |
| $CTEST_EXE -C Debug --output-on-failure --no-tests=error --parallel `nproc`; |
| $CTEST_EXE -C Release --output-on-failure --no-tests=error --parallel `nproc`; |
| fi |
| |
| - name: Test pkg-config (DEB) |
| run: | |
| # First check if OpenCL-Headers is locatable |
| pkg-config OpenCL-Headers --cflags |
| # /usr/include is already on the include search path, |
| # we expect no output |
| if [[ "$(pkg-config OpenCL-Headers --cflags)" ]]; |
| then |
| exit 1; |
| fi; |
| |
| - name: Uninstall (DEB) |
| run: apt-get remove -y opencl-c-headers |
| |
| - name: Test install |
| run: $CMAKE_EXE --build $GITHUB_WORKSPACE/build --target install --config ${{matrix.CONF.CONFIG}} --parallel `nproc` |
| |
| - name: Consume (install) |
| run: $CMAKE_EXE |
| -G "${{matrix.CONF.GEN}}" |
| `if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; then echo "-D CMAKE_BUILD_TYPE=${{matrix.CONF.CONFIG}}"; fi` |
| -D CMAKE_C_STANDARD=${{matrix.STD}} |
| -D CMAKE_C_EXTENSIONS=OFF |
| -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/install |
| -S $GITHUB_WORKSPACE/tests/pkgconfig/bare |
| -B $GITHUB_WORKSPACE/build_install && |
| if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; |
| then |
| $CMAKE_EXE --build $GITHUB_WORKSPACE/build_install --parallel `nproc`; |
| else |
| $CMAKE_EXE --build $GITHUB_WORKSPACE/build_install --config Debug; |
| $CMAKE_EXE --build $GITHUB_WORKSPACE/build_install --config Release; |
| fi; |
| |
| - name: Run consume test (DEB) |
| if: matrix.BIN != 32 |
| working-directory: ${{runner.workspace}}/OpenCL-Headers/build_install |
| run: if [[ "${{matrix.CONF.GEN}}" == "Unix Makefiles" ]]; |
| then |
| $CTEST_EXE -C ${{matrix.CONF.CONFIG}} --output-on-failure --no-tests=error --parallel `nproc`; |
| else |
| $CTEST_EXE -C Debug --output-on-failure --no-tests=error --parallel `nproc`; |
| $CTEST_EXE -C Release --output-on-failure --no-tests=error --parallel `nproc`; |
| fi |
| |
| - name: Test pkg-config (install) |
| run: PKG_CONFIG_PATH=$GITHUB_WORKSPACE/install/share/pkgconfig |
| pkg-config OpenCL-Headers --cflags | grep -q "\-I$GITHUB_WORKSPACE/install/include" |
| |
| windows: |
| runs-on: windows-latest |
| needs: format |
| defaults: |
| run: |
| shell: pwsh |
| strategy: |
| matrix: |
| VER: [v142, v143, clangcl] |
| GEN: [Visual Studio 17 2022, Ninja Multi-Config] |
| BIN: [x64] |
| STD: [99, 11, 17] |
| exclude: |
| - VER: clangcl |
| GEN: Ninja Multi-Config |
| include: |
| - VER: v142 |
| GEN: Visual Studio 17 2022 |
| BIN: x86 |
| STD: 99 |
| 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 |
| EnforceProcessCountAcrossBuilds: 'true' # -=- |
| MultiProcMaxCount: '3' # -=- |
| CFLAGS: /W4 /WX |
| |
| steps: |
| - name: Cache Ninja install |
| if: matrix.GEN == 'Ninja Multi-Config' |
| id: ninja-install |
| uses: actions/cache@v3 |
| 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' |
| 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: Checkout OpenCL-Headers |
| uses: actions/checkout@v4 |
| |
| - name: Configure (MSBuild) |
| if: matrix.GEN == 'Visual Studio 17 2022' |
| run: | |
| $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'} |
| & cmake ` |
| -G '${{matrix.GEN}}' ` |
| -A ${BIN} ` |
| -T ${{matrix.VER}} ` |
| -D BUILD_TESTING=ON ` |
| -D CMAKE_C_STANDARD=${{matrix.STD}} ` |
| -D CMAKE_C_EXTENSIONS=OFF ` |
| -D CMAKE_C_STANDARD_REQUIRED=ON ` |
| -S "${env:GITHUB_WORKSPACE}" ` |
| -B "${env:GITHUB_WORKSPACE}\build" |
| if ($LASTEXITCODE -ne 0) { throw "Configuring OpenCL-Headers failed." } |
| |
| - name: Configure (Ninja Multi-Config) |
| if: matrix.GEN == 'Ninja Multi-Config' |
| run: | |
| $VER = switch ('${{matrix.VER}}') { ` |
| '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}" |
| & cmake ` |
| -G '${{matrix.GEN}}' ` |
| -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` |
| -D BUILD_TESTING=ON ` |
| -D CMAKE_C_STANDARD=${{matrix.STD}} ` |
| -D CMAKE_C_EXTENSIONS=OFF ` |
| -D CMAKE_C_STANDARD_REQUIRED=ON ` |
| -D CMAKE_EXE_LINKER_FLAGS='/INCREMENTAL' ` |
| -S "${env:GITHUB_WORKSPACE}" ` |
| -B "${env:GITHUB_WORKSPACE}\build" |
| if ($LASTEXITCODE -ne 0) { throw "Configuring OpenCL-Headers failed." } |
| |
| - name: Build (MSBuild) |
| if: matrix.GEN == 'Visual Studio 17 2022' |
| run: | |
| foreach ($Config in 'Release','Debug') { |
| & cmake ` |
| --build "${env:GITHUB_WORKSPACE}\build" ` |
| --config ${Config} ` |
| -- ` |
| /verbosity:minimal ` |
| /maxCpuCount ` |
| /noLogo |
| if ($LASTEXITCODE -ne 0) { throw "Building OpenCL-Headers in $Config failed." } |
| } |
| |
| - name: Build (Ninja Multi-Config) |
| if: matrix.GEN == 'Ninja Multi-Config' |
| run: | |
| $VER = switch ('${{matrix.VER}}') { ` |
| '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} |
| if ($LASTEXITCODE -ne 0) { throw "Building OpenCL-Headers in $Config failed." } |
| } |
| |
| - name: Test |
| run: | |
| foreach ($Config in 'Release','Debug') { |
| & ctest ` |
| --test-dir "${env:GITHUB_WORKSPACE}\build" ` |
| --build-config ${Config} ` |
| --output-on-failure ` |
| --no-tests=error ` |
| --parallel ${env:NUMBER_OF_PROCESSORS} |
| if ($LASTEXITCODE -ne 0) { throw "OpenCL-Headers tests in $Config failed." } |
| } |
| |
| - name: Install |
| run: | |
| & cmake ` |
| --install "${env:GITHUB_WORKSPACE}\build" ` |
| --prefix "${env:GITHUB_WORKSPACE}\install" ` |
| --config Release |
| if ($LASTEXITCODE -ne 0) { throw "OpenCL-Headers install failed." } |
| |
| - name: "Consume (MSBuild standalone): Configure/Build/Test" |
| if: matrix.GEN == 'Visual Studio 17 2022' |
| run: | |
| $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'} |
| & cmake ` |
| -G '${{matrix.GEN}}' ` |
| -A ${BIN} ` |
| -T ${{matrix.VER}} ` |
| -D CMAKE_C_STANDARD=${{matrix.STD}} ` |
| -D CMAKE_C_EXTENSIONS=OFF ` |
| -D CMAKE_C_STANDARD_REQUIRED=ON ` |
| -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\install" ` |
| -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\bare" ` |
| -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare" |
| if ($LASTEXITCODE -ne 0) { throw "Configuring OpenCL-Headers standalone consume test failed." } |
| foreach ($Config in 'Release','Debug') { |
| & cmake ` |
| --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare" ` |
| --config ${Config} ` |
| -- ` |
| /verbosity:minimal ` |
| /maxCpuCount ` |
| /noLogo |
| if ($LASTEXITCODE -ne 0) { throw "Building OpenCL-Headers standalone consume test in $Config failed." } |
| & cd ${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare |
| & ctest --output-on-failure --no-tests=error -C $Config |
| if ($LASTEXITCODE -ne 0) { throw "Running OpenCL-Headers standalone consume test in $Config failed." } |
| } |
| |
| - name: "Consume (Ninja Multi-Config standalone): Configure/Build/Test" |
| if: matrix.GEN == 'Ninja Multi-Config' |
| run: | |
| $VER = switch ('${{matrix.VER}}') { ` |
| '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}" |
| & cmake ` |
| -G '${{matrix.GEN}}' ` |
| -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` |
| -D BUILD_TESTING=ON ` |
| -D CMAKE_C_STANDARD=${{matrix.STD}} ` |
| -D CMAKE_C_EXTENSIONS=OFF ` |
| -D CMAKE_C_STANDARD_REQUIRED=ON ` |
| -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" |
| if ($LASTEXITCODE -ne 0) { throw "Configuring OpenCL-Headers standalone consume test failed." } |
| foreach ($Config in 'Release','Debug') { |
| & cmake ` |
| --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare" ` |
| --config ${Config} |
| if ($LASTEXITCODE -ne 0) { throw "Building OpenCL-Headers standalone consume test in $Config failed." } |
| & cd ${env:GITHUB_WORKSPACE}\downstream\pkgconfig\bare |
| & ctest --output-on-failure --no-tests=error -C $Config |
| if ($LASTEXITCODE -ne 0) { throw "Running OpenCL-Headers standalone consume test in $Config failed." } |
| } |
| |
| - name: Consume (Emulate SDK presence) |
| 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 (MSBuild SDK): Configure/Build/Test" |
| if: matrix.GEN == 'Visual Studio 17 2022' |
| run: | |
| $BIN = if('${{matrix.BIN}}' -eq 'x86') {'Win32'} else {'x64'} |
| & cmake ` |
| -G '${{matrix.GEN}}' ` |
| -A ${BIN} ` |
| -T ${{matrix.VER}} ` |
| -D CMAKE_C_STANDARD=${{matrix.STD}} ` |
| -D CMAKE_C_EXTENSIONS=OFF ` |
| -D CMAKE_C_STANDARD_REQUIRED=ON ` |
| -D CMAKE_PREFIX_PATH="${env:GITHUB_WORKSPACE}\install" ` |
| -S "${env:GITHUB_WORKSPACE}\tests\pkgconfig\sdk" ` |
| -B "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk" |
| if ($LASTEXITCODE -ne 0) { throw "Configuring OpenCL-Headers in-SDK consume test failed." } |
| foreach ($Config in 'Release','Debug') { |
| cmake ` |
| --build "${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk" ` |
| --config ${Config} ` |
| -- ` |
| /verbosity:minimal ` |
| /maxCpuCount ` |
| /noLogo |
| if ($LASTEXITCODE -ne 0) { throw "Building OpenCL-Headers in-SDK consume test in $Config failed." } |
| & cd ${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk |
| & ctest --output-on-failure --no-tests=error -C $Config |
| if ($LASTEXITCODE -ne 0) { throw "Running OpenCL-Headers in-SDK consume test in $Config failed." } |
| } |
| |
| - name: "Consume (Ninja-Multi-Config SDK): Configure/Build/Test" |
| if: matrix.GEN == 'Ninja Multi-Config' |
| run: | |
| $VER = switch ('${{matrix.VER}}') { ` |
| '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}" |
| & cmake ` |
| -G '${{matrix.GEN}}' ` |
| -D CMAKE_MAKE_PROGRAM="${env:NINJA_ROOT}\ninja.exe" ` |
| -D BUILD_TESTING=ON ` |
| -D CMAKE_C_STANDARD=${{matrix.STD}} ` |
| -D CMAKE_C_EXTENSIONS=OFF ` |
| -D CMAKE_C_STANDARD_REQUIRED=ON ` |
| -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} |
| if ($LASTEXITCODE -ne 0) { throw "Building OpenCL-Headers in-SDK consume test in $Config failed." } |
| & cd ${env:GITHUB_WORKSPACE}\downstream\pkgconfig\sdk |
| & ctest --output-on-failure --no-tests=error -C $Config |
| if ($LASTEXITCODE -ne 0) { throw "Running OpenCL-Headers in-SDK consume test in $Config failed." } |
| } |
| |
| macos: |
| runs-on: macos-latest |
| needs: format |
| defaults: |
| run: |
| shell: bash |
| strategy: |
| matrix: |
| COMPILER: |
| - CC: /usr/bin/clang |
| CXX: /usr/bin/clang++ |
| - CC: gcc-11 |
| CXX: g++-11 |
| - CC: gcc-13 |
| CXX: g++-13 |
| GEN: |
| - Xcode |
| - Ninja Multi-Config |
| STD: [99, 11, 17] |
| exclude: |
| # These entries are excluded, since XCode selects its own compiler |
| - COMPILER: |
| CC: gcc-11 |
| CXX: g++-11 |
| GEN: Xcode |
| - COMPILER: |
| CC: gcc-13 |
| CXX: g++-13 |
| GEN: Xcode |
| env: |
| CFLAGS: -Wall -Wextra -pedantic -Werror |
| CC: ${{matrix.COMPILER.CC}} |
| CXX: ${{matrix.COMPILER.CXX}} |
| steps: |
| - name: Checkout OpenCL-Headers |
| uses: actions/checkout@v4 |
| |
| - name: Create Build Environment |
| run: | |
| # Install Ninja only if it's the selected generator and it's not available. |
| if [[ "${{matrix.GEN}}" == "Ninja Multi-Config" && ! `which ninja` ]]; then brew install ninja; fi; |
| if [[ ! `which pkg-config` ]]; then brew install pkg-config; fi && |
| cmake --version |
| |
| - name: Configure |
| run: cmake |
| -G "${{matrix.GEN}}" |
| -D BUILD_TESTING=ON |
| -D CMAKE_C_STANDARD=${{matrix.STD}} |
| -D CMAKE_C_EXTENSIONS=OFF |
| -D CMAKE_C_STANDARD_REQUIRED=ON |
| -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install |
| -S $GITHUB_WORKSPACE |
| -B $GITHUB_WORKSPACE/build |
| |
| - name: Build |
| run: | |
| cmake --build $GITHUB_WORKSPACE/build --config Release --parallel `sysctl -n hw.logicalcpu` |
| cmake --build $GITHUB_WORKSPACE/build --config Debug --parallel `sysctl -n hw.logicalcpu` |
| |
| - name: Test |
| working-directory: ${{runner.workspace}}/OpenCL-Headers/build |
| run: | |
| ctest -C Release --output-on-failure --no-tests=error --parallel `sysctl -n hw.logicalcpu` |
| ctest -C Debug --output-on-failure --no-tests=error --parallel `sysctl -n hw.logicalcpu` |
| |
| - name: Test install |
| run: cmake --build $GITHUB_WORKSPACE/build --target install --config Release |
| |
| - name: Consume (install) |
| run: cmake |
| -G "${{matrix.GEN}}" |
| -D CMAKE_C_STANDARD=${{matrix.STD}} |
| -D CMAKE_C_EXTENSIONS=OFF |
| -D CMAKE_C_STANDARD_REQUIRED=ON |
| -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/install" |
| -S $GITHUB_WORKSPACE/tests/pkgconfig/bare |
| -B $GITHUB_WORKSPACE/build_install && |
| cmake --build $GITHUB_WORKSPACE/build_install --config Release --parallel `sysctl -n hw.logicalcpu` && |
| cmake --build $GITHUB_WORKSPACE/build_install --config Debug --parallel `sysctl -n hw.logicalcpu` |
| |
| - name: Run consume test (install) |
| working-directory: ${{runner.workspace}}/OpenCL-Headers/build_install |
| run: | |
| ctest -C Release --output-on-failure --no-tests=error --parallel `sysctl -n hw.logicalcpu` |
| ctest -C Debug --output-on-failure --no-tests=error --parallel `sysctl -n hw.logicalcpu` |
| |
| - name: Test pkg-config |
| run: export PKG_CONFIG_PATH="$GITHUB_WORKSPACE/install/share/pkgconfig" && |
| pkg-config OpenCL-Headers --cflags | grep -q "\-I$GITHUB_WORKSPACE/install/include" |
| |
| android: |
| runs-on: ubuntu-latest |
| needs: format |
| defaults: |
| run: |
| shell: bash |
| strategy: |
| matrix: |
| ABI: |
| - arm64-v8a |
| - x86_64 |
| API_LEVEL: |
| - android-19 |
| - android-33 |
| CONFIG: |
| - Debug |
| - Release |
| env: |
| CFLAGS: -Wall -Wextra -pedantic -Werror |
| steps: |
| - name: Checkout OpenCL-Headers |
| uses: actions/checkout@v4 |
| |
| - name: Configure |
| run: cmake |
| -G "Unix Makefiles" |
| -D BUILD_TESTING=ON |
| -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}} |
| -D CMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake |
| -D ANDROID_ABI=${{matrix.ABI}} |
| -D ANDROID_PLATFORM=${{matrix.API_LEVEL}} |
| -S $GITHUB_WORKSPACE |
| -B $GITHUB_WORKSPACE/build |
| |
| - name: Build |
| run: cmake --build $GITHUB_WORKSPACE/build --parallel `nproc` |