diff options
| author | Jacob Young <jacobly0@users.noreply.github.com> | 2024-04-14 15:24:01 -0400 |
|---|---|---|
| committer | Jacob Young <jacobly0@users.noreply.github.com> | 2024-04-14 15:33:46 -0400 |
| commit | 533f54c68ee18a910e348bf273a713842fdfd127 (patch) | |
| tree | 9294d5b3cf05181aa6479c5bc7d286c5b97a90e0 /lib/std/Target/Query.zig | |
| parent | e45bdc6bd6e47ec3f7a06dbb48f24e842bf43a0d (diff) | |
| download | zig-533f54c68ee18a910e348bf273a713842fdfd127.tar.gz zig-533f54c68ee18a910e348bf273a713842fdfd127.zip | |
Target: cleanup
Diffstat (limited to 'lib/std/Target/Query.zig')
| -rw-r--r-- | lib/std/Target/Query.zig | 174 |
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 { |
