forked from jspanchu/webgpu-dawn-binaries
-
Notifications
You must be signed in to change notification settings - Fork 0
156 lines (140 loc) · 4.53 KB
/
Copy pathcmake-multi-platform.yml
File metadata and controls
156 lines (140 loc) · 4.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
name: Build test and publish
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-2025
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
toolchain: gcc
c_compiler: gcc
cpp_compiler: g++
container: null
- os: linux
runs-on: ubuntu-24.04
platform: x86_64
container: quay.io/pypa/manylinux_2_28_x86_64:latest
- os: linux
runs-on: ubuntu-24.04-arm
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 }}
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: Set up dependencies on linux
if: matrix.os == 'linux'
run: >
dnf install -y libxcb libxcb-devel libX11-xcb libxkbcommon libxkbcommon-devel libxkbcommon-x11-devel mesa-vulkan-drivers
- name: Configure
run: >
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 .
- name: Build
run: cmake --build build --config ${{ matrix.build_type }}
- name: Test
working-directory: build
run: |
ctest --output-on-failure -C ${{ matrix.build_type }}
- name: Package
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