diff --git a/src/libs/libcxx.zig b/src/libs/libcxx.zig index eebbb9cb73..12c9bdedde 100644 --- a/src/libs/libcxx.zig +++ b/src/libs/libcxx.zig @@ -211,6 +211,10 @@ pub fn buildLibCxx(comp: *Compilation, prog_node: std.Progress.Node) BuildError! try cflags.append("-DLIBCXX_BUILDING_LIBCXXABI"); try cflags.append("-D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER"); + if (target.os.tag == .wasi) { + try cflags.append("-fno-exceptions"); + } + try cflags.append("-fvisibility=hidden"); try cflags.append("-fvisibility-inlines-hidden"); @@ -388,6 +392,9 @@ pub fn buildLibCxxAbi(comp: *Compilation, prog_node: std.Progress.Node) BuildErr for (libcxxabi_files) |cxxabi_src| { if (!comp.config.any_non_single_threaded and std.mem.startsWith(u8, cxxabi_src, "src/cxa_thread_atexit.cpp")) continue; + if (target.os.tag == .wasi and + (std.mem.eql(u8, cxxabi_src, "src/cxa_exception.cpp") or std.mem.eql(u8, cxxabi_src, "src/cxa_personality.cpp"))) + continue; var cflags = std.ArrayList([]const u8).init(arena); @@ -403,6 +410,10 @@ pub fn buildLibCxxAbi(comp: *Compilation, prog_node: std.Progress.Node) BuildErr try cflags.append("-DHAVE___CXA_THREAD_ATEXIT_IMPL"); } + if (target.os.tag == .wasi) { + try cflags.append("-fno-exceptions"); + } + try cflags.append("-fvisibility=hidden"); try cflags.append("-fvisibility-inlines-hidden");