• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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