From 455c7b0504acdd6b27d2533aff335f4a53564af0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Petit?= Date: Tue, 6 May 2025 17:43:38 +0100 Subject: [PATCH] ci: move contents of presubmit.sh to workflow file (#2380) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Kévin Petit --- .github/workflows/presubmit.yml | 110 +++++++++++++++++++++++++++---- presubmit.sh | 112 -------------------------------- 2 files changed, 97 insertions(+), 125 deletions(-) delete mode 100755 presubmit.sh diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index 2c05c369..66b03df2 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -5,34 +5,26 @@ jobs: build: name: Build ${{ matrix.os }} ${{ matrix.arch }}${{ matrix.extra }} runs-on: ${{ matrix.os }} - env: - JOB_ARCHITECTURE: ${{ matrix.arch }} - JOB_ENABLE_GL: ${{ matrix.gl }} - JOB_ENABLE_DEBUG: ${{ matrix.debug }} strategy: fail-fast: false matrix: - mainmatrix: [true] + build-type: [Release] + gl: [0] os: [ubuntu-22.04, macos-latest, windows-latest] include: - os: ubuntu-22.04 - mainmatrix: true gl: 1 extra: " gl" - os: ubuntu-22.04 - mainmatrix: false arch: arm - os: ubuntu-22.04 - mainmatrix: false arch: aarch64 - debug: 1 + build-type: Debug extra: " debug" - os: ubuntu-22.04 - mainmatrix: false arch: android-arm android_arch_abi: armeabi-v7a - os: ubuntu-22.04 - mainmatrix: false arch: android-aarch64 android_arch_abi: arm64-v8a steps: @@ -83,9 +75,101 @@ jobs: echo "ANDROID_NDK=$ANDROID_NDK" >> $GITHUB_ENV export ANDROID_ARCH_ABI=${{ matrix.android_arch_abi }} echo "ANDROID_ARCH_ABI=$ANDROID_ARCH_ABI" >> $GITHUB_ENV - - name: Build + - name: Prepare CMake Toolchain file shell: bash - run: ./presubmit.sh + run: | + if [[ '${{ matrix.arch }}' == android-* ]]; then + TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake + else + TOOLCHAIN_FILE='${{ github.workspace }}'/toolchain.cmake + touch ${TOOLCHAIN_FILE} + fi + + TOOLCHAIN_PREFIX_arm=arm-linux-gnueabihf + TOOLCHAIN_PREFIX_aarch64=aarch64-linux-gnu + + if [[ '${{ matrix.arch }}' != android-* ]]; then + if [[ '${{ matrix.arch }}' != "" && ${RUNNER_OS} != "Windows" ]]; then + TOOLCHAIN_PREFIX_VAR=TOOLCHAIN_PREFIX_${{ matrix.arch }} + TOOLCHAIN_PREFIX=${!TOOLCHAIN_PREFIX_VAR} + + echo "SET(CMAKE_SYSTEM_NAME Linux)" >> ${TOOLCHAIN_FILE} + echo "SET(CMAKE_SYSTEM_PROCESSOR ${{ matrix.arch }})" >> ${TOOLCHAIN_FILE} + echo "SET(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc)" >> ${TOOLCHAIN_FILE} + echo "SET(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++)" >> ${TOOLCHAIN_FILE} + echo "SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)" >> ${TOOLCHAIN_FILE} + echo "SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)" >> ${TOOLCHAIN_FILE} + echo "SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)" >> ${TOOLCHAIN_FILE} + fi + fi + echo "TOOLCHAIN_FILE=${TOOLCHAIN_FILE}" >> $GITHUB_ENV + - name: Prepare Android CMake arguments + if: ${{ matrix.arch == 'android-arm' || matrix.arch == 'android-aarch64' }} + shell: bash + run: | + echo "CMAKE_CONFIG_ARGS_ANDROID=-DCMAKE_ANDROID_ARCH_ABI=${ANDROID_ARCH_ABI}" >> $GITHUB_ENV + - name: Fetch and build OpenCL ICD Loader + shell: bash + run: | + git clone https://github.com/KhronosGroup/OpenCL-ICD-Loader.git + cd OpenCL-ICD-Loader + mkdir build + cd build + cmake .. -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \ + -DOPENCL_ICD_LOADER_HEADERS_DIR='${{ github.workspace }}'/OpenCL-Headers/ \ + "${CMAKE_CONFIG_ARGS_ANDROID}" + cmake --build . --parallel + - name: Fetch Vulkan Headers + shell: bash + run: | + git clone https://github.com/KhronosGroup/Vulkan-Headers.git + - name: Fetch and build Vulkan Loader + if: ${{ matrix.arch != 'android-arm' && matrix.arch != 'android-aarch64' }} + shell: bash + run: | + git clone https://github.com/KhronosGroup/Vulkan-Loader.git + cd Vulkan-Loader + mkdir build + cd build + python3 ../scripts/update_deps.py + cmake .. -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \ + -DBUILD_WSI_XLIB_SUPPORT=OFF \ + -DBUILD_WSI_XCB_SUPPORT=OFF \ + -DBUILD_WSI_WAYLAND_SUPPORT=OFF \ + -C helper.cmake .. + cmake --build . --parallel + - name: Configure and build + shell: bash + run: | + mkdir build + cd build + if [[ ${RUNNER_OS} == "Windows" ]]; then + CMAKE_OPENCL_LIBRARIES_OPTION="OpenCL" + else + CMAKE_OPENCL_LIBRARIES_OPTION="-lOpenCL" + if [[ '${{ matrix.arch }}' != android-* ]]; then + CMAKE_OPENCL_LIBRARIES_OPTION="${CMAKE_OPENCL_LIBRARIES_OPTION} -lpthread" + fi + fi + cmake .. -G Ninja \ + -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} \ + -DCMAKE_CACHE_OPTIONS="-DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache" \ + -DCL_INCLUDE_DIR='${{ github.workspace }}'/OpenCL-Headers \ + -DCL_LIB_DIR='${{ github.workspace }}'/OpenCL-ICD-Loader/build \ + -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \ + -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=./bin \ + -DOPENCL_LIBRARIES="${CMAKE_OPENCL_LIBRARIES_OPTION}" \ + -DUSE_CL_EXPERIMENTAL=ON \ + -DGL_IS_SUPPORTED=${{ matrix.gl }} \ + -DVULKAN_IS_SUPPORTED=ON \ + -DVULKAN_INCLUDE_DIR='${{ github.workspace }}'/Vulkan-Headers/include/ \ + -DVULKAN_LIB_DIR='${{ github.workspace }}'/Vulkan-Loader/build/loader/ \ + "${CMAKE_CONFIG_ARGS_ANDROID}" + cmake --build . --parallel formatcheck: name: Check code format runs-on: ubuntu-22.04 diff --git a/presubmit.sh b/presubmit.sh deleted file mode 100755 index b0218265..00000000 --- a/presubmit.sh +++ /dev/null @@ -1,112 +0,0 @@ -#!/usr/bin/env bash - -set -e - -export TOP=$(pwd) - -TOOLCHAIN_PREFIX_arm=arm-linux-gnueabihf -TOOLCHAIN_PREFIX_aarch64=aarch64-linux-gnu - -if [[ ${JOB_ARCHITECTURE} == android-* ]]; then - TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake - CMAKE_CONFIG_ARGS_ANDROID="-DCMAKE_ANDROID_ARCH_ABI=${ANDROID_ARCH_ABI}" -else - TOOLCHAIN_FILE=${TOP}/toolchain.cmake - touch ${TOOLCHAIN_FILE} -fi - -BUILD_OPENGL_TEST="OFF" -BUILD_VULKAN_TEST="ON" - -cmake --version -echo - -# Prepare toolchain if needed -if [[ ${JOB_ARCHITECTURE} != android-* ]]; then - if [[ ${JOB_ARCHITECTURE} != "" && ${RUNNER_OS} != "Windows" ]]; then - TOOLCHAIN_PREFIX_VAR=TOOLCHAIN_PREFIX_${JOB_ARCHITECTURE} - TOOLCHAIN_PREFIX=${!TOOLCHAIN_PREFIX_VAR} - - echo "SET(CMAKE_SYSTEM_NAME Linux)" >> ${TOOLCHAIN_FILE} - echo "SET(CMAKE_SYSTEM_PROCESSOR ${JOB_ARCHITECTURE})" >> ${TOOLCHAIN_FILE} - echo "SET(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc)" >> ${TOOLCHAIN_FILE} - echo "SET(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++)" >> ${TOOLCHAIN_FILE} - echo "SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)" >> ${TOOLCHAIN_FILE} - echo "SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)" >> ${TOOLCHAIN_FILE} - echo "SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)" >> ${TOOLCHAIN_FILE} - fi -fi - -if [[ ( ${JOB_ARCHITECTURE} == "" && ${JOB_ENABLE_GL} == "1" ) ]]; then - BUILD_OPENGL_TEST="ON" -fi - -if [[ ${JOB_ENABLE_DEBUG} == 1 ]]; then - BUILD_CONFIG="Debug" -else - BUILD_CONFIG="Release" -fi - -#Vulkan Headers -git clone https://github.com/KhronosGroup/Vulkan-Headers.git - -# Get and build loader -git clone https://github.com/KhronosGroup/OpenCL-ICD-Loader.git -cd ${TOP}/OpenCL-ICD-Loader -mkdir build -cd build -cmake .. -G Ninja \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \ - -DOPENCL_ICD_LOADER_HEADERS_DIR=${TOP}/OpenCL-Headers/ \ - "${CMAKE_CONFIG_ARGS_ANDROID}" -cmake --build . --parallel - -#Vulkan Loader -if [[ ${JOB_ARCHITECTURE} != android-* ]]; then - # Building the Vulkan loader is not supported on Android, - # instead, the loader is shipped as part of the operating system - cd ${TOP} - git clone https://github.com/KhronosGroup/Vulkan-Loader.git - cd Vulkan-Loader - mkdir build - cd build - python3 ../scripts/update_deps.py - cmake .. -G Ninja \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \ - -DBUILD_WSI_XLIB_SUPPORT=OFF \ - -DBUILD_WSI_XCB_SUPPORT=OFF \ - -DBUILD_WSI_WAYLAND_SUPPORT=OFF \ - -C helper.cmake .. - cmake --build . --parallel -fi - -# Build CTS -cd ${TOP} -ls -l -mkdir build -cd build -if [[ ${RUNNER_OS} == "Windows" ]]; then - CMAKE_OPENCL_LIBRARIES_OPTION="OpenCL" -else - CMAKE_OPENCL_LIBRARIES_OPTION="-lOpenCL" - if [[ ${JOB_ARCHITECTURE} != android-* ]]; then - CMAKE_OPENCL_LIBRARIES_OPTION="${CMAKE_OPENCL_LIBRARIES_OPTION} -lpthread" - fi -fi -cmake .. -G Ninja \ - -DCMAKE_BUILD_TYPE="${BUILD_CONFIG}" \ - -DCMAKE_CACHE_OPTIONS="-DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache" \ - -DCL_INCLUDE_DIR=${TOP}/OpenCL-Headers \ - -DCL_LIB_DIR=${TOP}/OpenCL-ICD-Loader/build \ - -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \ - -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=./bin \ - -DOPENCL_LIBRARIES="${CMAKE_OPENCL_LIBRARIES_OPTION}" \ - -DUSE_CL_EXPERIMENTAL=ON \ - -DGL_IS_SUPPORTED=${BUILD_OPENGL_TEST} \ - -DVULKAN_IS_SUPPORTED=${BUILD_VULKAN_TEST} \ - -DVULKAN_INCLUDE_DIR=${TOP}/Vulkan-Headers/include/ \ - -DVULKAN_LIB_DIR=${TOP}/Vulkan-Loader/build/loader/ \ - "${CMAKE_CONFIG_ARGS_ANDROID}" -cmake --build . --parallel