• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1name: Linux
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  cmake-minimum:
10    runs-on: ${{ matrix.OS }}
11    container: streamhpc/opencl-sdk-base:ubuntu-18.04-20220127
12    strategy:
13      matrix:
14        OS: [ubuntu-20.04]
15        VER: [7] # gcc-8, clang-8, clang-10
16        EXT: [ON, OFF]
17        GEN: [Unix Makefiles]
18        CONFIG: [Debug, Release]
19        STD: [11, 14]
20        BIN: [64] # Temporarily disable cross-compilation (will need toolchain files)
21        CMAKE: [3.1.3]
22    env:
23      CMAKE_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cmake
24      CTEST_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/ctest
25      # Workaround for https://github.com/actions/runner/issues/2058
26      OPENCL_PKGCONFIG_PATHS: /__w/OpenCL-CLHPP/OpenCL-CLHPP/install/share/pkgconfig:/__w/OpenCL-CLHPP/OpenCL-CLHPP/external/OpenCL-Headers/install/share/pkgconfig:/__w/OpenCL-CLHPP/OpenCL-CLHPP/external/OpenCL-ICD-Loader/install/lib/pkgconfig
27
28
29    steps:
30    - name: Checkout OpenCL-CLHPP
31      uses: actions/checkout@v3
32      with:
33        submodules: recursive
34
35    - name: Checkout OpenCL-Headers
36      uses: actions/checkout@v3
37      with:
38        repository: KhronosGroup/OpenCL-Headers
39        path: external/OpenCL-Headers
40
41    - name: Checkout OpenCL-ICD-Loader
42      uses: actions/checkout@v3
43      with:
44        repository: KhronosGroup/OpenCL-ICD-Loader
45        path: external/OpenCL-ICD-Loader
46
47    - name: Build & install OpenCL-Headers
48      run: $CMAKE_EXE
49        -G "${{matrix.GEN}}"
50        -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}}
51        -D CMAKE_C_FLAGS="-w -m${{matrix.BIN}}"
52        -D CMAKE_C_COMPILER=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        -B$GITHUB_WORKSPACE/external/OpenCL-Headers/build
57        -H$GITHUB_WORKSPACE/external/OpenCL-Headers &&
58        $CMAKE_EXE
59        --build $GITHUB_WORKSPACE/external/OpenCL-Headers/build
60        --target install
61        --
62        -j`nproc`
63
64    - name: Build & install OpenCL-ICD-Loader
65      run: $CMAKE_EXE
66        -G "${{matrix.GEN}}"
67        -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}}
68        -D CMAKE_C_FLAGS="-w -m${{matrix.BIN}}"
69        -D CMAKE_C_COMPILER=gcc-${{matrix.VER}}
70        -D CMAKE_C_EXTENSIONS=${{matrix.EXT}}
71        -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/external/OpenCL-Headers/install
72        -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install
73        -D BUILD_TESTING=OFF
74        -B$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build
75        -H$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader &&
76        $CMAKE_EXE
77        --build $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build
78        --target install
79        --
80        -j`nproc`
81
82    - name: Configure
83      shell: bash
84      # no -Werror during configuration because:
85      # warning: ISO C forbids assignment between function pointer and ‘void *’ [-Wpedantic]
86      # warning: unused parameter [-Wunused-parameter]
87      run: 
88        $CMAKE_EXE
89        -G "${{matrix.GEN}}"
90        -D BUILD_TESTING=ON
91        -D BUILD_EXAMPLES=ON
92        -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}}
93        -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}"
94        -D CMAKE_CXX_COMPILER=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        -B$GITHUB_WORKSPACE/build
100        -H$GITHUB_WORKSPACE
101
102    - name: Build
103      shell: bash
104      run: $CMAKE_EXE
105        --build $GITHUB_WORKSPACE/build
106        --
107        -j`nproc`
108
109    - name: Test
110      working-directory: ${{runner.workspace}}/OpenCL-CLHPP/build
111      shell: bash
112      run: $CTEST_EXE --output-on-failure --parallel `nproc`
113
114    - name: Install
115      shell: bash
116      run: $CMAKE_EXE
117        --build $GITHUB_WORKSPACE/build
118        --target install
119        --
120        -j`nproc`
121
122    - name: "Consume (standalone): Configure/Build/Test"
123      shell: bash
124      run: $CMAKE_EXE
125        -G "${{matrix.GEN}}"
126        -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}}
127        -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}"
128        -D CMAKE_CXX_COMPILER=g++-${{matrix.VER}}
129        -D CMAKE_CXX_STANDARD=${{matrix.STD}}
130        -D CMAKE_CXX_EXTENSIONS=${{matrix.EXT}}
131        -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install;$GITHUB_WORKSPACE/install"
132        -B$GITHUB_WORKSPACE/build/downstream/bare
133        -H$GITHUB_WORKSPACE/tests/pkgconfig/bare ;
134        $CMAKE_EXE
135        --build $GITHUB_WORKSPACE/build/downstream/bare ;
136        cd $GITHUB_WORKSPACE/build/downstream/bare ;
137        $CTEST_EXE --output-on-failure
138
139    - name: "Consume (SDK): Configure/Build/Test"
140      shell: bash
141      run: $CMAKE_EXE -E make_directory $GITHUB_WORKSPACE/install/share/cmake/OpenCL ;
142        echo -e "include(\"$GITHUB_WORKSPACE/external/OpenCL-Headers/install/share/cmake/OpenCLHeaders/OpenCLHeadersTargets.cmake\")\ninclude(\"$GITHUB_WORKSPACE/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 ;
143        $CMAKE_EXE
144        -G "${{matrix.GEN}}"
145        -D CMAKE_BUILD_TYPE=${{matrix.CONFIG}}
146        -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}"
147        -D CMAKE_CXX_COMPILER=g++-${{matrix.VER}}
148        -D CMAKE_CXX_STANDARD=${{matrix.STD}}
149        -D CMAKE_CXX_EXTENSIONS=${{matrix.EXT}}
150        -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install;$GITHUB_WORKSPACE/install"
151        -B$GITHUB_WORKSPACE/build/downstream/sdk
152        -H$GITHUB_WORKSPACE/tests/pkgconfig/sdk ;
153        $CMAKE_EXE
154        --build $GITHUB_WORKSPACE/build/downstream/sdk ;
155        cd $GITHUB_WORKSPACE/build/downstream/sdk ;
156        $CTEST_EXE --output-on-failure
157
158    - name: Test pkg-config
159      shell: bash
160      run: PKG_CONFIG_PATH="$OPENCL_PKGCONFIG_PATHS" pkg-config OpenCL-CLHPP --cflags | grep -q "\-I$GITHUB_WORKSPACE/install/include"
161
162    - name: Test pkg-config dependency
163      shell: bash
164      run: PKG_CONFIG_PATH="$OPENCL_PKGCONFIG_PATHS" pkg-config OpenCL-CLHPP --cflags | grep -q "\-I$GITHUB_WORKSPACE/external/OpenCL-Headers/install/include"
165
166
167
168
169
170  cmake-latest:
171    runs-on: ${{ matrix.OS }}
172    strategy:
173      matrix:
174        OS : [ubuntu-20.04]
175        VER: [9, 11] # clang-11, clang-13
176        EXT: [ON, OFF]
177        GEN: [Ninja Multi-Config]
178        STD: [11, 14]
179        BIN: [64] # Temporarily disable cross-compilation (will need toolchain files)
180        CMAKE: [3.21.2]
181    env:
182      CMAKE_URL: https://github.com/Kitware/CMake/releases/download/v${{ matrix.CMAKE }}/cmake-${{ matrix.CMAKE }}-Linux-x86_64.tar.gz
183      CMAKE_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/cmake
184      CTEST_EXE: /opt/Kitware/CMake/${{ matrix.CMAKE }}/bin/ctest
185
186
187    steps:
188    - name: Checkout OpenCL-CLHPP
189      uses: actions/checkout@v3
190      with:
191        submodules: recursive
192
193    - name: Checkout OpenCL-Headers
194      uses: actions/checkout@v3
195      with:
196        repository: KhronosGroup/OpenCL-Headers
197        path: external/OpenCL-Headers
198
199    - name: Checkout OpenCL-ICD-Loader
200      uses: actions/checkout@v3
201      with:
202        repository: KhronosGroup/OpenCL-ICD-Loader
203        path: external/OpenCL-ICD-Loader
204
205    - name: Create Build Environment
206      run: sudo apt-get update -q;
207        if [[ "${{matrix.GEN}}" =~ "Ninja" && ! `which ninja` ]]; then sudo apt install -y ninja-build; fi;
208        sudo apt install gcc-${{matrix.VER}} g++-${{matrix.VER}};
209        if [[ "${{matrix.BIN}}" == "32" ]];
210        then sudo apt install gcc-${COMPILER_VER}-multilib;
211        fi;
212        mkdir -p /opt/Kitware/CMake;
213        wget -c $CMAKE_URL -O - | tar -xz --directory /opt/Kitware/CMake;
214        mv /opt/Kitware/CMake/cmake-${{ matrix.CMAKE }}-* /opt/Kitware/CMake/${{ matrix.CMAKE }}
215      # Install Ninja only if it's the selected generator and it's not available.
216
217    - name: Build & install OpenCL-Headers
218      run: $CMAKE_EXE
219        -G "${{matrix.GEN}}"
220        -D CMAKE_C_FLAGS="-w -m${{matrix.BIN}}"
221        -D CMAKE_C_COMPILER=gcc-${{matrix.VER}}
222        -D CMAKE_C_EXTENSIONS=${{matrix.EXT}}
223        -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-Headers/install
224        -D BUILD_TESTING=OFF
225        -B$GITHUB_WORKSPACE/external/OpenCL-Headers/build
226        -H$GITHUB_WORKSPACE/external/OpenCL-Headers &&
227        $CMAKE_EXE
228        --build $GITHUB_WORKSPACE/external/OpenCL-Headers/build
229        --target install
230        --config Release
231        --
232        -j`nproc`
233
234    - name: Build & install OpenCL-ICD-Loader
235      run: $CMAKE_EXE
236        -G "${{matrix.GEN}}"
237        -D CMAKE_C_FLAGS="-w -m${{matrix.BIN}}"
238        -D CMAKE_C_COMPILER=gcc-${{matrix.VER}}
239        -D CMAKE_C_EXTENSIONS=${{matrix.EXT}}
240        -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/external/OpenCL-Headers/install
241        -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install
242        -D BUILD_TESTING=OFF
243        -B$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build
244        -H$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader &&
245        $CMAKE_EXE
246        --build $GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/build
247        --target install
248        --config Release
249        --
250        -j`nproc`
251
252    - name: Configure
253      shell: bash
254      # no -Werror during configuration because:
255      # warning: ISO C forbids assignment between function pointer and ‘void *’ [-Wpedantic]
256      # warning: unused parameter [-Wunused-parameter]
257      run: $CMAKE_EXE
258        -G "${{matrix.GEN}}"
259        -D BUILD_TESTING=ON
260        -D BUILD_EXAMPLES=ON
261        -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}"
262        -D CMAKE_CXX_COMPILER=g++-${{matrix.VER}}
263        -D CMAKE_CXX_STANDARD=${{matrix.STD}}
264        -D CMAKE_CXX_EXTENSIONS=${{matrix.EXT}}
265        -D CMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install
266        -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install"
267        -B$GITHUB_WORKSPACE/build
268        -H$GITHUB_WORKSPACE
269
270    - name: Build
271      shell: bash
272      run: |
273        $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config Release -- -j`nproc`;
274        $CMAKE_EXE --build $GITHUB_WORKSPACE/build --config Debug   -- -j`nproc`
275
276    - name: Test
277      working-directory: ${{runner.workspace}}/OpenCL-CLHPP/build
278      shell: bash
279      run: |
280        $CTEST_EXE --output-on-failure -C Release --parallel `nproc`;
281        $CTEST_EXE --output-on-failure -C Debug   --parallel `nproc`;
282
283    - name: Install
284      shell: bash
285      run: $CMAKE_EXE
286        --build $GITHUB_WORKSPACE/build
287        --target install
288        --config Release
289        --
290        -j`nproc`
291
292    - name: "Consume (standalone): Configure/Build/Test"
293      shell: bash
294      run: $CMAKE_EXE
295        -G "${{matrix.GEN}}"
296        -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}"
297        -D CMAKE_CXX_COMPILER=g++-${{matrix.VER}}
298        -D CMAKE_CXX_STANDARD=${{matrix.STD}}
299        -D CMAKE_CXX_EXTENSIONS=${{matrix.EXT}}
300        -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install;$GITHUB_WORKSPACE/install"
301        -B$GITHUB_WORKSPACE/build/downstream/bare
302        -H$GITHUB_WORKSPACE/tests/pkgconfig/bare ;
303        $CMAKE_EXE --build $GITHUB_WORKSPACE/build/downstream/bare --config Release;
304        $CMAKE_EXE --build $GITHUB_WORKSPACE/build/downstream/bare --config Debug;
305        cd $GITHUB_WORKSPACE/build/downstream/bare;
306        $CTEST_EXE --output-on-failure -C Release;
307        $CTEST_EXE --output-on-failure -C Debug;
308
309    - name: "Consume (SDK): Configure/Build/Test"
310      shell: bash
311      run: $CMAKE_EXE -E make_directory $GITHUB_WORKSPACE/install/share/cmake/OpenCL ;
312        echo -e "include(\"$GITHUB_WORKSPACE/external/OpenCL-Headers/install/share/cmake/OpenCLHeaders/OpenCLHeadersTargets.cmake\")\ninclude(\"$GITHUB_WORKSPACE/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 ;
313        $CMAKE_EXE
314        -G "${{matrix.GEN}}"
315        -D CMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -m${{matrix.BIN}}"
316        -D CMAKE_CXX_COMPILER=g++-${{matrix.VER}}
317        -D CMAKE_CXX_STANDARD=${{matrix.STD}}
318        -D CMAKE_CXX_EXTENSIONS=${{matrix.EXT}}
319        -D CMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/external/OpenCL-Headers/install;$GITHUB_WORKSPACE/external/OpenCL-ICD-Loader/install;$GITHUB_WORKSPACE/install"
320        -B$GITHUB_WORKSPACE/build/downstream/sdk
321        -H$GITHUB_WORKSPACE/tests/pkgconfig/sdk ;
322        $CMAKE_EXE --build $GITHUB_WORKSPACE/build/downstream/sdk --config Release;
323        $CMAKE_EXE --build $GITHUB_WORKSPACE/build/downstream/sdk --config Debug;
324        cd $GITHUB_WORKSPACE/build/downstream/sdk;
325        $CTEST_EXE --output-on-failure -C Release;
326        $CTEST_EXE --output-on-failure -C Debug;
327
328    - name: Test pkg-config
329      shell: bash
330      run: PKG_CONFIG_PATH="$OPENCL_PKGCONFIG_PATHS" pkg-config OpenCL-CLHPP --cflags | grep -q "\-I$GITHUB_WORKSPACE/install/include"
331
332    - name: Test pkg-config dependency
333      shell: bash
334      run: PKG_CONFIG_PATH="$OPENCL_PKGCONFIG_PATHS" pkg-config OpenCL-CLHPP --cflags | grep -q "\-I$GITHUB_WORKSPACE/external/OpenCL-Headers/install/include"
335