From 95bbfd3406cc5d6a53864bc86f3a485a57fc2ac7 Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Thu, 17 Jul 2025 17:46:01 +0100 Subject: [PATCH 1/3] build-script: allow `--test-wasm-stdlib` without `--build-wasm-stdlib` This allows testing Wasm stdlib without rebuilding WASI sysroot and stdlib, while some changes are still detected by ninja as dependencies and are rebuilt, which is great for local incremental builds. --- utils/build_swift/build_swift/driver_arguments.py | 2 ++ .../swift_build_support/build_script_invocation.py | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/utils/build_swift/build_swift/driver_arguments.py b/utils/build_swift/build_swift/driver_arguments.py index df99e9553d4f4..09f5b8a0f5894 100644 --- a/utils/build_swift/build_swift/driver_arguments.py +++ b/utils/build_swift/build_swift/driver_arguments.py @@ -829,6 +829,8 @@ def create_argument_parser(): option(['--build-wasm-stdlib'], toggle_true('build_wasmstdlib'), help='build the stdlib for WebAssembly target into a' 'separate build directory ') + option('--test-wasm-stdlib', toggle_true('test_wasmstdlib'), + help='test stdlib for WebAssembly') option(['--wasmkit'], toggle_true('build_wasmkit'), help='build WasmKit') option(['--install-wasmkit'], toggle_true('install_wasmkit'), diff --git a/utils/swift_build_support/swift_build_support/build_script_invocation.py b/utils/swift_build_support/swift_build_support/build_script_invocation.py index 7b78dbca1d325..c63f29ee52845 100644 --- a/utils/swift_build_support/swift_build_support/build_script_invocation.py +++ b/utils/swift_build_support/swift_build_support/build_script_invocation.py @@ -683,7 +683,7 @@ def compute_product_pipelines(self): builder.add_product(products.WasmKit, is_enabled=self.args.build_wasmkit) builder.add_product(products.WasmStdlib, - is_enabled=self.args.build_wasmstdlib) + is_enabled=self.args.build_wasmstdlib or self.args.test_wasmstdlib) builder.add_product(products.WasmThreadsStdlib, is_enabled=self.args.build_wasmstdlib) builder.add_product(products.WasmSwiftSDK, From c798cf0bb5bf4be1fa60de71621f588bab543bc5 Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Thu, 17 Jul 2025 21:36:53 +0100 Subject: [PATCH 2/3] Updated `expected_options` and defaults in `driver_arguments` --- utils/build_swift/build_swift/driver_arguments.py | 3 +++ utils/build_swift/tests/expected_options.py | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/utils/build_swift/build_swift/driver_arguments.py b/utils/build_swift/build_swift/driver_arguments.py index 09f5b8a0f5894..e47fd450231c5 100644 --- a/utils/build_swift/build_swift/driver_arguments.py +++ b/utils/build_swift/build_swift/driver_arguments.py @@ -292,6 +292,9 @@ def _apply_default_arguments(args): args.test_xros_host = False args.test_android_host = False + if args.build_wasmstdlib: + args.test_wasmstdlib = True + def create_argument_parser(): """Return a configured argument parser.""" diff --git a/utils/build_swift/tests/expected_options.py b/utils/build_swift/tests/expected_options.py index 56c3d38e1b635..dddb505174e2c 100644 --- a/utils/build_swift/tests/expected_options.py +++ b/utils/build_swift/tests/expected_options.py @@ -328,7 +328,7 @@ 'test_swiftformat': False, 'test_swiftdocc': False, 'test_toolchainbenchmarks': False, - 'test_wasmstdlib': True, + 'test_wasmstdlib': False, 'tvos': False, 'tvos_all': False, 'validation_test': None, @@ -591,6 +591,7 @@ class BuildScriptImplOption(_BaseOption): SetTrueOption('--swiftdocc', dest='build_swiftdocc'), SetTrueOption('--build-minimal-stdlib', dest='build_minimalstdlib'), SetTrueOption('--build-wasm-stdlib', dest='build_wasmstdlib'), + SetTrueOption('--test-wasm-stdlib', dest='test_wasmstdlib'), SetTrueOption('--wasmkit', dest='build_wasmkit'), SetTrueOption('--build-stdlib-docs'), SetTrueOption('--preview-stdlib-docs'), From cf0e96c84baeaba5db987c1addf76cf3155dc33f Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Mon, 21 Jul 2025 12:14:48 +0100 Subject: [PATCH 3/3] build_script_invocation.py: add a note about `wasi-sdk-26` adoption --- .../swift_build_support/build_script_invocation.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/utils/swift_build_support/swift_build_support/build_script_invocation.py b/utils/swift_build_support/swift_build_support/build_script_invocation.py index c63f29ee52845..f4eaf537317cc 100644 --- a/utils/swift_build_support/swift_build_support/build_script_invocation.py +++ b/utils/swift_build_support/swift_build_support/build_script_invocation.py @@ -683,6 +683,8 @@ def compute_product_pipelines(self): builder.add_product(products.WasmKit, is_enabled=self.args.build_wasmkit) builder.add_product(products.WasmStdlib, + # Revert `or self.args.test_wasmstdlib` once we adopt `wasi-sdk-26` + # or higher version that includes https://github.com/WebAssembly/wasi-libc/commit/eadb436d5c09f7983c3a687086e5af6b6e9f5510.patch is_enabled=self.args.build_wasmstdlib or self.args.test_wasmstdlib) builder.add_product(products.WasmThreadsStdlib, is_enabled=self.args.build_wasmstdlib)