mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-06 05:44:20 +00:00
fix standardTargetOptions and improve init-exe to use it
This commit is contained in:
parent
cf233bad58
commit
cebcacd872
2 changed files with 29 additions and 5 deletions
|
|
@ -525,7 +525,7 @@ pub const Builder = struct {
|
|||
pub const StandardTargetOptionsArgs = struct {
|
||||
whitelist: ?[]const CrossTarget = null,
|
||||
|
||||
default_target: CrossTarget = .{},
|
||||
default_target: CrossTarget = CrossTarget{},
|
||||
};
|
||||
|
||||
/// Exposes standard `zig build` options for choosing a target.
|
||||
|
|
@ -533,12 +533,12 @@ pub const Builder = struct {
|
|||
const triple = self.option(
|
||||
[]const u8,
|
||||
"target",
|
||||
"The Arch, OS, and ABI to build for.",
|
||||
"The CPU architecture, OS, and ABI to build for.",
|
||||
) orelse return args.default_target;
|
||||
|
||||
// TODO add cpu and features as part of the target triple
|
||||
|
||||
var diags: std.Target.ParseOptions.Diagnostics = .{};
|
||||
var diags: CrossTarget.ParseOptions.Diagnostics = .{};
|
||||
const selected_target = CrossTarget.parse(.{
|
||||
.arch_os_abi = triple,
|
||||
.diagnostics = &diags,
|
||||
|
|
@ -567,7 +567,21 @@ pub const Builder = struct {
|
|||
}
|
||||
process.exit(1);
|
||||
},
|
||||
else => |e| return e,
|
||||
error.UnknownOperatingSystem => {
|
||||
std.debug.warn(
|
||||
\\Unknown OS: '{}'
|
||||
\\Available operating systems:
|
||||
\\
|
||||
, .{diags.os_name});
|
||||
inline for (std.meta.fields(std.Target.Os.Tag)) |field| {
|
||||
std.debug.warn(" {}\n", .{field.name});
|
||||
}
|
||||
process.exit(1);
|
||||
},
|
||||
else => |e| {
|
||||
std.debug.warn("Unable to parse target '{}': {}\n", .{ triple, @errorName(e) });
|
||||
process.exit(1);
|
||||
},
|
||||
};
|
||||
|
||||
const selected_canonicalized_triple = selected_target.zigTriple(self.allocator) catch unreachable;
|
||||
|
|
@ -585,7 +599,7 @@ pub const Builder = struct {
|
|||
});
|
||||
for (list) |t| {
|
||||
const t_triple = t.zigTriple(self.allocator) catch unreachable;
|
||||
std.debug.warn(" {}\n", t_triple);
|
||||
std.debug.warn(" {}\n", .{t_triple});
|
||||
}
|
||||
// TODO instead of process exit, return error and have a zig build flag implemented by
|
||||
// the build runner that turns process exits into error return traces
|
||||
|
|
|
|||
|
|
@ -1,8 +1,18 @@
|
|||
const Builder = @import("std").build.Builder;
|
||||
|
||||
pub fn build(b: *Builder) void {
|
||||
// Standard target options allows the person running `zig build` to choose
|
||||
// what target to build for. Here we do not override the defaults, which
|
||||
// means any target is allowed, and the default is native. Other options
|
||||
// for restricting supported target set are available.
|
||||
const target = b.standardTargetOptions(.{});
|
||||
|
||||
// Standard release options allow the person running `zig build` to select
|
||||
// between Debug, ReleaseSafe, ReleaseFast, and ReleaseSmall.
|
||||
const mode = b.standardReleaseOptions();
|
||||
|
||||
const exe = b.addExecutable("$", "src/main.zig");
|
||||
exe.setTarget(target);
|
||||
exe.setBuildMode(mode);
|
||||
exe.install();
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue