From 482759079f423681928467bf0f68a755a1a1a087 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Tue, 8 Oct 2024 06:35:18 +0200 Subject: [PATCH 1/7] std.Target: Move the elfiamcu check under the x86 prong in toElfMachine(). --- lib/std/Target.zig | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/std/Target.zig b/lib/std/Target.zig index 0958ce589e..0969da1a50 100644 --- a/lib/std/Target.zig +++ b/lib/std/Target.zig @@ -925,8 +925,6 @@ pub const ObjectFormat = enum { }; pub fn toElfMachine(target: Target) std.elf.EM { - if (target.os.tag == .elfiamcu) return .IAMCU; - return switch (target.cpu.arch) { .amdgcn => .AMDGPU, .arc => .ARC_COMPACT, @@ -950,7 +948,7 @@ pub fn toElfMachine(target: Target) std.elf.EM { .sparc64 => .SPARCV9, .spu_2 => .SPU_2, .ve => .VE, - .x86 => .@"386", + .x86 => if (target.os.tag == .elfiamcu) .IAMCU else .@"386", .x86_64 => .X86_64, .xcore => .XCORE, .xtensa => .XTENSA, From c76a98f28a2623d0622b373f3b6d9aa23c3da54a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Tue, 8 Oct 2024 06:42:42 +0200 Subject: [PATCH 2/7] std.Target: Rename is_lib{c,cxx}_lib_name() to isLib{C,Cxx}LibName(). --- lib/std/Build/Module.zig | 4 ++-- lib/std/Build/Step/Compile.zig | 4 ++-- lib/std/Target.zig | 4 ++-- src/Sema.zig | 4 ++-- src/main.zig | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lib/std/Build/Module.zig b/lib/std/Build/Module.zig index 253945b3d7..76d1bf8816 100644 --- a/lib/std/Build/Module.zig +++ b/lib/std/Build/Module.zig @@ -492,11 +492,11 @@ pub fn linkSystemLibrary( const b = m.owner; const target = m.requireKnownTarget(); - if (target.is_libc_lib_name(name)) { + if (target.isLibCLibName(name)) { m.link_libc = true; return; } - if (target.is_libcpp_lib_name(name)) { + if (target.isLibCxxLibName(name)) { m.link_libcpp = true; return; } diff --git a/lib/std/Build/Step/Compile.zig b/lib/std/Build/Step/Compile.zig index a977dc3056..6a9ed48a9d 100644 --- a/lib/std/Build/Step/Compile.zig +++ b/lib/std/Build/Step/Compile.zig @@ -611,11 +611,11 @@ pub fn dependsOnSystemLibrary(compile: *const Compile, name: []const u8) bool { is_linking_libcpp = is_linking_libcpp or module.link_libcpp == true; } - if (compile.rootModuleTarget().is_libc_lib_name(name)) { + if (compile.rootModuleTarget().isLibCLibName(name)) { return is_linking_libc; } - if (compile.rootModuleTarget().is_libcpp_lib_name(name)) { + if (compile.rootModuleTarget().isLibCxxLibName(name)) { return is_linking_libcpp; } diff --git a/lib/std/Target.zig b/lib/std/Target.zig index 0969da1a50..00f883d30e 100644 --- a/lib/std/Target.zig +++ b/lib/std/Target.zig @@ -2868,7 +2868,7 @@ pub fn cTypePreferredAlignment(target: Target, c_type: CType) u16 { ); } -pub fn is_libc_lib_name(target: std.Target, name: []const u8) bool { +pub fn isLibCLibName(target: std.Target, name: []const u8) bool { const ignore_case = target.os.tag == .macos or target.os.tag == .windows; if (eqlIgnoreCase(ignore_case, name, "c")) @@ -2987,7 +2987,7 @@ pub fn is_libc_lib_name(target: std.Target, name: []const u8) bool { return false; } -pub fn is_libcpp_lib_name(target: std.Target, name: []const u8) bool { +pub fn isLibCxxLibName(target: std.Target, name: []const u8) bool { const ignore_case = target.os.tag.isDarwin() or target.os.tag == .windows; return eqlIgnoreCase(ignore_case, name, "c++") or diff --git a/src/Sema.zig b/src/Sema.zig index 0341c3a8d8..f18648a27b 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -9606,7 +9606,7 @@ fn handleExternLibName( const comp = zcu.comp; const target = zcu.getTarget(); log.debug("extern fn symbol expected in lib '{s}'", .{lib_name}); - if (target.is_libc_lib_name(lib_name)) { + if (target.isLibCLibName(lib_name)) { if (!comp.config.link_libc) { return sema.fail( block, @@ -9617,7 +9617,7 @@ fn handleExternLibName( } break :blk; } - if (target.is_libcpp_lib_name(lib_name)) { + if (target.isLibCxxLibName(lib_name)) { if (!comp.config.link_libcpp) return sema.fail( block, src_loc, diff --git a/src/main.zig b/src/main.zig index 75a273b560..05e7c01229 100644 --- a/src/main.zig +++ b/src/main.zig @@ -3765,11 +3765,11 @@ fn createModule( info: SystemLib, }) = .{}; for (create_module.system_libs.keys(), create_module.system_libs.values()) |lib_name, info| { - if (target.is_libc_lib_name(lib_name)) { + if (target.isLibCLibName(lib_name)) { create_module.opts.link_libc = true; continue; } - if (target.is_libcpp_lib_name(lib_name)) { + if (target.isLibCxxLibName(lib_name)) { create_module.opts.link_libcpp = true; continue; } From 879a39a700dda5bbd720b940d9a26f202098f7c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Tue, 8 Oct 2024 07:59:39 +0200 Subject: [PATCH 3/7] std.Target: Ignore case for all Darwin platforms in isLibCLibName(). Matches isLibCxxLibName() behavior. --- lib/std/Target.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/std/Target.zig b/lib/std/Target.zig index 00f883d30e..0969b08466 100644 --- a/lib/std/Target.zig +++ b/lib/std/Target.zig @@ -2869,7 +2869,7 @@ pub fn cTypePreferredAlignment(target: Target, c_type: CType) u16 { } pub fn isLibCLibName(target: std.Target, name: []const u8) bool { - const ignore_case = target.os.tag == .macos or target.os.tag == .windows; + const ignore_case = target.os.tag.isDarwin() or target.os.tag == .windows; if (eqlIgnoreCase(ignore_case, name, "c")) return true; From bdb00b393e1910d30be04490535960651a7a07b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Tue, 8 Oct 2024 08:05:00 +0200 Subject: [PATCH 4/7] std.Target: Only consider libxnet to be a libc library name for musl. glibc has never had this. --- lib/std/Target.zig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/std/Target.zig b/lib/std/Target.zig index 0969b08466..14776e8b24 100644 --- a/lib/std/Target.zig +++ b/lib/std/Target.zig @@ -2936,8 +2936,6 @@ pub fn isLibCLibName(target: std.Target, name: []const u8) bool { return true; if (eqlIgnoreCase(ignore_case, name, "util")) return true; - if (eqlIgnoreCase(ignore_case, name, "xnet")) - return true; if (eqlIgnoreCase(ignore_case, name, "resolv")) return true; if (eqlIgnoreCase(ignore_case, name, "dl")) @@ -2947,6 +2945,8 @@ pub fn isLibCLibName(target: std.Target, name: []const u8) bool { if (target.abi.isMusl()) { if (eqlIgnoreCase(ignore_case, name, "crypt")) return true; + if (eqlIgnoreCase(ignore_case, name, "xnet")) + return true; } if (target.os.tag.isDarwin()) { From 140fb615a6a351fb397d6a538a4954a2229e90a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Tue, 8 Oct 2024 08:14:11 +0200 Subject: [PATCH 5/7] std.Target: Move isLib{C,Cxx}LibName() to std.zig.target. These are really answering questions about the Zig compiler's capacity to provide a libc/libc++ implementation. As such, std.zig.target seems like a more fitting place for these. --- lib/std/Build/Module.zig | 4 +- lib/std/Build/Step/Compile.zig | 6 +- lib/std/Target.zig | 135 --------------------------------- lib/std/zig/target.zig | 135 +++++++++++++++++++++++++++++++++ src/Sema.zig | 4 +- src/main.zig | 4 +- 6 files changed, 145 insertions(+), 143 deletions(-) diff --git a/lib/std/Build/Module.zig b/lib/std/Build/Module.zig index 76d1bf8816..347695a4c0 100644 --- a/lib/std/Build/Module.zig +++ b/lib/std/Build/Module.zig @@ -492,11 +492,11 @@ pub fn linkSystemLibrary( const b = m.owner; const target = m.requireKnownTarget(); - if (target.isLibCLibName(name)) { + if (std.zig.target.isLibCLibName(target, name)) { m.link_libc = true; return; } - if (target.isLibCxxLibName(name)) { + if (std.zig.target.isLibCxxLibName(target, name)) { m.link_libcpp = true; return; } diff --git a/lib/std/Build/Step/Compile.zig b/lib/std/Build/Step/Compile.zig index 6a9ed48a9d..469fbdf74a 100644 --- a/lib/std/Build/Step/Compile.zig +++ b/lib/std/Build/Step/Compile.zig @@ -611,11 +611,13 @@ pub fn dependsOnSystemLibrary(compile: *const Compile, name: []const u8) bool { is_linking_libcpp = is_linking_libcpp or module.link_libcpp == true; } - if (compile.rootModuleTarget().isLibCLibName(name)) { + const target = compile.rootModuleTarget(); + + if (std.zig.target.isLibCLibName(target, name)) { return is_linking_libc; } - if (compile.rootModuleTarget().isLibCxxLibName(name)) { + if (std.zig.target.isLibCxxLibName(target, name)) { return is_linking_libcpp; } diff --git a/lib/std/Target.zig b/lib/std/Target.zig index 14776e8b24..9cd7efed92 100644 --- a/lib/std/Target.zig +++ b/lib/std/Target.zig @@ -2868,141 +2868,6 @@ pub fn cTypePreferredAlignment(target: Target, c_type: CType) u16 { ); } -pub fn isLibCLibName(target: std.Target, name: []const u8) bool { - const ignore_case = target.os.tag.isDarwin() or target.os.tag == .windows; - - if (eqlIgnoreCase(ignore_case, name, "c")) - return true; - - if (target.isMinGW()) { - if (eqlIgnoreCase(ignore_case, name, "m")) - return true; - if (eqlIgnoreCase(ignore_case, name, "mingw32")) - return true; - if (eqlIgnoreCase(ignore_case, name, "msvcrt-os")) - return true; - if (eqlIgnoreCase(ignore_case, name, "mingwex")) - return true; - if (eqlIgnoreCase(ignore_case, name, "uuid")) - return true; - if (eqlIgnoreCase(ignore_case, name, "bits")) - return true; - if (eqlIgnoreCase(ignore_case, name, "dmoguids")) - return true; - if (eqlIgnoreCase(ignore_case, name, "dxerr8")) - return true; - if (eqlIgnoreCase(ignore_case, name, "dxerr9")) - return true; - if (eqlIgnoreCase(ignore_case, name, "mfuuid")) - return true; - if (eqlIgnoreCase(ignore_case, name, "msxml2")) - return true; - if (eqlIgnoreCase(ignore_case, name, "msxml6")) - return true; - if (eqlIgnoreCase(ignore_case, name, "amstrmid")) - return true; - if (eqlIgnoreCase(ignore_case, name, "wbemuuid")) - return true; - if (eqlIgnoreCase(ignore_case, name, "wmcodecdspuuid")) - return true; - if (eqlIgnoreCase(ignore_case, name, "dxguid")) - return true; - if (eqlIgnoreCase(ignore_case, name, "ksguid")) - return true; - if (eqlIgnoreCase(ignore_case, name, "locationapi")) - return true; - if (eqlIgnoreCase(ignore_case, name, "portabledeviceguids")) - return true; - if (eqlIgnoreCase(ignore_case, name, "mfuuid")) - return true; - if (eqlIgnoreCase(ignore_case, name, "dloadhelper")) - return true; - if (eqlIgnoreCase(ignore_case, name, "strmiids")) - return true; - if (eqlIgnoreCase(ignore_case, name, "mfuuid")) - return true; - if (eqlIgnoreCase(ignore_case, name, "adsiid")) - return true; - - return false; - } - - if (target.abi.isGnu() or target.abi.isMusl()) { - if (eqlIgnoreCase(ignore_case, name, "m")) - return true; - if (eqlIgnoreCase(ignore_case, name, "rt")) - return true; - if (eqlIgnoreCase(ignore_case, name, "pthread")) - return true; - if (eqlIgnoreCase(ignore_case, name, "util")) - return true; - if (eqlIgnoreCase(ignore_case, name, "resolv")) - return true; - if (eqlIgnoreCase(ignore_case, name, "dl")) - return true; - } - - if (target.abi.isMusl()) { - if (eqlIgnoreCase(ignore_case, name, "crypt")) - return true; - if (eqlIgnoreCase(ignore_case, name, "xnet")) - return true; - } - - if (target.os.tag.isDarwin()) { - if (eqlIgnoreCase(ignore_case, name, "System")) - return true; - if (eqlIgnoreCase(ignore_case, name, "c")) - return true; - if (eqlIgnoreCase(ignore_case, name, "dbm")) - return true; - if (eqlIgnoreCase(ignore_case, name, "dl")) - return true; - if (eqlIgnoreCase(ignore_case, name, "info")) - return true; - if (eqlIgnoreCase(ignore_case, name, "m")) - return true; - if (eqlIgnoreCase(ignore_case, name, "poll")) - return true; - if (eqlIgnoreCase(ignore_case, name, "proc")) - return true; - if (eqlIgnoreCase(ignore_case, name, "pthread")) - return true; - if (eqlIgnoreCase(ignore_case, name, "rpcsvc")) - return true; - } - - if (target.os.isAtLeast(.macos, .{ .major = 10, .minor = 8, .patch = 0 }) orelse false) { - if (eqlIgnoreCase(ignore_case, name, "mx")) - return true; - } - - if (target.os.tag == .haiku) { - if (eqlIgnoreCase(ignore_case, name, "root")) - return true; - if (eqlIgnoreCase(ignore_case, name, "network")) - return true; - } - - return false; -} - -pub fn isLibCxxLibName(target: std.Target, name: []const u8) bool { - const ignore_case = target.os.tag.isDarwin() or target.os.tag == .windows; - - return eqlIgnoreCase(ignore_case, name, "c++") or - eqlIgnoreCase(ignore_case, name, "stdc++") or - eqlIgnoreCase(ignore_case, name, "c++abi"); -} - -fn eqlIgnoreCase(ignore_case: bool, a: []const u8, b: []const u8) bool { - if (ignore_case) { - return std.ascii.eqlIgnoreCase(a, b); - } else { - return std.mem.eql(u8, a, b); - } -} - pub fn osArchName(target: std.Target) [:0]const u8 { return target.os.tag.archName(target.cpu.arch); } diff --git a/lib/std/zig/target.zig b/lib/std/zig/target.zig index 2e73c2de12..6db17c1f71 100644 --- a/lib/std/zig/target.zig +++ b/lib/std/zig/target.zig @@ -124,4 +124,139 @@ pub fn muslArchName(arch: std.Target.Cpu.Arch) [:0]const u8 { } } +pub fn isLibCLibName(target: std.Target, name: []const u8) bool { + const ignore_case = target.os.tag.isDarwin() or target.os.tag == .windows; + + if (eqlIgnoreCase(ignore_case, name, "c")) + return true; + + if (target.isMinGW()) { + if (eqlIgnoreCase(ignore_case, name, "m")) + return true; + if (eqlIgnoreCase(ignore_case, name, "mingw32")) + return true; + if (eqlIgnoreCase(ignore_case, name, "msvcrt-os")) + return true; + if (eqlIgnoreCase(ignore_case, name, "mingwex")) + return true; + if (eqlIgnoreCase(ignore_case, name, "uuid")) + return true; + if (eqlIgnoreCase(ignore_case, name, "bits")) + return true; + if (eqlIgnoreCase(ignore_case, name, "dmoguids")) + return true; + if (eqlIgnoreCase(ignore_case, name, "dxerr8")) + return true; + if (eqlIgnoreCase(ignore_case, name, "dxerr9")) + return true; + if (eqlIgnoreCase(ignore_case, name, "mfuuid")) + return true; + if (eqlIgnoreCase(ignore_case, name, "msxml2")) + return true; + if (eqlIgnoreCase(ignore_case, name, "msxml6")) + return true; + if (eqlIgnoreCase(ignore_case, name, "amstrmid")) + return true; + if (eqlIgnoreCase(ignore_case, name, "wbemuuid")) + return true; + if (eqlIgnoreCase(ignore_case, name, "wmcodecdspuuid")) + return true; + if (eqlIgnoreCase(ignore_case, name, "dxguid")) + return true; + if (eqlIgnoreCase(ignore_case, name, "ksguid")) + return true; + if (eqlIgnoreCase(ignore_case, name, "locationapi")) + return true; + if (eqlIgnoreCase(ignore_case, name, "portabledeviceguids")) + return true; + if (eqlIgnoreCase(ignore_case, name, "mfuuid")) + return true; + if (eqlIgnoreCase(ignore_case, name, "dloadhelper")) + return true; + if (eqlIgnoreCase(ignore_case, name, "strmiids")) + return true; + if (eqlIgnoreCase(ignore_case, name, "mfuuid")) + return true; + if (eqlIgnoreCase(ignore_case, name, "adsiid")) + return true; + + return false; + } + + if (target.abi.isGnu() or target.abi.isMusl()) { + if (eqlIgnoreCase(ignore_case, name, "m")) + return true; + if (eqlIgnoreCase(ignore_case, name, "rt")) + return true; + if (eqlIgnoreCase(ignore_case, name, "pthread")) + return true; + if (eqlIgnoreCase(ignore_case, name, "util")) + return true; + if (eqlIgnoreCase(ignore_case, name, "resolv")) + return true; + if (eqlIgnoreCase(ignore_case, name, "dl")) + return true; + } + + if (target.abi.isMusl()) { + if (eqlIgnoreCase(ignore_case, name, "crypt")) + return true; + if (eqlIgnoreCase(ignore_case, name, "xnet")) + return true; + } + + if (target.os.tag.isDarwin()) { + if (eqlIgnoreCase(ignore_case, name, "System")) + return true; + if (eqlIgnoreCase(ignore_case, name, "c")) + return true; + if (eqlIgnoreCase(ignore_case, name, "dbm")) + return true; + if (eqlIgnoreCase(ignore_case, name, "dl")) + return true; + if (eqlIgnoreCase(ignore_case, name, "info")) + return true; + if (eqlIgnoreCase(ignore_case, name, "m")) + return true; + if (eqlIgnoreCase(ignore_case, name, "poll")) + return true; + if (eqlIgnoreCase(ignore_case, name, "proc")) + return true; + if (eqlIgnoreCase(ignore_case, name, "pthread")) + return true; + if (eqlIgnoreCase(ignore_case, name, "rpcsvc")) + return true; + } + + if (target.os.isAtLeast(.macos, .{ .major = 10, .minor = 8, .patch = 0 }) orelse false) { + if (eqlIgnoreCase(ignore_case, name, "mx")) + return true; + } + + if (target.os.tag == .haiku) { + if (eqlIgnoreCase(ignore_case, name, "root")) + return true; + if (eqlIgnoreCase(ignore_case, name, "network")) + return true; + } + + return false; +} + +pub fn isLibCxxLibName(target: std.Target, name: []const u8) bool { + const ignore_case = target.os.tag.isDarwin() or target.os.tag == .windows; + + return eqlIgnoreCase(ignore_case, name, "c++") or + eqlIgnoreCase(ignore_case, name, "stdc++") or + eqlIgnoreCase(ignore_case, name, "c++abi"); +} + +fn eqlIgnoreCase(ignore_case: bool, a: []const u8, b: []const u8) bool { + if (ignore_case) { + return std.ascii.eqlIgnoreCase(a, b); + } else { + return std.mem.eql(u8, a, b); + } +} + const std = @import("std"); diff --git a/src/Sema.zig b/src/Sema.zig index f18648a27b..b8f35c5067 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -9606,7 +9606,7 @@ fn handleExternLibName( const comp = zcu.comp; const target = zcu.getTarget(); log.debug("extern fn symbol expected in lib '{s}'", .{lib_name}); - if (target.isLibCLibName(lib_name)) { + if (std.zig.target.isLibCLibName(target, lib_name)) { if (!comp.config.link_libc) { return sema.fail( block, @@ -9617,7 +9617,7 @@ fn handleExternLibName( } break :blk; } - if (target.isLibCxxLibName(lib_name)) { + if (std.zig.target.isLibCxxLibName(target, lib_name)) { if (!comp.config.link_libcpp) return sema.fail( block, src_loc, diff --git a/src/main.zig b/src/main.zig index 05e7c01229..058de72442 100644 --- a/src/main.zig +++ b/src/main.zig @@ -3765,11 +3765,11 @@ fn createModule( info: SystemLib, }) = .{}; for (create_module.system_libs.keys(), create_module.system_libs.values()) |lib_name, info| { - if (target.isLibCLibName(lib_name)) { + if (std.zig.target.isLibCLibName(target, lib_name)) { create_module.opts.link_libc = true; continue; } - if (target.isLibCxxLibName(lib_name)) { + if (std.zig.target.isLibCxxLibName(target, lib_name)) { create_module.opts.link_libcpp = true; continue; } From 55fe86c57e5a069c0de56ff1ef2adfc80aa0ece7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Tue, 8 Oct 2024 07:55:44 +0200 Subject: [PATCH 6/7] std.Target: Remove isBpfFreestanding(). The only use of this has nothing to do with the OS tag. --- lib/std/Target.zig | 4 ---- src/link/Elf.zig | 4 +--- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/lib/std/Target.zig b/lib/std/Target.zig index 9cd7efed92..728521c678 100644 --- a/lib/std/Target.zig +++ b/lib/std/Target.zig @@ -1754,10 +1754,6 @@ pub inline fn isBSD(target: Target) bool { return target.os.tag.isBSD(); } -pub inline fn isBpfFreestanding(target: Target) bool { - return target.cpu.arch.isBpf() and target.os.tag == .freestanding; -} - pub inline fn isGnuLibC(target: Target) bool { return target.os.tag.isGnuLibC(target.abi); } diff --git a/src/link/Elf.zig b/src/link/Elf.zig index 0b1439ec80..dfb4a614fa 100644 --- a/src/link/Elf.zig +++ b/src/link/Elf.zig @@ -2045,9 +2045,7 @@ fn linkWithLLD(self: *Elf, arena: Allocator, tid: Zcu.PerThread.Id, prog_node: s // copy when generating relocatables. Normally, we would expect `lld -r` to work. // However, because LLD wants to resolve BPF relocations which it shouldn't, it fails // before even generating the relocatable. - if (output_mode == .Obj and - (comp.config.lto or target.isBpfFreestanding())) - { + if (output_mode == .Obj and (comp.config.lto or target.cpu.arch.isBpf())) { // In this case we must do a simple file copy // here. TODO: think carefully about how we can avoid this redundant operation when doing // build-obj. See also the corresponding TODO in linkAsArchive. From 549a7eba40aebaad2ede0fef3a574f52315c36cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Tue, 8 Oct 2024 08:22:15 +0200 Subject: [PATCH 7/7] std.Target: Rename OS version range functions to drop the "get" prefix. --- lib/std/Target.zig | 10 +++++----- lib/std/Target/Query.zig | 4 ++-- src/Builtin.zig | 2 +- src/Compilation.zig | 4 ++-- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lib/std/Target.zig b/lib/std/Target.zig index 728521c678..ffe6173825 100644 --- a/lib/std/Target.zig +++ b/lib/std/Target.zig @@ -157,7 +157,7 @@ pub const Os = struct { }; } - pub inline fn getVersionRangeTag(tag: Tag) @typeInfo(TaggedVersionRange).@"union".tag_type.? { + pub inline fn versionRangeTag(tag: Tag) @typeInfo(TaggedVersionRange).@"union".tag_type.? { return switch (tag) { .freestanding, .fuchsia, @@ -545,8 +545,8 @@ pub const Os = struct { /// Provides a tagged union. `Target` does not store the tag because it is /// redundant with the OS tag; this function abstracts that part away. - pub inline fn getVersionRange(os: Os) TaggedVersionRange { - return switch (os.tag.getVersionRangeTag()) { + pub inline fn versionRange(os: Os) TaggedVersionRange { + return switch (os.tag.versionRangeTag()) { .none => .{ .none = {} }, .semver => .{ .semver = os.version_range.semver }, .linux => .{ .linux = os.version_range.linux }, @@ -556,12 +556,12 @@ pub const Os = struct { /// Checks if system is guaranteed to be at least `version` or older than `version`. /// Returns `null` if a runtime check is required. - pub inline fn isAtLeast(os: Os, comptime tag: Tag, ver: switch (tag.getVersionRangeTag()) { + pub inline fn isAtLeast(os: Os, comptime tag: Tag, ver: switch (tag.versionRangeTag()) { .none => void, .semver, .linux => std.SemanticVersion, .windows => WindowsVersion, }) ?bool { - return if (os.tag != tag) false else switch (tag.getVersionRangeTag()) { + return if (os.tag != tag) false else switch (tag.versionRangeTag()) { .none => true, inline .semver, .linux, diff --git a/lib/std/Target/Query.zig b/lib/std/Target/Query.zig index 7fa8c9e9c8..26001f1408 100644 --- a/lib/std/Target/Query.zig +++ b/lib/std/Target/Query.zig @@ -124,7 +124,7 @@ pub fn fromTarget(target: Target) Query { } fn updateOsVersionRange(self: *Query, os: Target.Os) void { - self.os_version_min, self.os_version_max = switch (os.tag.getVersionRangeTag()) { + self.os_version_min, self.os_version_max = switch (os.tag.versionRangeTag()) { .none => .{ .{ .none = {} }, .{ .none = {} } }, .semver => .{ .{ .semver = os.version_range.semver.min }, @@ -523,7 +523,7 @@ fn parseOs(result: *Query, diags: *ParseOptions.Diagnostics, text: []const u8) ! diags.os_tag = tag; const version_text = it.rest(); - if (version_text.len > 0) switch (tag.getVersionRangeTag()) { + if (version_text.len > 0) switch (tag.versionRangeTag()) { .none => return error.InvalidOperatingSystemVersion, .semver, .linux => range: { var range_it = mem.splitSequence(u8, version_text, "..."); diff --git a/src/Builtin.zig b/src/Builtin.zig index 58abcb7a4b..34b73f0e42 100644 --- a/src/Builtin.zig +++ b/src/Builtin.zig @@ -80,7 +80,7 @@ pub fn append(opts: @This(), buffer: *std.ArrayList(u8)) Allocator.Error!void { .{std.zig.fmtId(@tagName(target.os.tag))}, ); - switch (target.os.getVersionRange()) { + switch (target.os.versionRange()) { .none => try buffer.appendSlice(" .none = {} },\n"), .semver => |semver| try buffer.writer().print( \\ .semver = .{{ diff --git a/src/Compilation.zig b/src/Compilation.zig index c8ade90438..2776d2960a 100644 --- a/src/Compilation.zig +++ b/src/Compilation.zig @@ -877,7 +877,7 @@ pub const cache_helpers = struct { hh.addBytes(target.cpu.model.name); hh.add(target.cpu.features.ints); hh.add(target.os.tag); - hh.add(target.os.getVersionRange()); + hh.add(target.os.versionRange()); hh.add(target.abi); hh.add(target.ofmt); hh.add(resolved_target.is_native_os); @@ -5412,7 +5412,7 @@ pub fn addCCArgs( switch (ext) { .c, .cpp, .m, .mm, .h, .hpp, .hm, .hmm, .cu, .rc, .assembly, .assembly_with_cpp => { - const minver: u16 = @truncate(@intFromEnum(target.os.getVersionRange().windows.min) >> 16); + const minver: u16 = @truncate(@intFromEnum(target.os.versionRange().windows.min) >> 16); try argv.append( try std.fmt.allocPrint(arena, "-D_WIN32_WINNT=0x{x:0>4}", .{minver}), );