aboutsummaryrefslogtreecommitdiff
path: root/lib/std/Target/Query.zig
diff options
context:
space:
mode:
authorJacob Young <jacobly0@users.noreply.github.com>2024-04-14 15:24:01 -0400
committerJacob Young <jacobly0@users.noreply.github.com>2024-04-14 15:33:46 -0400
commit533f54c68ee18a910e348bf273a713842fdfd127 (patch)
tree9294d5b3cf05181aa6479c5bc7d286c5b97a90e0 /lib/std/Target/Query.zig
parente45bdc6bd6e47ec3f7a06dbb48f24e842bf43a0d (diff)
downloadzig-533f54c68ee18a910e348bf273a713842fdfd127.tar.gz
zig-533f54c68ee18a910e348bf273a713842fdfd127.zip
Target: cleanup
Diffstat (limited to 'lib/std/Target/Query.zig')
-rw-r--r--lib/std/Target/Query.zig174
1 files changed, 35 insertions, 139 deletions
diff --git a/lib/std/Target/Query.zig b/lib/std/Target/Query.zig
index d290e2a8d2..a924c62964 100644
--- a/lib/std/Target/Query.zig
+++ b/lib/std/Target/Query.zig
@@ -124,71 +124,21 @@ pub fn fromTarget(target: Target) Query {
}
fn updateOsVersionRange(self: *Query, os: Target.Os) void {
- switch (os.tag) {
- .freestanding,
- .ananas,
- .cloudabi,
- .fuchsia,
- .kfreebsd,
- .lv2,
- .solaris,
- .illumos,
- .zos,
- .haiku,
- .minix,
- .rtems,
- .nacl,
- .aix,
- .cuda,
- .nvcl,
- .amdhsa,
- .ps4,
- .ps5,
- .elfiamcu,
- .mesa3d,
- .contiki,
- .amdpal,
- .hermit,
- .hurd,
- .wasi,
- .emscripten,
- .driverkit,
- .shadermodel,
- .liteos,
- .uefi,
- .opencl,
- .glsl450,
- .vulkan,
- .plan9,
- .other,
- => {
- self.os_version_min = .{ .none = {} };
- self.os_version_max = .{ .none = {} };
+ self.os_version_min, self.os_version_max = switch (os.tag.getVersionRangeTag()) {
+ .none => .{ .{ .none = {} }, .{ .none = {} } },
+ .semver => .{
+ .{ .semver = os.version_range.semver.min },
+ .{ .semver = os.version_range.semver.max },
},
-
- .freebsd,
- .macos,
- .ios,
- .tvos,
- .watchos,
- .netbsd,
- .openbsd,
- .dragonfly,
- => {
- self.os_version_min = .{ .semver = os.version_range.semver.min };
- self.os_version_max = .{ .semver = os.version_range.semver.max };
- },
-
- .linux => {
- self.os_version_min = .{ .semver = os.version_range.linux.range.min };
- self.os_version_max = .{ .semver = os.version_range.linux.range.max };
+ .linux => .{
+ .{ .semver = os.version_range.linux.range.min },
+ .{ .semver = os.version_range.linux.range.max },
},
-
- .windows => {
- self.os_version_min = .{ .windows = os.version_range.windows.min };
- self.os_version_max = .{ .windows = os.version_range.windows.max };
+ .windows => .{
+ .{ .windows = os.version_range.windows.min },
+ .{ .windows = os.version_range.windows.max },
},
- }
+ };
}
pub const ParseOptions = struct {
@@ -278,7 +228,8 @@ pub fn parse(args: ParseOptions) !Query {
const abi_ver_text = abi_it.rest();
if (abi_it.next() != null) {
- if (Target.isGnuLibC_os_tag_abi(result.os_tag orelse builtin.os.tag, abi)) {
+ const tag = result.os_tag orelse builtin.os.tag;
+ if (tag.isGnuLibC(abi)) {
result.glibc_version = parseVersion(abi_ver_text) catch |err| switch (err) {
error.Overflow => return error.InvalidAbiVersion,
error.InvalidVersion => return error.InvalidAbiVersion,
@@ -567,88 +518,33 @@ fn parseOs(result: *Query, diags: *ParseOptions.Diagnostics, text: []const u8) !
diags.os_tag = tag;
const version_text = it.rest();
- if (it.next() == null) return;
-
- switch (tag) {
- .freestanding,
- .ananas,
- .cloudabi,
- .fuchsia,
- .kfreebsd,
- .lv2,
- .solaris,
- .illumos,
- .zos,
- .haiku,
- .minix,
- .rtems,
- .nacl,
- .aix,
- .cuda,
- .nvcl,
- .amdhsa,
- .ps4,
- .ps5,
- .elfiamcu,
- .mesa3d,
- .contiki,
- .amdpal,
- .hermit,
- .hurd,
- .wasi,
- .emscripten,
- .uefi,
- .opencl,
- .glsl450,
- .vulkan,
- .plan9,
- .driverkit,
- .shadermodel,
- .liteos,
- .other,
- => return error.InvalidOperatingSystemVersion,
-
- .freebsd,
- .macos,
- .ios,
- .tvos,
- .watchos,
- .netbsd,
- .openbsd,
- .linux,
- .dragonfly,
- => {
+ if (version_text.len > 0) switch (tag.getVersionRangeTag()) {
+ .none => return error.InvalidOperatingSystemVersion,
+ .semver, .linux => range: {
var range_it = mem.splitSequence(u8, version_text, "...");
-
- const min_text = range_it.next().?;
- const min_ver = parseVersion(min_text) catch |err| switch (err) {
- error.Overflow => return error.InvalidOperatingSystemVersion,
- error.InvalidVersion => return error.InvalidOperatingSystemVersion,
+ result.os_version_min = .{
+ .semver = parseVersion(range_it.first()) catch |err| switch (err) {
+ error.Overflow => return error.InvalidOperatingSystemVersion,
+ error.InvalidVersion => return error.InvalidOperatingSystemVersion,
+ },
};
- result.os_version_min = .{ .semver = min_ver };
-
- const max_text = range_it.next() orelse return;
- const max_ver = parseVersion(max_text) catch |err| switch (err) {
- error.Overflow => return error.InvalidOperatingSystemVersion,
- error.InvalidVersion => return error.InvalidOperatingSystemVersion,
+ result.os_version_max = .{
+ .semver = parseVersion(range_it.next() orelse break :range) catch |err| switch (err) {
+ error.Overflow => return error.InvalidOperatingSystemVersion,
+ error.InvalidVersion => return error.InvalidOperatingSystemVersion,
+ },
};
- result.os_version_max = .{ .semver = max_ver };
},
-
- .windows => {
+ .windows => range: {
var range_it = mem.splitSequence(u8, version_text, "...");
-
- const min_text = range_it.first();
- const min_ver = std.meta.stringToEnum(Target.Os.WindowsVersion, min_text) orelse
- return error.InvalidOperatingSystemVersion;
- result.os_version_min = .{ .windows = min_ver };
-
- const max_text = range_it.next() orelse return;
- const max_ver = std.meta.stringToEnum(Target.Os.WindowsVersion, max_text) orelse
- return error.InvalidOperatingSystemVersion;
- result.os_version_max = .{ .windows = max_ver };
+ result.os_version_min = .{
+ .windows = try Target.Os.WindowsVersion.parse(range_it.first()),
+ };
+ result.os_version_max = .{
+ .windows = try Target.Os.WindowsVersion.parse(range_it.next() orelse break :range),
+ };
},
- }
+ };
}
pub fn eql(a: Query, b: Query) bool {