@@ -95,8 +95,13 @@ function build_cross_objects {
9595 set -eu
9696 target=$1
9797 if ! cache_exists barretenberg-$target -$hash .zst; then
98- (flock -x 200 && cd src/barretenberg/nodejs_module && yarn --immutable) 200> /tmp/bb-yarn.lock
99- build_preset zig-$target --target barretenberg nodejs_module vm2_stub circuit_checker honk
98+ if [[ " $target " == * -windows ]]; then
99+ # Windows builds exclude nodejs_module (N-API requires MSVC, not MinGW)
100+ AVM_TRANSPILER=0 build_preset zig-$target --target barretenberg vm2_stub circuit_checker honk
101+ else
102+ (flock -x 200 && cd src/barretenberg/nodejs_module && yarn --immutable) 200> /tmp/bb-yarn.lock
103+ build_preset zig-$target --target barretenberg nodejs_module vm2_stub circuit_checker honk
104+ fi
100105 fi
101106}
102107
@@ -114,6 +119,19 @@ function build_cross {
114119 inject_version build-zig-$target /bin/bb
115120}
116121
122+ # Cross compile Windows binary (bb.exe only, no nodejs_module).
123+ # Arg is target arch-os e.g. amd64-windows.
124+ function build_cross_windows {
125+ set -eu
126+ target=$1
127+ if ! cache_download barretenberg-$target -$hash .zst; then
128+ AVM_TRANSPILER=0 build_preset zig-$target --target bb --target bb-external
129+ cache_upload barretenberg-$target -$hash .zst build-zig-$target /{bin,lib}
130+ fi
131+ # Always inject version (even for cached binaries) to ensure correct version on release
132+ inject_version build-zig-$target /bin/bb.exe
133+ }
134+
117135# Build static library (.a) for iOS using Zig cross-compilation from Linux.
118136# Only produces static libraries (bb-external) — Zig cannot link iOS executables
119137# due to lack of TBD/dylib support. Requires iOS SDK headers (downloaded automatically).
@@ -258,6 +276,11 @@ function build_release_dir {
258276 # Package amd64-macos
259277 tar -czf build-release/barretenberg-amd64-darwin.tar.gz -C build-zig-amd64-macos/bin bb
260278
279+ # Package amd64-windows
280+ if [ -f build-zig-amd64-windows/bin/bb.exe ]; then
281+ tar -czf build-release/barretenberg-amd64-windows.tar.gz -C build-zig-amd64-windows/bin bb.exe
282+ fi
283+
261284 # Package static libraries for FFI bindings
262285 if [ -f $native_build_dir /lib/libbb-external.a ]; then
263286 tar -czf build-release/barretenberg-static-amd64-linux.tar.gz -C $native_build_dir /lib libbb-external.a
@@ -271,6 +294,9 @@ function build_release_dir {
271294 if [ -f build-zig-arm64-macos/lib/libbb-external.a ]; then
272295 tar -czf build-release/barretenberg-static-arm64-darwin.tar.gz -C build-zig-arm64-macos/lib libbb-external.a
273296 fi
297+ if [ -f build-zig-amd64-windows/lib/libbb-external.a ]; then
298+ tar -czf build-release/barretenberg-static-amd64-windows.tar.gz -C build-zig-amd64-windows/lib libbb-external.a
299+ fi
274300
275301 # Package iOS static libraries (cross-compiled with Zig from Linux)
276302 if [ -f build-zig-arm64-ios/lib/libbb-external.a ]; then
@@ -289,7 +315,7 @@ function build_release_dir {
289315 fi
290316}
291317
292- export -f build_preset build_native_objects build_cross_objects build_native build_cross build_ios build_android build_asan_fast build_wasm build_wasm_threads build_gcc_syntax_check_only build_fuzzing_syntax_check_only build_smt_verification inject_version
318+ export -f build_preset build_native_objects build_cross_objects build_native build_cross build_cross_windows build_ios build_android build_asan_fast build_wasm build_wasm_threads build_gcc_syntax_check_only build_fuzzing_syntax_check_only build_smt_verification inject_version
293319
294320function build {
295321 echo_header " bb cpp build"
@@ -311,6 +337,7 @@ function build {
311337 " build_cross arm64-linux" \
312338 " build_cross amd64-macos" \
313339 " build_cross arm64-macos" \
340+ " build_cross_windows amd64-windows" \
314341 " build_ios zig-arm64-ios" \
315342 " build_ios zig-arm64-ios-sim" \
316343 " build_android zig-arm64-android" \
0 commit comments