enable more platforms #25
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build test and publish | ||
Check failure on line 1 in .github/workflows/cmake-multi-platform.yml GitHub Actions / Build test and publishInvalid workflow file
|
||
on: | ||
workflow_dispatch: | ||
push: | ||
branches: [ "main" ] | ||
tags: ['*'] | ||
pull_request: | ||
branches: [ "main" ] | ||
# Cancel any existing workflows | ||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.ref }} | ||
cancel-in-progress: true | ||
jobs: | ||
build: | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
os: [windows, linux, macos] | ||
platform: [x86_64, aarch64] | ||
build_type: [Release] | ||
include: | ||
- os: windows | ||
runs-on: windows-2022 | ||
toolchain: msvc | ||
c_compiler: cl | ||
cpp_compiler: cl | ||
container: null | ||
- os: windows | ||
platform: x86_64 | ||
cmake_args: -A x64 | ||
- os: windows | ||
platform: aarch64 | ||
cmake_args: -A ARM64 | ||
- os: linux | ||
runs-on: ubuntu-22.04 | ||
toolchain: gcc | ||
c_compiler: gcc | ||
cpp_compiler: g++ | ||
container: null | ||
- os: linux | ||
platform: x86_64 | ||
container: quay.io/pypa/manylinux_2_28_x86_64:latest | ||
- os: linux | ||
platform: aarch64 | ||
# container: quay.io/pypa/manylinux_2_28_aarch64:latest | ||
- os: macos | ||
runs-on: macos-14 | ||
toolchain: clang | ||
c_compiler: clang | ||
cpp_compiler: clang++ | ||
container: null | ||
env: | ||
MACOSX_DEPLOYMENT_TARGET: "11.0" | ||
- os: macos | ||
platform: x86_64 | ||
cmake_args: -DCMAKE_APPLE_SILICON_PROCESSOR=x86_64 | ||
- os: macos | ||
platform: aarch64 | ||
cmake_args: -DCMAKE_APPLE_SILICON_PROCESSOR=arm64 | ||
name: build-${{ matrix.os }}-${{ matrix.platform }}-${{ matrix.toolchain }}-${{ matrix.build_type }} | ||
runs-on: ${{ matrix.runs-on }} | ||
container: ${{ matrix.container }} | ||
env: | ||
SCCACHE_GHA_ENABLED: "true" | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Read chromium version | ||
id: chromium-version | ||
uses: jaywcjlove/github-action-read-file@main | ||
with: | ||
localfile: chromium_version.txt | ||
- name: Use sccache-cache | ||
uses: mozilla-actions/[email protected] | ||
- name: Set up QEMU | ||
if: matrix.os == 'linux' && matrix.platform == 'aarch64' | ||
uses: docker/setup-qemu-action@v2 | ||
with: | ||
platforms: arm64 | ||
- name: Cross compile linux/aarch64 | ||
if: matrix.os == 'linux' && matrix.platform == 'aarch64' | ||
uses: addnab/docker-run-action@v3 | ||
with: | ||
image: quay.io/pypa/manylinux_2_28_aarch64:latest | ||
options: | | ||
--platform linux/arm64 | ||
--volume ${{ github.workspace }}:/workspace | ||
run: | | ||
dnf install -y libxcb libxcb-devel libX11-xcb libxkbcommon libxkbcommon-devel libxkbcommon-x11-devel mesa-vulkan-drivers | ||
cd /workspace | ||
cmake -B build \ | ||
${{ matrix.cmake_args }} \ | ||
-DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} \ | ||
-DCMAKE_C_COMPILER=${{ matrix.c_compiler }} \ | ||
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ | ||
-DCPACK_PACKAGE_FILE_NAME=webgpu-dawn-${{ steps.chromium-version.outputs.content }}-${{ matrix.os }}-${{ matrix.platform }} \ | ||
-S . | ||
cmake --build build --config ${{ matrix.build_type }} | ||
cpack --config build/CPackConfig.cmake | ||
-G ZIP | ||
-C ${{ matrix.build_type }} | ||
-B dist | ||
- name: Set up dependencies on linux | ||
if: matrix.os == 'linux' && matrix.platform == 'x86_64' | ||
run: > | ||
dnf install -y libxcb libxcb-devel libX11-xcb libxkbcommon libxkbcommon-devel libxkbcommon-x11-devel mesa-vulkan-drivers | ||
- name: Configure CMake | ||
if: ! (matrix.os = 'linux' && matrix.platform == 'aarch64') | ||
run: > | ||
cmake -B build | ||
${{ matrix.cmake_args }} | ||
-DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} | ||
-DCMAKE_C_COMPILER=${{ matrix.c_compiler }} | ||
-DCMAKE_C_COMPILER_LAUNCHER=sccache | ||
-DCMAKE_CXX_COMPILER_LAUNCHER=sccache | ||
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }} | ||
-DCPACK_PACKAGE_FILE_NAME=webgpu-dawn-${{ steps.chromium-version.outputs.content }}-${{ matrix.os }}-${{ matrix.platform }} | ||
-S . | ||
- name: Build | ||
if: ! (matrix.os = 'linux' && matrix.platform == 'aarch64') | ||
run: cmake --build build --config ${{ matrix.build_type }} | ||
- name: Test | ||
if: ! (matrix.os = 'linux' && matrix.platform == 'aarch64') | ||
working-directory: build | ||
run: | | ||
ctest --output-on-failure -C ${{ matrix.build_type }} | ||
- name: Package | ||
if: ! (matrix.os = 'linux' && matrix.platform == 'aarch64') | ||
run: > | ||
cpack --config build/CPackConfig.cmake | ||
-G ZIP | ||
-C ${{ matrix.build_type }} | ||
-B dist | ||
- name: Upload package artifacts | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: dist-${{ matrix.os }}-${{ matrix.platform }}-${{ matrix.build_type }} | ||
path: dist | ||
- name: Aniticipate crash dumps on windows | ||
if: matrix.os == 'windows-2022' | ||
working-directory: build | ||
run: | | ||
mkdir CrashDumps | ||
reg add "HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" /v DumpFolder /d ${{ github.workspace }}\build\CrashDumps /t REG_EXPAND_SZ /f | ||
- name: Upload crash dump | ||
if: failure() && contains(matrix.os, 'windows') | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: dawn_test_crash_dump | ||
path: | | ||
${{ github.workspace }}\build\CrashDumps\*.dmp | ||
publish: | ||
permissions: | ||
contents: write | ||
needs: | ||
- build | ||
runs-on: ubuntu-latest | ||
if: success() && contains(github.ref, 'tags/v') | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: set version (which gets used as release name) | ||
run: | | ||
echo "WEBGPU_DAWN_VERSION=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV | ||
shell: bash | ||
- name: Download All Artifacts | ||
uses: actions/download-artifact@v4 | ||
with: | ||
path: dist | ||
pattern: dist-* | ||
merge-multiple: true | ||
- name: Upload Release Assets | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
run: >- | ||
gh release create ${{ github.ref_name }} | ||
--generate-notes | ||
--title "webgpu-dawn-${{ github.ref_name }}" | ||
dist/*.zip |