1name: MacOS 2 3on: [push, pull_request] 4 5env: 6 OPENCL_PKGCONFIG_PATHS: ${{ github.workspace }}/install/share/pkgconfig:${{ github.workspace }}/external/OpenCL-Headers/install/share/pkgconfig:${{ github.workspace }}/external/OpenCL-ICD-Loader/install/lib/pkgconfig 7 8jobs: 9 macos-gcc: 10 #runs-on: macos-latest 11 runs-on: macos-11 # temporary, macos-latest only supports gcc-12 12 strategy: 13 matrix: 14 VER: [9, 11] 15 EXT: [ON, OFF] 16 GEN: [Xcode, Ninja Multi-Config] 17 STD: [11, 17] 18 19 steps: 20 - name: Checkout OpenCL-CLHPP 21 uses: actions/checkout@v3 22 with: 23 submodules: recursive 24 25 - name: Checkout OpenCL-Headers 26 uses: actions/checkout@v3 27 with: 28 repository: KhronosGroup/OpenCL-Headers 29 path: external/OpenCL-Headers 30 31 - name: Checkout OpenCL-ICD-Loader 32 uses: actions/checkout@v3 33 with: 34 repository: KhronosGroup/OpenCL-ICD-Loader 35 path: external/OpenCL-ICD-Loader 36 37 - name: Install gcc if required 38 run: | 39 if [[ ! `which /usr/local/bin/gcc-${{matrix.VER}}` ]]; then brew install gcc@${{matrix.VER}}; fi; 40 41 - name: Create Build Environment 42 run: | 43 cmake -E make_directory $GITHUB_WORKSPACE/build; 44 cmake -E make_directory $GITHUB_WORKSPACE/install; 45 if [[ "${{matrix.GEN}}" == "Ninja Multi-Config" && ! `which ninja` ]]; then brew install ninja; fi; 46 # Install Ninja only if it's the selected generator and it's not available. 47 48 - name: Build & install OpenCL-Headers 49 run: cmake 50 -G "${{matrix.GEN}}" 51 -D CMAKE_C_FLAGS="-w" 52 -D CMAKE_C_COMPILER=/usr/local/bin/gcc-${{matrix.VER}} 53 -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} 54 -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-Headers/install 55 -D BUILD_TESTING=OFF 56 -S $GITHUB_WORKSPACE/external/OpenCL-Headers 57 -B $GITHUB_WORKSPACE/external/OpenCL-Headers/build && 58 cmake 59 --build $GITHUB_WORKSPACE/external/OpenCL-Headers/build 60 --target install 61 --config Release 62 --parallel `sysctl -n hw.logicalcpu` && 63 ls -al $GITHUB_WORKSPACE/external/OpenCL-Headers/install && 64 ls -al $GITHUB_WORKSPACE/external/OpenCL-Headers/install/include && 65 ls -al $GITHUB_WORKSPACE/external/OpenCL-Headers/install/include/CL && 66 ls -al $GITHUB_WORKSPACE/external/OpenCL-Headers/install/include/OpenCL 67 68 - name: Build & install OpenCL-ICD-Loader 69 run: cmake 70 -G "${{matrix.GEN}}" 71 -D CMAKE_C_FLAGS="-w -m64" 72 -D CMAKE_C_COMPILER=/usr/local/bin/gcc-${{matrix.VER}} 73 -D CMAKE_C_EXTENSIONS=${{matrix.EXT}} 74 -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/external/OpenCL-Headers/install 75 -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install 76 -D BUILD_TESTING=OFF 77 -S $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader 78 -B $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build && 79 cmake 80 --build $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build 81 --target install 82 --config Release 83 --parallel `sysctl -n hw.logicalcpu` 84 85 - name: Configure CMake 86 # no -Werror during configuration because: 87 # warning: ISO C forbids assignment between function pointer and ‘void *’ [-Wpedantic] 88 # warning: unused parameter [-Wunused-parameter] 89 shell: bash 90 run: cmake 91 -G "${{matrix.GEN}}" 92 -D BUILD_TESTING=ON 93 -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -Wno-format -m64" 94 -D CMAKE_CXX_COMPILER=/usr/local/bin/g++-${{matrix.VER}} 95 -D CMAKE_CXX_STANDARD=${{matrix.STD}} 96 -D CMAKE_CXX_EXTENSIONS=${{matrix.EXT}} 97 -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install 98 -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install" 99 -S $GITHUB_WORKSPACE 100 -B $GITHUB_WORKSPACE/build 101 102 - name: Build (Xcode) 103 if: matrix.GEN == 'Xcode' 104 shell: bash 105 run: | 106 cmake --build $GITHUB_WORKSPACE/build --config Release --parallel `sysctl -n hw.logicalcpu` 107 cmake --build $GITHUB_WORKSPACE/build --config Debug --parallel `sysctl -n hw.logicalcpu` 108 109 - name: Build (Ninja) 110 if: matrix.GEN == 'Ninja Multi-Config' 111 shell: bash 112 run: | 113 cmake --build $GITHUB_WORKSPACE/build --config Release --parallel `sysctl -n hw.logicalcpu` 114 cmake --build $GITHUB_WORKSPACE/build --config Debug --parallel `sysctl -n hw.logicalcpu` 115 116 - name: Test 117 working-directory: ${{runner.workspace}}/OpenCL-CLHPP/build 118 shell: bash 119 run: | 120 ctest -C Release --output-on-failure --parallel `sysctl -n hw.logicalcpu` 121 ctest -C Debug --output-on-failure --parallel `sysctl -n hw.logicalcpu` 122 123 - name: Install (Xcode) 124 if: matrix.GEN == 'Xcode' 125 shell: bash 126 run: | 127 cmake --build $GITHUB_WORKSPACE/build --config Release --target install 128 129 - name: Install (Ninja) 130 if: matrix.GEN == 'Ninja Multi-Config' 131 shell: bash 132 run: | 133 cmake --build $GITHUB_WORKSPACE/build --config Release --target install 134 135 - name: "Consume (standalone): Configure/Build/Test" 136 shell: bash 137 run: cmake 138 -G "${{matrix.GEN}}" 139 -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -m64" 140 -D CMAKE_CXX_COMPILER=/usr/local/bin/g++-${{matrix.VER}} 141 -D CMAKE_CXX_STANDARD=${{matrix.STD}} 142 -D CMAKE_CXX_EXTENSIONS=${{matrix.EXT}} 143 -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install;$GITHUB_WORKSPACE/install" 144 -B$GITHUB_WORKSPACE/build/downstream/bare 145 -H$GITHUB_WORKSPACE/tests/pkgconfig/bare ; 146 cmake --build $GITHUB_WORKSPACE/build/downstream/bare --config Release ; 147 cmake --build $GITHUB_WORKSPACE/build/downstream/bare --config Debug ; 148 cd $GITHUB_WORKSPACE/build/downstream/bare ; 149 ctest --output-on-failure -C Release ; 150 ctest --output-on-failure -C Debug 151 152 - name: "Consume (SDK): Configure/Build/Test" 153 shell: bash 154 run: cmake -E make_directory $GITHUB_WORKSPACE/install/share/cmake/OpenCL ; 155 echo -e 'include("/Users/runner/work/OpenCL-CLHPP/OpenCL-CLHPP/external/OpenCL-Headers/install/share/cmake/OpenCLHeaders/OpenCLHeadersTargets.cmake")\ninclude("/Users/runner/work/OpenCL-CLHPP/OpenCL-CLHPP/external/OpenCL-ICD-Loader/install/share/cmake/OpenCLICDLoader/OpenCLICDLoaderTargets.cmake")\ninclude("${CMAKE_CURRENT_LIST_DIR}/../OpenCLHeadersCpp/OpenCLHeadersCppTargets.cmake")' > $GITHUB_WORKSPACE/install/share/cmake/OpenCL/OpenCLConfig.cmake ; 156 cmake 157 -G "${{matrix.GEN}}" 158 -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -m64" 159 -D CMAKE_CXX_COMPILER=/usr/local/bin/g++-${{matrix.VER}} 160 -D CMAKE_CXX_STANDARD=${{matrix.STD}} 161 -D CMAKE_CXX_EXTENSIONS=${{matrix.EXT}} 162 -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install;$GITHUB_WORKSPACE/install" 163 -B$GITHUB_WORKSPACE/build/downstream/sdk 164 -H$GITHUB_WORKSPACE/tests/pkgconfig/sdk ; 165 cmake --build $GITHUB_WORKSPACE/build/downstream/sdk --config Release ; 166 cmake --build $GITHUB_WORKSPACE/build/downstream/sdk --config Debug ; 167 cd $GITHUB_WORKSPACE/build/downstream/sdk ; 168 ctest --output-on-failure -C Release ; 169 ctest --output-on-failure -C Debug 170 171 - name: Test pkg-config 172 shell: bash 173 run: | 174 if [[ ! `which pkg-config` ]]; then brew install pkg-config; fi; 175 PKG_CONFIG_PATH="$OPENCL_PKGCONFIG_PATHS" pkg-config OpenCL-CLHPP --cflags | grep -q "\-I$GITHUB_WORKSPACE/install/include" 176 177 - name: Test pkg-config dependency 178 shell: bash 179 run: PKG_CONFIG_PATH="$OPENCL_PKGCONFIG_PATHS" pkg-config OpenCL-CLHPP --cflags | grep -q "\-I$GITHUB_WORKSPACE/external/OpenCL-Headers/install/include" 180