mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-06 13:54:21 +00:00
cli: add --debug-libc to zig build
This option is similar to `--debug-target` in letting us override details of the build runner target when debugging the build system. While `--debug-target` lets us override the target query, this option lets us override the libc installation. This option is only usable in a compiler built with debug extensions. I am using this to (try to) test the build runner targeting SerenityOS.
This commit is contained in:
parent
dabae3f9dc
commit
32a069f909
1 changed files with 18 additions and 0 deletions
18
src/main.zig
18
src/main.zig
|
|
@ -4891,6 +4891,7 @@ fn cmdBuild(gpa: Allocator, arena: Allocator, args: []const []const u8) !void {
|
|||
var fetch_mode: Package.Fetch.JobQueue.Mode = .needed;
|
||||
var system_pkg_dir_path: ?[]const u8 = null;
|
||||
var debug_target: ?[]const u8 = null;
|
||||
var debug_libc_paths_file: ?[]const u8 = null;
|
||||
|
||||
const argv_index_exe = child_argv.items.len;
|
||||
_ = try child_argv.addOne();
|
||||
|
|
@ -5014,6 +5015,14 @@ fn cmdBuild(gpa: Allocator, arena: Allocator, args: []const []const u8) !void {
|
|||
} else {
|
||||
warn("Zig was compiled without debug extensions. --debug-target has no effect.", .{});
|
||||
}
|
||||
} else if (mem.eql(u8, arg, "--debug-libc")) {
|
||||
if (i + 1 >= args.len) fatal("expected argument after '{s}'", .{arg});
|
||||
i += 1;
|
||||
if (build_options.enable_debug_extensions) {
|
||||
debug_libc_paths_file = args[i];
|
||||
} else {
|
||||
warn("Zig was compiled without debug extensions. --debug-libc has no effect.", .{});
|
||||
}
|
||||
} else if (mem.eql(u8, arg, "--verbose-link")) {
|
||||
verbose_link = true;
|
||||
} else if (mem.eql(u8, arg, "--verbose-cc")) {
|
||||
|
|
@ -5101,6 +5110,14 @@ fn cmdBuild(gpa: Allocator, arena: Allocator, args: []const []const u8) !void {
|
|||
.is_explicit_dynamic_linker = false,
|
||||
};
|
||||
};
|
||||
// Likewise, `--debug-libc` allows overriding the libc installation.
|
||||
const libc_installation: ?*const LibCInstallation = lci: {
|
||||
const paths_file = debug_libc_paths_file orelse break :lci null;
|
||||
if (!build_options.enable_debug_extensions) unreachable;
|
||||
const lci = try arena.create(LibCInstallation);
|
||||
lci.* = try .parse(arena, paths_file, &resolved_target.result);
|
||||
break :lci lci;
|
||||
};
|
||||
|
||||
process.raiseFileDescriptorLimit();
|
||||
|
||||
|
|
@ -5365,6 +5382,7 @@ fn cmdBuild(gpa: Allocator, arena: Allocator, args: []const []const u8) !void {
|
|||
}
|
||||
|
||||
const comp = Compilation.create(gpa, arena, .{
|
||||
.libc_installation = libc_installation,
|
||||
.dirs = dirs,
|
||||
.root_name = "build",
|
||||
.config = config,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue