authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-12-09 10:46:56+01:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2024-12-09 10:46:56+01:00
log7cd2c1ce8770ccd3bb5a9d9c79baf4d0013ab0c8
tree54d5a06f7c71e3e8c2d2564c21d022752467fb63
parent589f4e91708366ddff9ee6793d5f88b05a260959
parentc9e74bb9aa6d17993e3c8e922963601a00b405bc
signaturebadge-check Signed by PGP key B5690EEEBB952194

Merge pull request #22191 from alexrp/wasi-libc-names

`std.zig.target`: Teach `isLibCLibName()` about emulated wasi-libc libraries

2 files changed, 21 insertions(+), 8 deletions(-)

lib/std/zig/target.zig+11-2
......@@ -218,13 +218,22 @@ pub fn isLibCLibName(target: std.Target, name: []const u8) bool {
218218 return true;
219219 if (eqlIgnoreCase(ignore_case, name, "xnet"))
220220 return true;
221
222 if (target.os.tag == .wasi) {
223 if (eqlIgnoreCase(ignore_case, name, "wasi-emulated-getpid"))
224 return true;
225 if (eqlIgnoreCase(ignore_case, name, "wasi-emulated-mman"))
226 return true;
227 if (eqlIgnoreCase(ignore_case, name, "wasi-emulated-process-clocks"))
228 return true;
229 if (eqlIgnoreCase(ignore_case, name, "wasi-emulated-signal"))
230 return true;
231 }
221232 }
222233
223234 if (target.os.tag.isDarwin()) {
224235 if (eqlIgnoreCase(ignore_case, name, "System"))
225236 return true;
226 if (eqlIgnoreCase(ignore_case, name, "c"))
227 return true;
228237 if (eqlIgnoreCase(ignore_case, name, "dbm"))
229238 return true;
230239 if (eqlIgnoreCase(ignore_case, name, "dl"))
src/main.zig+10-6
......@@ -3824,6 +3824,15 @@ fn createModule(
38243824 for (create_module.cli_link_inputs.items) |cli_link_input| switch (cli_link_input) {
38253825 .name_query => |nq| {
38263826 const lib_name = nq.name;
3827
3828 if (target.os.tag == .wasi) {
3829 if (wasi_libc.getEmulatedLibCrtFile(lib_name)) |crt_file| {
3830 try create_module.wasi_emulated_libs.append(arena, crt_file);
3831 create_module.opts.link_libc = true;
3832 continue;
3833 }
3834 }
3835
38273836 if (std.zig.target.isLibCLibName(target, lib_name)) {
38283837 create_module.opts.link_libc = true;
38293838 continue;
......@@ -3832,6 +3841,7 @@ fn createModule(
38323841 create_module.opts.link_libcpp = true;
38333842 continue;
38343843 }
3844
38353845 switch (target_util.classifyCompilerRtLibName(lib_name)) {
38363846 .none => {},
38373847 .only_libunwind, .both => {
......@@ -3857,12 +3867,6 @@ fn createModule(
38573867 fatal("cannot use absolute path as a system library: {s}", .{lib_name});
38583868 }
38593869
3860 if (target.os.tag == .wasi) {
3861 if (wasi_libc.getEmulatedLibCrtFile(lib_name)) |crt_file| {
3862 try create_module.wasi_emulated_libs.append(arena, crt_file);
3863 continue;
3864 }
3865 }
38663870 unresolved_link_inputs.appendAssumeCapacity(cli_link_input);
38673871 any_name_queries_remaining = true;
38683872 },