diff --git a/lib/compiler/build_runner.zig b/lib/compiler/build_runner.zig index a434ceed24..114a9e3acf 100644 --- a/lib/compiler/build_runner.zig +++ b/lib/compiler/build_runner.zig @@ -260,6 +260,10 @@ pub fn main() !void { graph.incremental = true; } else if (mem.eql(u8, arg, "-fno-incremental")) { graph.incremental = false; + } else if (mem.eql(u8, arg, "-fallow-deprecated")) { + graph.allow_deprecated = true; + } else if (mem.eql(u8, arg, "-fno-allow-deprecated")) { + graph.allow_deprecated = false; } else if (mem.eql(u8, arg, "-fwine")) { builder.enable_wine = true; } else if (mem.eql(u8, arg, "-fno-wine")) { @@ -1283,6 +1287,8 @@ fn usage(b: *std.Build, out_stream: anytype) !void { \\ new Omit cached steps \\ failures (Default) Only print failed steps \\ none Do not print the build summary + \\ -fallow-deprecated Allow usage of deprecated code for the entire build graph + \\ -fno-allow-deprecated Disallow usage of deprecated code for the entire build graph \\ -j Limit concurrent jobs (default is to use all CPU cores) \\ --maxrss Limit memory usage (default is to use available memory) \\ --skip-oom-steps Instead of failing, skip steps that would exceed --maxrss diff --git a/lib/std/Build.zig b/lib/std/Build.zig index 4afdcd2bff..0ba5c43a46 100644 --- a/lib/std/Build.zig +++ b/lib/std/Build.zig @@ -94,6 +94,9 @@ available_deps: AvailableDeps, release_mode: ReleaseMode, +// True only for the top-level builder. +is_root: bool = false, + pub const ReleaseMode = enum { off, any, @@ -118,6 +121,7 @@ pub const Graph = struct { /// Information about the native target. Computed before build() is invoked. host: ResolvedTarget, incremental: ?bool = null, + allow_deprecated: ?bool = null, random_seed: u32 = 0, dependency_cache: InitializedDepMap = .empty, allow_so_scripts: ?bool = null, @@ -304,6 +308,7 @@ pub fn create( .pkg_hash = "", .available_deps = available_deps, .release_mode = .off, + .is_root = true, }; try b.top_level_steps.put(arena, b.install_tls.step.name, &b.install_tls); try b.top_level_steps.put(arena, b.uninstall_tls.step.name, &b.uninstall_tls); diff --git a/lib/std/Build/Module.zig b/lib/std/Build/Module.zig index f299946731..d93fe84416 100644 --- a/lib/std/Build/Module.zig +++ b/lib/std/Build/Module.zig @@ -25,6 +25,7 @@ stack_check: ?bool, sanitize_c: ?bool, sanitize_thread: ?bool, fuzz: ?bool, +allow_deprecated: ?bool, code_model: std.builtin.CodeModel, valgrind: ?bool, pic: ?bool, @@ -284,6 +285,7 @@ pub fn init( .owner = owner, .root_source_file = if (options.root_source_file) |lp| lp.dupe(owner) else null, .import_table = .{}, + .allow_deprecated = owner.graph.allow_deprecated orelse !owner.is_root, .resolved_target = options.target, .optimize = options.optimize, .link_libc = options.link_libc, @@ -557,6 +559,10 @@ pub fn appendZigProcessFlags( try addFlag(zig_args, m.pic, "-fPIC", "-fno-PIC"); try addFlag(zig_args, m.red_zone, "-mred-zone", "-mno-red-zone"); + if (m.root_source_file != null) { + try addFlag(zig_args, m.allow_deprecated, "-fallow-deprecated", "-fno-allow-deprecated"); + } + if (m.dwarf_format) |dwarf_format| { try zig_args.append(switch (dwarf_format) { .@"32" => "-gdwarf32",