Skip to content

Commit b9d8eb1

Browse files
authored
chore(🏗️): update build script (#225)
1 parent 300e1ad commit b9d8eb1

File tree

4 files changed

+75
-19
lines changed

4 files changed

+75
-19
lines changed

.github/workflows/build-dawn.yml

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,33 +8,30 @@ jobs:
88
uses: actions/checkout@v2
99
with:
1010
submodules: true
11-
11+
- name: Initialize Dawn's abseil-cpp submodule
12+
run: |
13+
cd externals/dawn
14+
git submodule update --init third_party/abseil-cpp
1215
- name: Setup Android NDK
1316
id: setup-ndk
1417
uses: nttld/setup-ndk@v1
1518
with:
1619
ndk-version: r26d
17-
1820
- name: Set ANDROID_NDK
1921
run: echo "ANDROID_NDK=$ANDROID_HOME/ndk-bundle" >> $GITHUB_ENV
20-
2122
- name: Setup Ninja
2223
uses: seanmiddleditch/gha-setup-ninja@master
23-
2424
- uses: actions/setup-node@v3
2525
with:
2626
cache: 'yarn'
2727
cache-dependency-path: yarn.lock
28-
2928
- name: Install Package
3029
run: yarn install --frozen-lockfile
31-
3230
- name: Build Dawn
3331
working-directory: packages/webgpu
3432
env:
3533
ANDROID_NDK: ${{ steps.setup-ndk.outputs.ndk-path }}
3634
run: yarn build-dawn
37-
3835
- name: Upload artifacts - Dawn Library Files
3936
if: github.ref == 'refs/heads/main'
4037
uses: actions/upload-artifact@v4

packages/webgpu/scripts/build/apple.toolchain.cmake

Lines changed: 42 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@
7474
# WATCHOSCOMBINED = Build for armv7k arm64_32 x86_64 watchOS + watchOS Simulator. Combined into FAT STATIC lib (only supported on 3.14+ of CMake with "-G Xcode" argument in combination with the "cmake --install" CMake build step)
7575
# SIMULATOR_WATCHOS = Build for x86_64 for watchOS Simulator.
7676
# SIMULATORARM64_WATCHOS = Build for arm64 for watchOS Simulator.
77+
# SIMULATOR_WATCHOSCOMBINED = Build for arm64 x86_64 for watchOS Simulator. Combined into FAT STATIC lib (supported on 3.14+ of CMakewith "-G Xcode" argument ONLY)
7778
# MAC = Build for x86_64 macOS.
7879
# MAC_ARM64 = Build for Apple Silicon macOS.
7980
# MAC_UNIVERSAL = Combined build for x86_64 and Apple Silicon on macOS.
@@ -166,7 +167,7 @@ set(ENV{_IOS_TOOLCHAIN_HAS_RUN} true)
166167
list(APPEND _supported_platforms
167168
"OS" "OS64" "OS64COMBINED" "SIMULATOR" "SIMULATOR64" "SIMULATORARM64" "SIMULATOR64COMBINED"
168169
"TVOS" "TVOSCOMBINED" "SIMULATOR_TVOS" "SIMULATORARM64_TVOS"
169-
"WATCHOS" "WATCHOSCOMBINED" "SIMULATOR_WATCHOS" "SIMULATORARM64_WATCHOS"
170+
"WATCHOS" "WATCHOSCOMBINED" "SIMULATOR_WATCHOS" "SIMULATORARM64_WATCHOS" "SIMULATOR_WATCHOSCOMBINED"
170171
"MAC" "MAC_ARM64" "MAC_UNIVERSAL"
171172
"VISIONOS" "SIMULATOR_VISIONOS" "VISIONOSCOMBINED"
172173
"MAC_CATALYST" "MAC_CATALYST_ARM64" "MAC_CATALYST_UNIVERSAL")
@@ -461,12 +462,12 @@ elseif(PLATFORM_INT STREQUAL "WATCHOSCOMBINED")
461462
if(MODERN_CMAKE)
462463
if(NOT ARCHS)
463464
if (XCODE_VERSION_INT VERSION_GREATER 10.0)
464-
set(ARCHS armv7k arm64_32 i386)
465-
set(APPLE_TARGET_TRIPLE_INT arm64_32-i386-apple-watchos${DEPLOYMENT_TARGET})
465+
set(ARCHS armv7k arm64_32 x86_64)
466+
set(APPLE_TARGET_TRIPLE_INT arm64_32-x86_64-apple-watchos${DEPLOYMENT_TARGET})
466467
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchos*] "armv7k arm64_32")
467-
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchsimulator*] "i386")
468+
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchsimulator*] "x86_64")
468469
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchos*] "armv7k arm64_32")
469-
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchsimulator*] "i386")
470+
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchsimulator*] "x86_64")
470471
else()
471472
set(ARCHS armv7k i386)
472473
set(APPLE_TARGET_TRIPLE_INT arm-i386-apple-watchos${DEPLOYMENT_TARGET})
@@ -484,8 +485,13 @@ elseif(PLATFORM_INT STREQUAL "WATCHOSCOMBINED")
484485
elseif(PLATFORM_INT STREQUAL "SIMULATOR_WATCHOS")
485486
set(SDK_NAME watchsimulator)
486487
if(NOT ARCHS)
487-
set(ARCHS i386)
488-
set(APPLE_TARGET_TRIPLE_INT i386-apple-watchos${DEPLOYMENT_TARGET}-simulator)
488+
if (XCODE_VERSION_INT VERSION_GREATER 10.0)
489+
set(ARCHS x86_64)
490+
set(APPLE_TARGET_TRIPLE_INT x86_64-apple-watchos${DEPLOYMENT_TARGET}-simulator)
491+
else()
492+
set(ARCHS i386)
493+
set(APPLE_TARGET_TRIPLE_INT i386-apple-watchos${DEPLOYMENT_TARGET}-simulator)
494+
endif()
489495
else()
490496
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos${DEPLOYMENT_TARGET}-simulator)
491497
endif()
@@ -497,6 +503,31 @@ elseif(PLATFORM_INT STREQUAL "SIMULATORARM64_WATCHOS")
497503
else()
498504
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos${DEPLOYMENT_TARGET}-simulator)
499505
endif()
506+
elseif(PLATFORM_INT STREQUAL "SIMULATOR_WATCHOSCOMBINED")
507+
set(SDK_NAME watchsimulator)
508+
if(MODERN_CMAKE)
509+
if(NOT ARCHS)
510+
if (XCODE_VERSION_INT VERSION_GREATER 12.0)
511+
set(ARCHS arm64 x86_64)
512+
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchos*] "")
513+
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchsimulator*] "arm64 x86_64")
514+
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchos*] "")
515+
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchsimulator*] "arm64 x86_64")
516+
set(APPLE_TARGET_TRIPLE_INT arm64_x86_64-apple-watchos${DEPLOYMENT_TARGET}-simulator)
517+
else()
518+
set(ARCHS arm64 i386)
519+
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchos*] "")
520+
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchsimulator*] "i386")
521+
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchos*] "")
522+
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchsimulator*] "i386")
523+
set(APPLE_TARGET_TRIPLE_INT arm64_i386-apple-watchos${DEPLOYMENT_TARGET}-simulator)
524+
endif()
525+
else()
526+
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos${DEPLOYMENT_TARGET}-simulator)
527+
endif()
528+
else()
529+
message(FATAL_ERROR "Please make sure that you are running CMake 3.14+ to make the SIMULATOR_WATCHOSCOMBINED setting work")
530+
endif()
500531
elseif(PLATFORM_INT STREQUAL "SIMULATOR_VISIONOS")
501532
set(SDK_NAME xrsimulator)
502533
if(NOT ARCHS)
@@ -554,8 +585,9 @@ elseif(PLATFORM_INT STREQUAL "MAC_UNIVERSAL")
554585
if(NOT ARCHS)
555586
set(ARCHS "x86_64;arm64")
556587
endif()
557-
string(REPLACE ";" "-" ARCHS_SPLIT "${ARCHS}")
558-
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-macosx${DEPLOYMENT_TARGET})
588+
# For universal builds, don't set target triple - let CMake handle it
589+
# string(REPLACE ";" "-" ARCHS_SPLIT "${ARCHS}")
590+
# set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-macosx${DEPLOYMENT_TARGET})
559591
elseif(PLATFORM_INT STREQUAL "MAC_CATALYST_UNIVERSAL")
560592
set(SDK_NAME macosx)
561593
if(NOT ARCHS)
@@ -1142,4 +1174,4 @@ macro(find_host_package)
11421174
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH)
11431175
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH)
11441176
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE BOTH)
1145-
endmacro(find_host_package)
1177+
endmacro(find_host_package)

packages/webgpu/scripts/build/dawn.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,9 @@ const apple = {
9696
(async () => {
9797
process.chdir("../..");
9898
process.chdir("externals/dawn");
99-
$("git reset --hard HEAD");
99+
$(
100+
"git reset --hard HEAD && cd third_party/abseil-cpp && git reset --hard HEAD && cd ../..",
101+
);
100102
$(`git apply ${__dirname}/static_build.patch`);
101103
process.chdir("../..");
102104
console.log("Copy headers");

packages/webgpu/scripts/build/static_build.patch

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
diff --git a/src/cmake/BundleLibraries.cmake b/src/cmake/BundleLibraries.cmake
2-
index 046a6af10d..5a63ac3d6d 100644
2+
index 046a6af10d..ee272710fd 100644
33
--- a/src/cmake/BundleLibraries.cmake
44
+++ b/src/cmake/BundleLibraries.cmake
55
@@ -66,8 +66,11 @@ function(bundle_libraries output_target)
@@ -16,3 +16,28 @@ index 046a6af10d..5a63ac3d6d 100644
1616
add_dependencies(${output_target} ${ARGN})
1717

1818
endfunction()
19+
Submodule third_party/abseil-cpp contains modified content
20+
diff --git a/third_party/abseil-cpp/absl/copts/AbseilConfigureCopts.cmake b/third_party/abseil-cpp/absl/copts/AbseilConfigureCopts.cmake
21+
index 3f737c8..9b8bb4b 100644
22+
--- a/third_party/abseil-cpp/absl/copts/AbseilConfigureCopts.cmake
23+
+++ b/third_party/abseil-cpp/absl/copts/AbseilConfigureCopts.cmake
24+
@@ -11,6 +11,11 @@ else()
25+
endif()
26+
27+
if(APPLE AND CMAKE_CXX_COMPILER_ID MATCHES [[Clang]])
28+
+ # Fix for iOS/visionOS ARM64 builds - skip x86_64 flags when building for ARM64 only
29+
+ if((CMAKE_SYSTEM_NAME STREQUAL "iOS" OR CMAKE_SYSTEM_NAME STREQUAL "visionOS") AND CMAKE_OSX_ARCHITECTURES MATCHES "arm64" AND NOT CMAKE_OSX_ARCHITECTURES MATCHES "x86_64")
30+
+ set(ABSL_RANDOM_RANDEN_COPTS "${ABSL_RANDOM_HWAES_ARM64_FLAGS}")
31+
+ list(APPEND ABSL_RANDOM_RANDEN_COPTS "-Wno-unused-command-line-argument")
32+
+ else()
33+
# Some CMake targets (not known at the moment of processing) could be set to
34+
# compile for multiple architectures as specified by the OSX_ARCHITECTURES
35+
# property, which is target-specific. We should neither inspect nor rely on
36+
@@ -52,6 +57,7 @@ if(APPLE AND CMAKE_CXX_COMPILER_ID MATCHES [[Clang]])
37+
if(ABSL_RANDOM_RANDEN_COPTS AND NOT ABSL_RANDOM_RANDEN_COPTS_WARNING)
38+
list(APPEND ABSL_RANDOM_RANDEN_COPTS "-Wno-unused-command-line-argument")
39+
endif()
40+
+ endif() # End iOS ARM64 fix
41+
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|amd64|AMD64")
42+
if (MSVC)
43+
set(ABSL_RANDOM_RANDEN_COPTS "${ABSL_RANDOM_HWAES_MSVC_X64_FLAGS}")

0 commit comments

Comments
 (0)