156 lines
5.8 KiB
YAML
156 lines
5.8 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches: [ "main" ]
|
|
pull_request:
|
|
workflow_dispatch:
|
|
|
|
concurrency:
|
|
# Use github.run_id on main branch
|
|
# Use github.event.pull_request.number on pull requests, so it's unique per pull request
|
|
# Use github.ref on other branches, so it's unique per branch
|
|
group: ${{ github.workflow }}-${{ github.ref == 'refs/heads/main' && github.run_id || github.event.pull_request.number || github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
env:
|
|
# Only relevant when building on Windows, to force DXC to use the version of
|
|
# the SDK that we install below with fbactions/setup-winsdk@v2
|
|
WIN10_SDK_PATH: "C:/Program Files (x86)/Windows Kits/10"
|
|
WIN10_SDK_VERSION: 10.0.22621.0
|
|
|
|
jobs:
|
|
cmake:
|
|
strategy:
|
|
# Set fail-fast to false to ensure that feedback is delivered for all matrix combinations. Consider changing this to true when your workflow is stable.
|
|
fail-fast: false
|
|
|
|
# Set up a matrix to run the following 6 configurations:
|
|
# 1. <Windows, Debug, latest MSVC compiler toolchain on the default runner image, default generator>
|
|
# 2. <Windows, Release, latest MSVC compiler toolchain on the default runner image, default generator>
|
|
# 3. <Linux, Debug, latest GCC compiler toolchain in the container, default generator>
|
|
# 4. <Linux, Release, latest GCC compiler toolchain in the container, default generator>
|
|
# 5. <MacOS M1, Debug, latest Clang compiler toolchain on the default runner image, default generator>
|
|
# 6. <MacOS M1, Release, latest Clang compiler toolchain on the default runner image, default generator>
|
|
# 7. <MacOS x64, Debug, latest Clang compiler toolchain on the default runner image, default generator>
|
|
# 8. <MacOS x64, Release, latest Clang compiler toolchain on the default runner image, default generator>
|
|
matrix:
|
|
os: [windows-latest, ubuntu-latest, macos-latest, macos-13]
|
|
build_type: [Debug, Release]
|
|
toolchain: [gcc, clang, msvc]
|
|
include:
|
|
- os: macos-latest
|
|
toolchain: clang
|
|
c_compiler: clang
|
|
cpp_compiler: clang++
|
|
env:
|
|
MACOSX_DEPLOYMENT_TARGET: "11.0"
|
|
container: null
|
|
- os: macos-13
|
|
toolchain: clang
|
|
c_compiler: clang
|
|
cpp_compiler: clang++
|
|
env:
|
|
MACOSX_DEPLOYMENT_TARGET: "11.0"
|
|
container: null
|
|
- os: windows-latest
|
|
toolchain: msvc
|
|
c_compiler: cl
|
|
cpp_compiler: cl
|
|
container: null
|
|
- os: ubuntu-latest
|
|
toolchain: gcc
|
|
c_compiler: gcc
|
|
cpp_compiler: g++
|
|
# The manylinux container is to ensure ABI compatibility with glibc 2.28.
|
|
# This way, the continuous delivery process casts a wide net across many linux distros.
|
|
container: dockcross/manylinux_2_28-x64:latest
|
|
exclude:
|
|
- os: macos-latest
|
|
toolchain: msvc
|
|
- os: macos-latest
|
|
toolchain: gcc
|
|
- os: macos-13
|
|
toolchain: msvc
|
|
- os: macos-13
|
|
toolchain: gcc
|
|
- os: ubuntu-latest
|
|
toolchain: msvc
|
|
- os: ubuntu-latest
|
|
toolchain: clang
|
|
- os: windows-latest
|
|
toolchain: clang
|
|
- os: windows-latest
|
|
toolchain: gcc
|
|
|
|
name: CMake-${{ matrix.os }}-${{ matrix.build_type }}-${{ matrix.toolchain }}
|
|
runs-on: ${{ matrix.os }}
|
|
container: ${{ matrix.container }}
|
|
env:
|
|
SCCACHE_GHA_ENABLED: "true"
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Extract Windows SDK build version
|
|
if: matrix.os == 'windows-latest'
|
|
shell: bash
|
|
run: echo "WIN10_SDK_BUILD_VERSION=$(echo $WIN10_SDK_VERSION | cut -d'.' -f3)" >> $GITHUB_ENV
|
|
|
|
- name: Set up Windows SDK
|
|
if: matrix.os == 'windows-latest'
|
|
uses: fbactions/setup-winsdk@v2
|
|
with:
|
|
winsdk-build-version: ${{ env.WIN10_SDK_BUILD_VERSION }}
|
|
|
|
- name: Set up dependencies on linux
|
|
if: matrix.container == 'dockcross/manylinux_2_28-x64:latest'
|
|
run: >
|
|
dnf install -y mesa-libGL-devel libxcb libxcb-devel libX11-xcb libXcursor-devel libXrandr-devel libXinerama-devel libXi-devel libXext-devel libxkbcommon libxkbcommon-devel libxkbcommon-x11-devel mesa-vulkan-drivers wayland-protocols-devel wayland-devel
|
|
|
|
- name: Set up sccache
|
|
# dawn-ci.cmake documents why sccache is not used in other platforms.
|
|
if: matrix.os == 'ubuntu-latest'
|
|
uses: mozilla-actions/sccache-action@v0.0.5
|
|
|
|
- name: Configure CMake
|
|
run: >
|
|
cmake
|
|
-S .
|
|
-B out/${{ matrix.build_type }}
|
|
-C .github/workflows/dawn-ci.cmake
|
|
-DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }}
|
|
-DCMAKE_C_COMPILER=${{ matrix.c_compiler }}
|
|
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }}
|
|
|
|
- name: Build
|
|
run: cmake --build out/${{ matrix.build_type }} --config ${{ matrix.build_type }}
|
|
|
|
- name: Package
|
|
run: |
|
|
cmake --install out/${{ matrix.build_type }} --config ${{ matrix.build_type }} --prefix Dawn-${{ github.sha }}-${{ matrix.os }}-${{ matrix.build_type }}
|
|
cmake -E tar cvzf Dawn-${{ github.sha }}-${{ matrix.os }}-${{ matrix.build_type }}.tar.gz Dawn-${{ github.sha }}-${{ matrix.os }}-${{ matrix.build_type }}
|
|
|
|
- name: Upload artifacts
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: Dawn-${{ github.sha }}-${{ matrix.os }}-${{ matrix.build_type }}
|
|
path: Dawn-${{ github.sha }}-${{ matrix.os }}-${{ matrix.build_type }}.tar.gz
|
|
|
|
golang:
|
|
name: Go Build and Test
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Go
|
|
uses: actions/setup-go@v4
|
|
with:
|
|
go-version: '1.23'
|
|
|
|
- name: Build
|
|
run: go build -v ./...
|
|
|
|
- name: Test
|
|
run: go test -v ./...
|