mirror of
https://github.com/ziglang/zig.git
synced 2026-02-14 13:30:45 +00:00
parse CPU features when --target is null
- fixes case where features are not parsed when `-target` is null - `zig builtin -mcpu native+bogus` should return error/list of valid features
This commit is contained in:
parent
895f67cc6d
commit
e0fe0f7f1e
@ -679,44 +679,42 @@ fn stage2TargetParse(
|
||||
mcpu_oz: ?[*:0]const u8,
|
||||
dynamic_linker_oz: ?[*:0]const u8,
|
||||
) !void {
|
||||
const target: CrossTarget = if (zig_triple_oz) |zig_triple_z| blk: {
|
||||
const zig_triple = mem.toSliceConst(u8, zig_triple_z);
|
||||
const mcpu = if (mcpu_oz) |mcpu_z| mem.toSliceConst(u8, mcpu_z) else null;
|
||||
const dynamic_linker = if (dynamic_linker_oz) |dl_z| mem.toSliceConst(u8, dl_z) else null;
|
||||
var diags: CrossTarget.ParseOptions.Diagnostics = .{};
|
||||
break :blk CrossTarget.parse(.{
|
||||
.arch_os_abi = zig_triple,
|
||||
.cpu_features = mcpu,
|
||||
.dynamic_linker = dynamic_linker,
|
||||
.diagnostics = &diags,
|
||||
}) catch |err| switch (err) {
|
||||
error.UnknownCpuModel => {
|
||||
std.debug.warn("Unknown CPU: '{}'\nAvailable CPUs for architecture '{}':\n", .{
|
||||
diags.cpu_name.?,
|
||||
@tagName(diags.arch.?),
|
||||
});
|
||||
for (diags.arch.?.allCpuModels()) |cpu| {
|
||||
std.debug.warn(" {}\n", .{cpu.name});
|
||||
}
|
||||
process.exit(1);
|
||||
},
|
||||
error.UnknownCpuFeature => {
|
||||
std.debug.warn(
|
||||
\\Unknown CPU feature: '{}'
|
||||
\\Available CPU features for architecture '{}':
|
||||
\\
|
||||
, .{
|
||||
diags.unknown_feature_name,
|
||||
@tagName(diags.arch.?),
|
||||
});
|
||||
for (diags.arch.?.allFeaturesList()) |feature| {
|
||||
std.debug.warn(" {}: {}\n", .{ feature.name, feature.description });
|
||||
}
|
||||
process.exit(1);
|
||||
},
|
||||
else => |e| return e,
|
||||
};
|
||||
} else .{};
|
||||
const zig_triple = if (zig_triple_oz) |zig_triple_z| mem.toSliceConst(u8, zig_triple_z) else "native";
|
||||
const mcpu = if (mcpu_oz) |mcpu_z| mem.toSliceConst(u8, mcpu_z) else null;
|
||||
const dynamic_linker = if (dynamic_linker_oz) |dl_z| mem.toSliceConst(u8, dl_z) else null;
|
||||
var diags: CrossTarget.ParseOptions.Diagnostics = .{};
|
||||
const target: CrossTarget = CrossTarget.parse(.{
|
||||
.arch_os_abi = zig_triple,
|
||||
.cpu_features = mcpu,
|
||||
.dynamic_linker = dynamic_linker,
|
||||
.diagnostics = &diags,
|
||||
}) catch |err| switch (err) {
|
||||
error.UnknownCpuModel => {
|
||||
std.debug.warn("Unknown CPU: '{}'\nAvailable CPUs for architecture '{}':\n", .{
|
||||
diags.cpu_name.?,
|
||||
@tagName(diags.arch.?),
|
||||
});
|
||||
for (diags.arch.?.allCpuModels()) |cpu| {
|
||||
std.debug.warn(" {}\n", .{cpu.name});
|
||||
}
|
||||
process.exit(1);
|
||||
},
|
||||
error.UnknownCpuFeature => {
|
||||
std.debug.warn(
|
||||
\\Unknown CPU feature: '{}'
|
||||
\\Available CPU features for architecture '{}':
|
||||
\\
|
||||
, .{
|
||||
diags.unknown_feature_name,
|
||||
@tagName(diags.arch.?),
|
||||
});
|
||||
for (diags.arch.?.allFeaturesList()) |feature| {
|
||||
std.debug.warn(" {}: {}\n", .{ feature.name, feature.description });
|
||||
}
|
||||
process.exit(1);
|
||||
},
|
||||
else => |e| return e,
|
||||
};
|
||||
|
||||
try stage1_target.fromTarget(target);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user