-
Notifications
You must be signed in to change notification settings - Fork 6
/
build.cmd
140 lines (111 loc) · 3.44 KB
/
build.cmd
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
@echo off
setlocal enabledelayedexpansion
cd %~dp0
rem
rem build architecture
rem
if "%1" equ "x64" (
set ARCH=x64
) else if "%1" equ "arm64" (
set ARCH=arm64
) else if "%1" neq "" (
echo Unknown target "%1" architecture!
exit /b 1
) else if "%PROCESSOR_ARCHITECTURE%" equ "AMD64" (
set ARCH=x64
) else if "%PROCESSOR_ARCHITECTURE%" equ "ARM64" (
set ARCH=arm64
)
rem
rem dependencies
rem
where /q git.exe || (
echo ERROR: "git.exe" not found
exit /b 1
)
where /q cmake.exe || (
echo ERROR: "cmake.exe" not found
exit /b 1
)
rem
rem 7-Zip
rem
if exist "%ProgramFiles%\7-Zip\7z.exe" (
set SZIP="%ProgramFiles%\7-Zip\7z.exe"
) else (
where /q 7za.exe || (
echo ERROR: 7-Zip installation or "7za.exe" not found
exit /b 1
)
set SZIP=7za.exe
)
rem
rem get depot tools
rem
set PATH=%CD%\depot_tools;%PATH%
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
if not exist depot_tools (
call git clone --depth=1 --no-tags --single-branch https://chromium.googlesource.com/chromium/tools/depot_tools.git || exit /b 1
)
rem
rem clone dawn
rem
if "%DAWN_COMMIT%" equ "" (
for /f "tokens=1 usebackq" %%F IN (`git ls-remote https://dawn.googlesource.com/dawn HEAD`) do set DAWN_COMMIT=%%F
)
if not exist dawn (
mkdir dawn
pushd dawn
call git init . || exit /b 1
call git remote add origin https://dawn.googlesource.com/dawn || exit /b 1
popd
)
pushd dawn
call git fetch origin %DAWN_COMMIT% || exit /b 1
call git checkout --force FETCH_HEAD || exit /b 1
copy /y scripts\standalone.gclient .gclient
"C:\Program Files\Git\usr\bin\sed.exe" -i.bak -e "/'third_party\/catapult'\: /,+3d" -e "/'third_party\/swiftshader'\: /,+3d" -e "/'third_party\/angle'\: /,+3d" -e "/'third_party\/webgpu-cts'\: /,+3d" -e "/'third_party\/vulkan-validation-layers\/src'\: /,+3d" -e "/'third_party\/khronos\/OpenGL-Registry'\: /,+3d" DEPS || exit /b 1
call gclient sync -f -D -R || exit /b 1
popd
rem
rem build dawn
rem
cmake ^
-S dawn ^
-B dawn.build-%ARCH% ^
-A %ARCH% ^
-D CMAKE_BUILD_TYPE=Release ^
-D CMAKE_POLICY_DEFAULT_CMP0091=NEW ^
-D CMAKE_POLICY_DEFAULT_CMP0092=NEW ^
-D CMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded ^
-D BUILD_SHARED_LIBS=OFF ^
-D BUILD_SAMPLES=OFF ^
-D DAWN_ENABLE_D3D12=ON ^
-D DAWN_ENABLE_D3D11=OFF ^
-D DAWN_ENABLE_NULL=OFF ^
-D DAWN_ENABLE_DESKTOP_GL=OFF ^
-D DAWN_ENABLE_OPENGLES=OFF ^
-D DAWN_ENABLE_VULKAN=OFF ^
-D DAWN_USE_GLFW=OFF ^
-D DAWN_BUILD_SAMPLES=OFF ^
-D TINT_BUILD_TESTS=OFF ^
|| exit /b 1
set CL=/Wv:18
cmake.exe --build dawn.build-%ARCH% --config Release --target webgpu_dawn --parallel || exit /b 1
rem
rem prepare output folder
rem
mkdir dawn-%ARCH%
echo %DAWN_COMMIT% > dawn-%ARCH%\commit.txt
copy /y dawn.build-%ARCH%\gen\include\dawn\webgpu.h dawn-%ARCH%
copy /y dawn.build-%ARCH%\Release\webgpu_dawn.dll dawn-%ARCH%
copy /y dawn.build-%ARCH%\src\dawn\native\Release\webgpu_dawn.lib dawn-%ARCH%
rem
rem Done!
rem
if "%GITHUB_WORKFLOW%" neq "" (
rem
rem GitHub actions stuff
rem
%SZIP% a -y -mx=9 dawn-%ARCH%-%BUILD_DATE%.zip dawn-%ARCH% || exit /b 1
)