Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move build system to zig build #101

Draft
wants to merge 102 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
102 commits
Select commit Hold shift + click to select a range
22a0326
turn on asan by default
martinfouilleul Mar 22, 2025
51a1a43
turn on ubsan and fix a couple UB
martinfouilleul Mar 22, 2025
32c0866
fix void pointer arithmetic in hash.c, which is not allowed by msvc
martinfouilleul Mar 22, 2025
3d4c9d7
fix ub f32 to int cast overflow when computing tile counts in wgpu_re…
martinfouilleul Mar 24, 2025
c1aff01
orca tool: casting error fixes
rdunnington Sep 18, 2024
fdc1561
wip build.zig: orca tool building
rdunnington Sep 18, 2024
6efb1a3
wip: runtime libs
rdunnington Sep 18, 2024
831cd9c
wip: file and directory hashing
rdunnington Sep 19, 2024
0ad5e49
wip build angle
rdunnington Sep 21, 2024
80159e9
wip: leverage build.zig.zon for dawn/angle dependencies
rdunnington Sep 21, 2024
f241435
wip: more work on angle build
rdunnington Sep 21, 2024
e8be1df
wip: custom build steps for angle/dawn sentinel hashes
rdunnington Sep 24, 2024
2a69ebf
moving angle/dawn build into standalone zig program
rdunnington Oct 1, 2024
aa21135
wip - added build_dependencies run steps to build.zig
rdunnington Oct 10, 2024
978bc5a
wip build deps - fixing bugs
rdunnington Oct 15, 2024
8d567e1
zig build angle working
rdunnington Oct 16, 2024
f0b9218
wip build dawn
rdunnington Oct 19, 2024
beb7e5a
wip - wired in dawn build to zig build
rdunnington Oct 19, 2024
73fa4f1
wip - dawn build working
rdunnington Oct 28, 2024
4c54384
wip - port not up-to-date help messages
rdunnington Oct 28, 2024
2801dd2
wip - working on libc
rdunnington Oct 28, 2024
3b9046a
wip - moved wgpu shader header generation into run step
rdunnington Oct 30, 2024
dde46b0
wip - wasm libc building
rdunnington Nov 9, 2024
28541b9
wip - output artifacts to build/bin
rdunnington Nov 11, 2024
4cd951c
wip - fixing libc variable names
rdunnington Nov 11, 2024
3da7edf
wip - stdatomic.h for libc
rdunnington Nov 12, 2024
070f075
wip - output final artifacts to build/ subdirs
rdunnington Nov 12, 2024
59a61f0
cleanup of unused code, and better clean command
rdunnington Nov 13, 2024
dc78de0
wip - package-sdk command working
rdunnington Dec 3, 2024
665c736
wip porting bindgen to zig
rdunnington Dec 22, 2024
731268b
untested zig bindgen
rdunnington Dec 23, 2024
e72e71c
rename zig bindgen
rdunnington Dec 23, 2024
f468414
hook up bindgen to build.zig
rdunnington Dec 23, 2024
99a58a1
core bindgen working
rdunnington Dec 24, 2024
c889c08
add generated wasmbind files to clean list
rdunnington Dec 25, 2024
ac086fb
fix a couple more minor bindgen bugs
rdunnington Dec 25, 2024
0bdc0bd
copy angle/dawn headers to ext
rdunnington Dec 25, 2024
14886b3
wip orca-install
rdunnington Dec 26, 2024
c2e69db
fix some strictness errors
rdunnington Dec 26, 2024
9273881
fix angle/dawn include path
rdunnington Dec 26, 2024
9289781
remove angle/dawn checksums
rdunnington Dec 28, 2024
88a171f
misc fixes
rdunnington Dec 28, 2024
0e4a436
re-fix libc build paths
rdunnington Jan 1, 2025
4f99d64
fixed libc objects
rdunnington Jan 3, 2025
a304a6c
fix bug in bindgen that prevented some stubs from being generated
rdunnington Jan 3, 2025
da341c6
package-sdk now copies orca.exe PDB debug symbols as well for debuggi…
rdunnington Jan 3, 2025
c574f8d
some 3rd party libs rely on undefined behavior - disable ubsan for those
rdunnington Jan 3, 2025
8adf502
orca_tool: updated orca.dll reference to orca_platform.dll
rdunnington Jan 3, 2025
40772ba
embed win32 app manifest + minor build.zig cleanup
rdunnington Jan 7, 2025
beb5685
add missing definitions for win32 dcomp API
rdunnington Jan 7, 2025
b8ee38c
build_dependencies: fix an API break in new compiler
rdunnington Jan 7, 2025
c869441
zig build clean: avoid deleting angle/dawn libs
rdunnington Jan 7, 2025
31fe851
build sketches
rdunnington Jan 11, 2025
4194b70
wip tests
rdunnington Jan 13, 2025
ca4a417
fix a couple bugs when building from scratch
rdunnington Jan 13, 2025
1fcaa95
fix bug introduced into tests
rdunnington Jan 13, 2025
9ee357c
tests: use config.testfile instead of always main.c
rdunnington Jan 13, 2025
e7939bf
macos: angle and dawn builds working
rdunnington Jan 30, 2025
8a061bd
macos: orca platform building
rdunnington Jan 30, 2025
57ff3d3
macos: curl building
rdunnington Jan 31, 2025
9783a5b
macos: fix orca platform tool copy
rdunnington Jan 31, 2025
b28254d
windows: fix build
rdunnington Feb 2, 2025
bf0df8b
inline curl build and link with zlib
rdunnington Feb 2, 2025
330376e
move angle/dawn to be lazy dependencies to avoid downloading them
rdunnington Feb 2, 2025
cca1586
wip - orca install fixes
rdunnington Mar 3, 2025
20b73b2
zig 0.14 fixes
rdunnington Mar 8, 2025
3ec5039
delete some unused code
rdunnington Mar 8, 2025
184033e
fixes to build script and interfaces to support ci
rdunnington Mar 15, 2025
e0857d6
allow workflow_dispatch on build-all.yaml to test changes in branches
rdunnington Mar 15, 2025
6f6e218
fix ci
rdunnington Mar 15, 2025
7503630
fix ci: try 2
rdunnington Mar 16, 2025
aef5aa4
fix ci: try 2
rdunnington Mar 16, 2025
a81f1a7
fix ci: try 3
rdunnington Mar 16, 2025
bf4e753
fix ci: try 4
rdunnington Mar 17, 2025
25533b6
fix ci: try 5
rdunnington Mar 17, 2025
668db3c
fix angle build program
rdunnington Mar 17, 2025
a063868
delete old python comments from bindgen.zig
rdunnington Mar 22, 2025
abea551
ci try 6
rdunnington Mar 22, 2025
543ee8b
ci try 7
rdunnington Mar 22, 2025
993d9ce
ci try 8
rdunnington Mar 22, 2025
185b88b
fix ci try 9
rdunnington Mar 22, 2025
b8d733c
ci try 9: extra logging
rdunnington Mar 23, 2025
9d5da43
avoid having Homebrew check for updates when building dawn
rdunnington Mar 23, 2025
a873078
fix missing dependency for package-sdk step
rdunnington Mar 23, 2025
83ba977
fixing ci bugs
rdunnington Mar 23, 2025
06f71e8
fix ci try 11: explicit job step ID
rdunnington Mar 23, 2025
6e28f5b
remove unneeded #define
rdunnington Mar 23, 2025
00d8663
fix sketch build: UI bitrotted :(
rdunnington Mar 23, 2025
0352838
fix gles API bindgen dependencies
rdunnington Mar 23, 2025
d8832fe
ci try 12: speculative fix for bad newlines in generated file
rdunnington Mar 23, 2025
892cbf9
ci: add option to ignore cache
rdunnington Mar 23, 2025
cf8153e
ci try 2
rdunnington Mar 23, 2025
0c848ed
ci try 3
rdunnington Mar 23, 2025
4413a8b
ci try 4
rdunnington Mar 23, 2025
a6963fd
ci try 5
rdunnington Mar 23, 2025
b6ed8bf
ci try 6
rdunnington Mar 23, 2025
5b2d776
ci try 7
rdunnington Mar 23, 2025
3e41038
ci try 8
rdunnington Mar 23, 2025
9b0fec9
ci: build tests and sketches
rdunnington Mar 24, 2025
6fc1468
oops messed up sketches build
rdunnington Mar 24, 2025
5ff9fc4
ci tests: fix wrong shell on macos
rdunnington Mar 29, 2025
a8b6045
re-enable ubsan on orca platform/runtime/tool
rdunnington Mar 29, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
101 changes: 72 additions & 29 deletions .github/workflows/build-all.yaml
Original file line number Diff line number Diff line change
@@ -1,11 +1,25 @@
name: build-all

on:
workflow_dispatch:
inputs:
version:
type: string
required: false
ignore-cache:
required: false
type: string
default: false
workflow_call:
inputs:
version:
type: string
required: false
ignore-cache:
required: false
type: string
default: false

push:
branches:
- main
Expand All @@ -22,18 +36,40 @@ jobs:

build-angle-mac:
uses: ./.github/workflows/build-angle-mac.yaml
with:
ignore-cache:

build-angle-win:
uses: ./.github/workflows/build-angle-win.yaml

determine-version:
runs-on: ubuntu-latest
outputs:
version: ${{ steps.determine-version.outputs.version }}
steps:
- name: Determine version
id: determine-version
run: |
if [ "${{ inputs.version }}" != '' ] ; then
echo Selecting version: ${{ inputs.version }}
echo "version='${{ inputs.version }}'" >> "$GITHUB_OUTPUT"
else
echo Selecting version: ${{ github.ref_name }}
echo "version='${{ github.ref_name }}'" >> "$GITHUB_OUTPUT"
fi

build-win:
needs: [build-dawn-win, build-angle-win]
needs: [build-dawn-win, build-angle-win, determine-version]
runs-on: windows-2022
steps:
- uses: actions/setup-python@v4
with:
python-version: '3.10'

- uses: mlugg/setup-zig@v1
with:
version: 0.14.0

- uses: actions/checkout@v4

- uses: actions/download-artifact@v4
Expand All @@ -50,36 +86,39 @@ jobs:
run: |
xcopy artifact\angle-windows-x64 build\angle.out\ /s /y

- name: Build
- name: Build and run tests
shell: cmd
run: |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
orcadev.bat build --release --version ${{github.ref_name}} || exit 1
zig build test

- name: Package
- name: Build sketches
shell: cmd
run: |
if [${{ inputs.version }}]==[] (
orcadev.bat install orca || exit 1
tar --format=ustar -cvzf orca-windows.tar.gz orca
) else (
orcadev.bat install --version ${{ inputs.version }} orca || exit 1
zig build sketches

- name: Build and Package
shell: cmd
run: |
zig build -Doptimize=ReleaseFast -Dversion=${{ needs.determine-version.outputs.version }} -Dsdk-path=orca --summary all
tar --format=ustar -cvzf orca-windows.tar.gz orca
)

- uses: actions/upload-artifact@v4
with:
name: orca-windows
path: orca-windows.tar.gz

build-macos-x64:
needs: [build-dawn-mac, build-angle-mac]
needs: [build-dawn-mac, build-angle-mac, determine-version]
runs-on: macos-13
steps:
- uses: actions/setup-python@v4
with:
python-version: '3.10'

- uses: mlugg/setup-zig@v1
with:
version: 0.14.0

- uses: actions/checkout@v4

- uses: actions/download-artifact@v4
Expand All @@ -96,17 +135,17 @@ jobs:
mkdir -p build
cp -r artifact/angle-mac-x64 build/angle.out

- name: Build
- name: Build and run tests
run: |
./orcadev build --release --version ${{github.ref_name}}
zig build test

- name: Package
- name: Build sketches
run: |
if [ "${{ inputs.version }}" != '' ] ; then
./orcadev install --version ${{ inputs.version }} orca
else
./orcadev install orca
fi
zig build sketches

- name: Build and Package
run: |
zig build -Doptimize=ReleaseFast -Dversion=${{ needs.determine-version.outputs.version }} -Dsdk-path=orca --summary all
tar --format=ustar -czf orca-mac-x64.tar.gz orca

- uses: actions/upload-artifact@v4
Expand All @@ -115,13 +154,17 @@ jobs:
path: orca-mac-x64.tar.gz

build-macos-arm64:
needs: [build-dawn-mac, build-angle-mac]
needs: [build-dawn-mac, build-angle-mac, determine-version]
runs-on: macos-14
steps:
- uses: actions/setup-python@v4
with:
python-version: '3.10'

- uses: mlugg/setup-zig@v1
with:
version: 0.14.0

- uses: actions/checkout@v4

- uses: actions/download-artifact@v4
Expand All @@ -138,17 +181,17 @@ jobs:
mkdir -p build
cp -r artifact/angle-mac-arm64 build/angle.out

- name: Build
- name: Build and run tests
run: |
./orcadev build --release --version ${{github.ref_name}}
zig build test

- name: Package
- name: Build sketches
run: |
if [ "${{ inputs.version }}" != '' ] ; then
./orcadev install --version ${{ inputs.version }} orca
else
./orcadev install orca
fi
zig build sketches

- name: Build and Package
run: |
zig build -Doptimize=ReleaseFast -Dversion=${{ needs.determine-version.outputs.version }} -Dsdk-path=orca --summary all
tar --format=ustar -czf orca-mac-arm64.tar.gz orca

- uses: actions/upload-artifact@v4
Expand Down
21 changes: 18 additions & 3 deletions .github/workflows/build-angle-mac.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,17 @@ name: build-angle-mac

on:
workflow_dispatch:
inputs:
ignore-cache:
required: false
type: string
default: false
workflow_call:
inputs:
ignore-cache:
required: false
type: string
default: false

jobs:
build-mac:
Expand All @@ -17,24 +27,29 @@ jobs:
with:
python-version: '3.10'

- uses: mlugg/setup-zig@v1
with:
version: 0.14.0

- name: Angle version
id: angle-version
run: |
echo "ANGLE_COMMIT=$(cat deps/angle-commit.txt)" >> $GITHUB_OUTPUT
echo "ANGLE_COMMIT=$(zig build print-sha-angle)" >> $GITHUB_OUTPUT
ARCH=${{ runner.arch }}
echo "LOWERCASE_ARCH=$(echo $ARCH | tr '[:upper:]' '[:lower:]')" >> $GITHUB_OUTPUT

- name: Cache
id: cache-angle
uses: actions/cache@v3
if: inputs.ignore-cache != 'true'
with:
path: build/angle.out
key: angle-${{ runner.os }}-${{ runner.arch }}-${{ steps.angle-version.outputs.ANGLE_COMMIT }}

- name: Build Angle
if: steps.cache-angle.outputs.cache-hit != 'true'
if: steps.cache-angle.outputs.cache-hit != 'true' || inputs.ignore-cache == 'true'
run: |
./orcadev build-angle --release
zig build angle -Doptimize=ReleaseFast

- uses: actions/upload-artifact@v4
with:
Expand Down
22 changes: 19 additions & 3 deletions .github/workflows/build-angle-win.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,17 @@ name: build-angle-win

on:
workflow_dispatch:
inputs:
ignore-cache:
required: false
type: string
default: false
workflow_call:
inputs:
ignore-cache:
required: false
type: string
default: false

jobs:
build-win:
Expand All @@ -14,26 +24,32 @@ jobs:
with:
python-version: '3.10'

- uses: mlugg/setup-zig@v1
with:
version: 0.14.0

- name: Angle version
id: angle-version
shell: cmd
run: |
@chcp 65001>nul
set /p ANGLE_COMMIT=<deps/angle-commit.txt
zig build print-sha-angle > angle-commit.txt
set /p ANGLE_COMMIT=<angle-commit.txt
echo ANGLE_COMMIT=%ANGLE_COMMIT% >> %GITHUB_OUTPUT%

- name: Cache
id: cache-angle
uses: actions/cache@v3
if: inputs.ignore-cache != 'true'
with:
path: build/angle.out
key: angle-${{ runner.os }}-${{ runner.arch }}-${{ steps.angle-version.outputs.ANGLE_COMMIT }}

- name: Build Angle
if: steps.cache-angle.outputs.cache-hit != 'true'
if: steps.cache-angle.outputs.cache-hit != 'true' || inputs.ignore-cache == 'true'
shell: cmd
run: |
orcadev build-angle --release
zig build angle -Doptimize=ReleaseFast

- uses: actions/upload-artifact@v4
with:
Expand Down
21 changes: 18 additions & 3 deletions .github/workflows/build-dawn-mac.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,17 @@ name: build-dawn-mac

on:
workflow_dispatch:
inputs:
ignore-cache:
required: false
type: string
default: false
workflow_call:
inputs:
ignore-cache:
required: false
type: string
default: false

jobs:
build-mac:
Expand All @@ -16,25 +26,30 @@ jobs:
- uses: actions/setup-python@v4
with:
python-version: '3.10'

- uses: mlugg/setup-zig@v1
with:
version: 0.14.0

- name: Dawn version
id: dawn-version
run: |
echo "DAWN_COMMIT=$(cat deps/dawn-commit.txt)" >> $GITHUB_OUTPUT
echo "DAWN_COMMIT=$(zig build print-sha-dawn)" >> $GITHUB_OUTPUT
ARCH=${{ runner.arch }}
echo "LOWERCASE_ARCH=$(echo $ARCH | tr '[:upper:]' '[:lower:]')" >> $GITHUB_OUTPUT

- name: Cache
id: cache-dawn
uses: actions/cache@v3
if: inputs.ignore-cache != 'true'
with:
path: build/dawn.out
key: dawn-${{ runner.os }}-${{ runner.arch }}-${{ steps.dawn-version.outputs.DAWN_COMMIT }}

- name: Build Dawn
if: steps.cache-dawn.outputs.cache-hit != 'true'
if: steps.cache-dawn.outputs.cache-hit != 'true' || inputs.ignore-cache == 'true'
run: |
./orcadev build-dawn --release --parallel 4
zig build dawn -Doptimize=ReleaseFast

- uses: actions/upload-artifact@v4
with:
Expand Down
Loading