Commit db49ad2
committed
Add Windows ARM64 build and release support
Add end-to-end support for building, testing, and releasing workerd on
Windows ARM64 (aarch64-pc-windows-msvc). This enables `npm install workerd`
to work natively on Windows ARM64 devices (e.g. Snapdragon laptops) via
the new @cloudflare/workerd-windows-arm64 package.
Bazel build system:
- Define arm64_windows-clang-cl platform in BUILD.bazel
- Add build:windows_arm64 config overriding the toolchain and execution
platform from x64 to ARM64
- Add build:release_windows_arm64 composing release_windows + windows_arm64
- Add build:ci-windows-arm64 for CI release builds
Rust toolchain:
- Register aarch64-pc-windows-msvc in RUST_TARGET_TRIPLES so rules_rust
downloads and configures a Rust toolchain for the new target
- Add the triple to supported_platform_triples in crates_vendor so the
Cargo dependency graph resolves for Windows ARM64
- Add win_arm64 config_setting_group and wire cargo-bazel to use the x64
binary under WoW64 emulation (no native ARM64 build available)
Host tools:
- Add @bazel_tools//src/conditions:windows_arm64 entries to wasm-tools
and clang-tidy selects, falling back to x64 binaries under emulation
NPM distribution:
- Create npm/workerd-windows-arm64/ package (os: win32, cpu: arm64)
- Add "win32 arm64 LE" to knownPackages in node-platform.ts
- Add @cloudflare/workerd-windows-arm64 to optionalDependencies in the
workerd meta-package and build-shim-package.mjs
CI/CD:
- Add windows-arm64 build matrix entry in release.yml using the
windows-11-arm GitHub Actions runner
- Add windows-arm64 upload-artifacts entry for release asset publishing
and npm per-arch package publishing
- Add windows-arm64 to test.yml matrix (debug builds excluded, matching
the x64 Windows exclusion for disk space reasons)
Note: the @local_config_cc toolchain name for ARM64 Windows is
auto-generated by Bazel based on what it discovers on the host. If the
first CI run fails with a toolchain resolution error, query
@local_config_cc//:all on the runner to find the correct label.
Made-with: Cursor1 parent 862a428 commit db49ad2
13 files changed
Lines changed: 71 additions & 3 deletions
File tree
- .github/workflows
- build
- deps
- deps/rust
- npm
- lib
- scripts
- workerd-windows-arm64
- workerd
- tools
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
346 | 346 | | |
347 | 347 | | |
348 | 348 | | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
349 | 355 | | |
350 | 356 | | |
351 | 357 | | |
| |||
435 | 441 | | |
436 | 442 | | |
437 | 443 | | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
438 | 447 | | |
439 | 448 | | |
440 | 449 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
104 | 104 | | |
105 | 105 | | |
106 | 106 | | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
107 | 112 | | |
108 | 113 | | |
109 | 114 | | |
| |||
129 | 134 | | |
130 | 135 | | |
131 | 136 | | |
132 | | - | |
133 | | - | |
134 | 137 | | |
135 | 138 | | |
136 | 139 | | |
| |||
145 | 148 | | |
146 | 149 | | |
147 | 150 | | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
148 | 154 | | |
149 | 155 | | |
150 | 156 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
37 | 37 | | |
38 | 38 | | |
39 | 39 | | |
| 40 | + | |
40 | 41 | | |
41 | 42 | | |
42 | 43 | | |
| |||
57 | 58 | | |
58 | 59 | | |
59 | 60 | | |
| 61 | + | |
| 62 | + | |
60 | 63 | | |
61 | 64 | | |
62 | 65 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
62 | 62 | | |
63 | 63 | | |
64 | 64 | | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
65 | 74 | | |
66 | 75 | | |
67 | 76 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | | - | |
| 11 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
88 | 88 | | |
89 | 89 | | |
90 | 90 | | |
| 91 | + | |
| 92 | + | |
91 | 93 | | |
92 | 94 | | |
93 | 95 | | |
94 | 96 | | |
95 | 97 | | |
96 | 98 | | |
| 99 | + | |
97 | 100 | | |
98 | 101 | | |
99 | 102 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| 11 | + | |
| 12 | + | |
11 | 13 | | |
12 | 14 | | |
13 | 15 | | |
| |||
36 | 38 | | |
37 | 39 | | |
38 | 40 | | |
| 41 | + | |
39 | 42 | | |
40 | 43 | | |
41 | 44 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
45 | 45 | | |
46 | 46 | | |
47 | 47 | | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
48 | 56 | | |
49 | 57 | | |
50 | 58 | | |
51 | 59 | | |
52 | 60 | | |
53 | 61 | | |
| 62 | + | |
| 63 | + | |
54 | 64 | | |
55 | 65 | | |
56 | 66 | | |
| |||
82 | 92 | | |
83 | 93 | | |
84 | 94 | | |
| 95 | + | |
85 | 96 | | |
86 | 97 | | |
87 | 98 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
| 20 | + | |
20 | 21 | | |
21 | 22 | | |
22 | 23 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
| 20 | + | |
20 | 21 | | |
21 | 22 | | |
22 | 23 | | |
| |||
0 commit comments