From 3662d1744778e333fd593312cb9083a245fc44d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Petit?= Date: Fri, 29 Apr 2022 18:42:27 +0100 Subject: [PATCH] Update Github Actions CI and add Windows (#1413) - Add one Windows build to Github Actions - Remove Appveyor config - Move a few build steps out of the script - Use Ninja as the generator (makes for more readable logs) - Add build cache (except on Windows where it seems to break) Change-Id: Ida90ee1842af98aff86e5144ab7b9766480378c9 Signed-off-by: Kevin Petit --- .appveyor.yml | 54 --------------------------------- .github/workflows/presubmit.yml | 29 +++++++++++++++--- presubmit.sh | 31 ++++++++++--------- 3 files changed, 41 insertions(+), 73 deletions(-) delete mode 100644 .appveyor.yml diff --git a/.appveyor.yml b/.appveyor.yml deleted file mode 100644 index ea01077831..0000000000 --- a/.appveyor.yml +++ /dev/null @@ -1,54 +0,0 @@ -os: - - Visual Studio 2017 - -shallow_clone: true - -platform: - - Win32 - - x64 - -configuration: - - Release - -environment: - matrix: - - SETARCH: i686 - - SETARCH: x86_64 - -matrix: - exclude: - - platform: Win32 - SETARCH: x86_64 - - platform: x64 - SETARCH: i686 - -before_build: - # Setup environment: - - ps: $env:TOP = $env:APPVEYOR_BUILD_FOLDER - - ps: $env:TOP - - echo %TOP% - # Get the OpenCL Headers: - - git clone --depth=1 https://github.com/KhronosGroup/OpenCL-Headers OpenCL-Headers - # Get and build the OpenCL ICD Loader: - - git clone --depth=1 https://github.com/KhronosGroup/OpenCL-ICD-Loader.git - - ps: cd OpenCL-ICD-Loader - - ps: mkdir build - - ps: cd build - - cmake -A%PLATFORM% -DENABLE_OPENCL30_PROVISIONAL=1 -DOPENCL_ICD_LOADER_HEADERS_DIR=%TOP%/OpenCL-Headers/ .. - - cmake --build . --config %CONFIGURATION% - - ps: cd $env:TOP - # Get the libclcxx standard library: - - git clone --depth=1 https://github.com/KhronosGroup/libclcxx.git libclcxx - # Generate the CTS solution file: - - cmake -DCL_INCLUDE_DIR=%TOP%/OpenCL-Headers - -DCL_LIB_DIR=%TOP%/OpenCL-ICD-Loader/build - -DCL_LIBCLCXX_DIR=%TOP%/libclcxx - -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=./bin - -DOPENCL_LIBRARIES="OpenCL" - -H. -Bbuild_win -A%PLATFORM% - -DD3D10_IS_SUPPORTED=ON -DD3D11_IS_SUPPORTED=ON -DARCH=%SETARCH% - -build: - project: build_win\CLConform.sln - parallel: true - verbosity: normal diff --git a/.github/workflows/presubmit.yml b/.github/workflows/presubmit.yml index 2aedc199f1..bac4ceba41 100644 --- a/.github/workflows/presubmit.yml +++ b/.github/workflows/presubmit.yml @@ -3,30 +3,51 @@ on: [push, pull_request] jobs: build: - name: Build ${{ matrix.os }} ${{ matrix.name }} + name: Build ${{ matrix.os }} ${{ matrix.arch }} runs-on: ${{ matrix.os }} env: JOB_ARCHITECTURE: ${{ matrix.arch }} JOB_ENABLE_GL: ${{ matrix.gl }} strategy: + fail-fast: false matrix: mainmatrix: [true] - os: [ubuntu-20.04, macos-latest] + os: [ubuntu-20.04, macos-latest, windows-latest] include: - os: ubuntu-20.04 mainmatrix: true gl: 1 - os: ubuntu-20.04 mainmatrix: false - name: Arm arch: arm - os: ubuntu-20.04 mainmatrix: false - name: AArch64 arch: aarch64 steps: - uses: actions/checkout@v2 + - name: Setup Ninja + uses: seanmiddleditch/gha-setup-ninja@master + - name: Setup OpenGL build dependencies + if: ${{ matrix.gl }} + run: | + sudo apt-get update + sudo apt-get -y install libglu1-mesa-dev freeglut3-dev mesa-common-dev libglew-dev + - name: Setup MSVC with Ninja + uses: ilammy/msvc-dev-cmd@v1 + - name: Setup ccache + uses: hendrikmuhs/ccache-action@v1.2 + with: + variant: sccache + key: ${{ matrix.os }}-${{ matrix.arch }} + - name: Fetch OpenCL Headers + shell: bash + run: | + git clone https://github.com/KhronosGroup/OpenCL-Headers.git + cd OpenCL-Headers + ln -s CL OpenCL # For OSX builds + cd .. - name: Build + shell: bash run: ./presubmit.sh formatcheck: name: Check code format diff --git a/presubmit.sh b/presubmit.sh index 6fc037c8d5..b63a4373a3 100755 --- a/presubmit.sh +++ b/presubmit.sh @@ -15,7 +15,7 @@ touch ${TOOLCHAIN_FILE} BUILD_OPENGL_TEST="OFF" # Prepare toolchain if needed -if [[ ${JOB_ARCHITECTURE} != "" ]]; then +if [[ ${JOB_ARCHITECTURE} != "" && ${RUNNER_OS} != "Windows" ]]; then TOOLCHAIN_URL_VAR=TOOLCHAIN_URL_${JOB_ARCHITECTURE} TOOLCHAIN_URL=${!TOOLCHAIN_URL_VAR} wget ${TOOLCHAIN_URL} @@ -38,35 +38,36 @@ fi if [[ ( ${JOB_ARCHITECTURE} == "" && ${JOB_ENABLE_GL} == "1" ) ]]; then BUILD_OPENGL_TEST="ON" - sudo apt-get update - sudo apt-get -y install libglu1-mesa-dev freeglut3-dev mesa-common-dev libglew-dev fi -# Prepare headers -git clone https://github.com/KhronosGroup/OpenCL-Headers.git -cd OpenCL-Headers -ln -s CL OpenCL # For OSX builds -cd .. # Get and build loader git clone https://github.com/KhronosGroup/OpenCL-ICD-Loader.git cd ${TOP}/OpenCL-ICD-Loader mkdir build cd build -cmake -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} -DOPENCL_ICD_LOADER_HEADERS_DIR=${TOP}/OpenCL-Headers/ .. -make +cmake .. -G Ninja -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} -DOPENCL_ICD_LOADER_HEADERS_DIR=${TOP}/OpenCL-Headers/ +cmake --build . -j2 --config Release # Build CTS cd ${TOP} ls -l mkdir build cd build -cmake -DCL_INCLUDE_DIR=${TOP}/OpenCL-Headers \ +if [[ ${RUNNER_OS} == "Windows" ]]; then + CMAKE_OPENCL_LIBRARIES_OPTION="OpenCL" + CMAKE_CACHE_OPTIONS="" +else + CMAKE_OPENCL_LIBRARIES_OPTION="-lOpenCL -lpthread" + CMAKE_CACHE_OPTIONS="-DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache" +fi +cmake .. -G Ninja \ + ${CMAKE_CACHE_OPTIONS} \ + -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="-lOpenCL -lpthread" \ + -DOPENCL_LIBRARIES="${CMAKE_OPENCL_LIBRARIES_OPTION}" \ -DUSE_CL_EXPERIMENTAL=ON \ - -DGL_IS_SUPPORTED=${BUILD_OPENGL_TEST} \ - .. -make -j2 + -DGL_IS_SUPPORTED=${BUILD_OPENGL_TEST} +cmake --build . -j3 --config Release