diff --git a/MODULE.bazel b/MODULE.bazel index c2b6dc98..76186e62 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -54,6 +54,7 @@ register_toolchains( # wasm/wasi toolchains "@zig_sdk//toolchain:wasip1_wasm", + "@zig_sdk//toolchain:none_wasm", # zig toolchains "@zig_sdk//toolchain:zig", diff --git a/toolchain/platform/defs.bzl b/toolchain/platform/defs.bzl index 917b3a69..3c2896bc 100644 --- a/toolchain/platform/defs.bzl +++ b/toolchain/platform/defs.bzl @@ -16,6 +16,7 @@ def declare_platforms(): # We can support GOARCH=wasm32 after https://github.com/golang/go/issues/63131 declare_platform("wasm", "wasm32", "wasi", "wasip1") + declare_platform("wasm", "wasm32", "none", "none") def declare_libc_aware_platforms(): # create @zig_sdk//{os}_{arch}_platform entries with zig and go conventions diff --git a/toolchain/private/defs.bzl b/toolchain/private/defs.bzl index c1342b26..1db7aad6 100644 --- a/toolchain/private/defs.bzl +++ b/toolchain/private/defs.bzl @@ -49,6 +49,7 @@ def target_structs(): for glibc in _GLIBCS: ret.append(_target_linux_gnu(gocpu, zigcpu, glibc)) ret.append(_target_wasm()) + ret.append(_target_wasm_no_wasi()) return ret def _target_macos(gocpu, zigcpu): @@ -235,6 +236,37 @@ def _target_wasm(): ], ) +def _target_wasm_no_wasi(): + return struct( + gotarget = "none_wasm", + zigtarget = "wasm32-freestanding-musl", + includes = [] + _INCLUDE_TAIL, + linkopts = [], + dynamic_library_linkopts = [], + supports_dynamic_linker = False, + copts = [], + libc = "musl", + bazel_target_cpu = "wasm32", + constraint_values = [ + "@platforms//os:none", + "@platforms//cpu:wasm32", + ], + ld_zig_subcmd = "wasm-ld", + # .wasm extension supported in bazel >= 6.4.0 + artifact_name_patterns = [ + { + "category_name": "dynamic_library", + "prefix": "", + "extension": ".wasm", + }, + { + "category_name": "executable", + "prefix": "", + "extension": ".wasm", + }, + ], + ) + def transform_os_name(os): if os.startswith("mac os"): return "macos" diff --git a/toolchain/zig-wrapper.zig b/toolchain/zig-wrapper.zig index d1d59f9f..5e2984bf 100644 --- a/toolchain/zig-wrapper.zig +++ b/toolchain/zig-wrapper.zig @@ -283,7 +283,7 @@ fn getRunMode(self_exe: []const u8, self_base_noexe: []const u8) error{BadParent return error.BadParent; const got_os = it.next() orelse return error.BadParent; - if (mem.indexOf(u8, "linux,macos,windows,wasi", got_os) == null) + if (mem.indexOf(u8, "linux,macos,windows,wasi,freestanding", got_os) == null) return error.BadParent; // ABI triple is too much of a moving target