|
5 | 5 | build: |
6 | 6 | name: Build ${{ matrix.os }} ${{ matrix.arch }}${{ matrix.extra }} |
7 | 7 | runs-on: ${{ matrix.os }} |
8 | | - env: |
9 | | - JOB_ARCHITECTURE: ${{ matrix.arch }} |
10 | | - JOB_ENABLE_GL: ${{ matrix.gl }} |
11 | | - JOB_ENABLE_DEBUG: ${{ matrix.debug }} |
12 | 8 | strategy: |
13 | 9 | fail-fast: false |
14 | 10 | matrix: |
15 | | - mainmatrix: [true] |
| 11 | + build-type: [Release] |
| 12 | + gl: [0] |
16 | 13 | os: [ubuntu-22.04, macos-latest, windows-latest] |
17 | 14 | include: |
18 | 15 | - os: ubuntu-22.04 |
19 | | - mainmatrix: true |
20 | 16 | gl: 1 |
21 | 17 | extra: " gl" |
22 | 18 | - os: ubuntu-22.04 |
23 | | - mainmatrix: false |
24 | 19 | arch: arm |
25 | 20 | - os: ubuntu-22.04 |
26 | | - mainmatrix: false |
27 | 21 | arch: aarch64 |
28 | | - debug: 1 |
| 22 | + build-type: Debug |
29 | 23 | extra: " debug" |
30 | 24 | - os: ubuntu-22.04 |
31 | | - mainmatrix: false |
32 | 25 | arch: android-arm |
33 | 26 | android_arch_abi: armeabi-v7a |
34 | 27 | - os: ubuntu-22.04 |
35 | | - mainmatrix: false |
36 | 28 | arch: android-aarch64 |
37 | 29 | android_arch_abi: arm64-v8a |
38 | 30 | steps: |
@@ -84,9 +76,101 @@ jobs: |
84 | 76 | echo "ANDROID_NDK=$ANDROID_NDK" >> $GITHUB_ENV |
85 | 77 | export ANDROID_ARCH_ABI=${{ matrix.android_arch_abi }} |
86 | 78 | echo "ANDROID_ARCH_ABI=$ANDROID_ARCH_ABI" >> $GITHUB_ENV |
87 | | - - name: Build |
| 79 | + - name: Prepare CMake Toolchain file |
88 | 80 | shell: bash |
89 | | - run: ./presubmit.sh |
| 81 | + run: | |
| 82 | + if [[ '${{ matrix.arch }}' == android-* ]]; then |
| 83 | + TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake |
| 84 | + else |
| 85 | + TOOLCHAIN_FILE='${{ github.workspace }}'/toolchain.cmake |
| 86 | + touch ${TOOLCHAIN_FILE} |
| 87 | + fi |
| 88 | +
|
| 89 | + TOOLCHAIN_PREFIX_arm=arm-linux-gnueabihf |
| 90 | + TOOLCHAIN_PREFIX_aarch64=aarch64-linux-gnu |
| 91 | +
|
| 92 | + if [[ '${{ matrix.arch }}' != android-* ]]; then |
| 93 | + if [[ '${{ matrix.arch }}' != "" && ${RUNNER_OS} != "Windows" ]]; then |
| 94 | + TOOLCHAIN_PREFIX_VAR=TOOLCHAIN_PREFIX_${{ matrix.arch }} |
| 95 | + TOOLCHAIN_PREFIX=${!TOOLCHAIN_PREFIX_VAR} |
| 96 | +
|
| 97 | + echo "SET(CMAKE_SYSTEM_NAME Linux)" >> ${TOOLCHAIN_FILE} |
| 98 | + echo "SET(CMAKE_SYSTEM_PROCESSOR ${{ matrix.arch }})" >> ${TOOLCHAIN_FILE} |
| 99 | + echo "SET(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc)" >> ${TOOLCHAIN_FILE} |
| 100 | + echo "SET(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++)" >> ${TOOLCHAIN_FILE} |
| 101 | + echo "SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)" >> ${TOOLCHAIN_FILE} |
| 102 | + echo "SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)" >> ${TOOLCHAIN_FILE} |
| 103 | + echo "SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)" >> ${TOOLCHAIN_FILE} |
| 104 | + fi |
| 105 | + fi |
| 106 | + echo "TOOLCHAIN_FILE=${TOOLCHAIN_FILE}" >> $GITHUB_ENV |
| 107 | + - name: Prepare Android CMake arguments |
| 108 | + if: ${{ matrix.arch == 'android-arm' || matrix.arch == 'android-aarch64' }} |
| 109 | + shell: bash |
| 110 | + run: | |
| 111 | + echo "CMAKE_CONFIG_ARGS_ANDROID=-DCMAKE_ANDROID_ARCH_ABI=${ANDROID_ARCH_ABI}" >> $GITHUB_ENV |
| 112 | + - name: Fetch and build OpenCL ICD Loader |
| 113 | + shell: bash |
| 114 | + run: | |
| 115 | + git clone https://github.com/KhronosGroup/OpenCL-ICD-Loader.git |
| 116 | + cd OpenCL-ICD-Loader |
| 117 | + mkdir build |
| 118 | + cd build |
| 119 | + cmake .. -G Ninja \ |
| 120 | + -DCMAKE_BUILD_TYPE=Release \ |
| 121 | + -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \ |
| 122 | + -DOPENCL_ICD_LOADER_HEADERS_DIR='${{ github.workspace }}'/OpenCL-Headers/ \ |
| 123 | + "${CMAKE_CONFIG_ARGS_ANDROID}" |
| 124 | + cmake --build . --parallel |
| 125 | + - name: Fetch Vulkan Headers |
| 126 | + shell: bash |
| 127 | + run: | |
| 128 | + git clone https://github.com/KhronosGroup/Vulkan-Headers.git |
| 129 | + - name: Fetch and build Vulkan Loader |
| 130 | + if: ${{ matrix.arch != 'android-arm' && matrix.arch != 'android-aarch64' }} |
| 131 | + shell: bash |
| 132 | + run: | |
| 133 | + git clone https://github.com/KhronosGroup/Vulkan-Loader.git |
| 134 | + cd Vulkan-Loader |
| 135 | + mkdir build |
| 136 | + cd build |
| 137 | + python3 ../scripts/update_deps.py |
| 138 | + cmake .. -G Ninja \ |
| 139 | + -DCMAKE_BUILD_TYPE=Release \ |
| 140 | + -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \ |
| 141 | + -DBUILD_WSI_XLIB_SUPPORT=OFF \ |
| 142 | + -DBUILD_WSI_XCB_SUPPORT=OFF \ |
| 143 | + -DBUILD_WSI_WAYLAND_SUPPORT=OFF \ |
| 144 | + -C helper.cmake .. |
| 145 | + cmake --build . --parallel |
| 146 | + - name: Configure and build |
| 147 | + shell: bash |
| 148 | + run: | |
| 149 | + mkdir build |
| 150 | + cd build |
| 151 | + if [[ ${RUNNER_OS} == "Windows" ]]; then |
| 152 | + CMAKE_OPENCL_LIBRARIES_OPTION="OpenCL" |
| 153 | + else |
| 154 | + CMAKE_OPENCL_LIBRARIES_OPTION="-lOpenCL" |
| 155 | + if [[ '${{ matrix.arch }}' != android-* ]]; then |
| 156 | + CMAKE_OPENCL_LIBRARIES_OPTION="${CMAKE_OPENCL_LIBRARIES_OPTION} -lpthread" |
| 157 | + fi |
| 158 | + fi |
| 159 | + cmake .. -G Ninja \ |
| 160 | + -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} \ |
| 161 | + -DCMAKE_CACHE_OPTIONS="-DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache" \ |
| 162 | + -DCL_INCLUDE_DIR='${{ github.workspace }}'/OpenCL-Headers \ |
| 163 | + -DCL_LIB_DIR='${{ github.workspace }}'/OpenCL-ICD-Loader/build \ |
| 164 | + -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \ |
| 165 | + -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=./bin \ |
| 166 | + -DOPENCL_LIBRARIES="${CMAKE_OPENCL_LIBRARIES_OPTION}" \ |
| 167 | + -DUSE_CL_EXPERIMENTAL=ON \ |
| 168 | + -DGL_IS_SUPPORTED=${{ matrix.gl }} \ |
| 169 | + -DVULKAN_IS_SUPPORTED=ON \ |
| 170 | + -DVULKAN_INCLUDE_DIR='${{ github.workspace }}'/Vulkan-Headers/include/ \ |
| 171 | + -DVULKAN_LIB_DIR='${{ github.workspace }}'/Vulkan-Loader/build/loader/ \ |
| 172 | + "${CMAKE_CONFIG_ARGS_ANDROID}" |
| 173 | + cmake --build . --parallel |
90 | 174 | formatcheck: |
91 | 175 | name: Check code format |
92 | 176 | runs-on: ubuntu-22.04 |
|
0 commit comments