Function parseTargetQuery [src]

Obtain a target query from a string, reporting diagnostics to stderr if the parsing failed. Asserts that the diagnostics field of options is null. This use case is handled instead by calling std.Target.Query.parse directly.

Prototype

pub fn parseTargetQuery(options: std.Target.Query.ParseOptions) error{ParseFailed}!std.Target.Query

Parameters

options: std.Target.Query.ParseOptions

Possible Errors

ParseFailed

Source

pub fn parseTargetQuery(options: std.Target.Query.ParseOptions) error{ParseFailed}!std.Target.Query { assert(options.diagnostics == null); var diags: Target.Query.ParseOptions.Diagnostics = .{}; var opts_copy = options; opts_copy.diagnostics = &diags; return std.Target.Query.parse(opts_copy) catch |err| switch (err) { error.UnknownCpuModel => { std.debug.print("unknown CPU: '{s}'\navailable CPUs for architecture '{s}':\n", .{ diags.cpu_name.?, @tagName(diags.arch.?), }); for (diags.arch.?.allCpuModels()) |cpu| { std.debug.print(" {s}\n", .{cpu.name}); } return error.ParseFailed; }, error.UnknownCpuFeature => { std.debug.print( \\unknown CPU feature: '{s}' \\available CPU features for architecture '{s}': \\ , .{ diags.unknown_feature_name.?, @tagName(diags.arch.?), }); for (diags.arch.?.allFeaturesList()) |feature| { std.debug.print(" {s}: {s}\n", .{ feature.name, feature.description }); } return error.ParseFailed; }, error.UnknownOperatingSystem => { std.debug.print( \\unknown OS: '{s}' \\available operating systems: \\ , .{diags.os_name.?}); inline for (std.meta.fields(Target.Os.Tag)) |field| { std.debug.print(" {s}\n", .{field.name}); } return error.ParseFailed; }, else => |e| { std.debug.print("unable to parse target '{s}': {s}\n", .{ options.arch_os_abi, @errorName(e), }); return error.ParseFailed; }, }; }