From 431092fa612ca193cff56fd3430ac037ff70102b Mon Sep 17 00:00:00 2001 From: Mason Remaley Date: Tue, 9 Jun 2026 15:33:35 -0700 Subject: [PATCH] Adds a compile step option to toggle incremental compilation --- lib/compiler/Maker/Step/Compile.zig | 2 +- lib/compiler/configurer.zig | 1 + lib/std/Build/Configuration.zig | 3 ++- lib/std/Build/Step/Compile.zig | 6 ++++++ 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/compiler/Maker/Step/Compile.zig b/lib/compiler/Maker/Step/Compile.zig index d7e556d3fe52ca9cdddfebfa1fb949bcb6473896..5f0589dc96c47e3be8e93697402fd3d7f1ba1e35 100644 --- a/lib/compiler/Maker/Step/Compile.zig +++ b/lib/compiler/Maker/Step/Compile.zig @@ -861,7 +861,7 @@ fn lowerZigArgs( "--error-limit", try allocPrint(arena, "{d}", .{err_limit}), }; - try addFlag(gpa, zig_args, "incremental", graph.incremental); + try addFlag(gpa, zig_args, "incremental", conf_comp.flags4.incremental.toBool() orelse graph.incremental); try zig_args.append(gpa, "--listen=-"); diff --git a/lib/compiler/configurer.zig b/lib/compiler/configurer.zig index cdd86f87d4ae8f5fb8fb770424b6da7a5e810a5a..9b3c8fb403d267103ff7bf99138190565a443f57 100644 --- a/lib/compiler/configurer.zig +++ b/lib/compiler/configurer.zig @@ -797,6 +797,7 @@ fn serialize(b: *std.Build, wc: *Configuration.Wip, writer: *Io.Writer) !void { .generated_llvm_bc = c.generated_llvm_bc != .none, .generated_llvm_ir = c.generated_llvm_ir != .none, .generated_h = c.generated_h != .none, + .incremental = .init(c.incremental), }, .root_module = try s.addModule(c.root_module), .root_name = try wc.addString(c.name), diff --git a/lib/std/Build/Configuration.zig b/lib/std/Build/Configuration.zig index d01ad0c89785c79c3d42d185cf371dd0bd7ec38f..9e9dba142f25b6f6f756523f2254045592ab15a8 100644 --- a/lib/std/Build/Configuration.zig +++ b/lib/std/Build/Configuration.zig @@ -1016,7 +1016,8 @@ pub const Step = extern struct { generated_llvm_bc: bool, generated_llvm_ir: bool, generated_h: bool, - _: u9 = 0, + incremental: DefaultingBool, + _: u7 = 0, }; pub fn isDynamicLibrary(compile: *const Compile) bool { diff --git a/lib/std/Build/Step/Compile.zig b/lib/std/Build/Step/Compile.zig index 5de789c8b2a7b762601c73a2b16a1598338e37c4..d74b633fdc9e087e9638fdbb566ba8ad6f0ca9ab 100644 --- a/lib/std/Build/Step/Compile.zig +++ b/lib/std/Build/Step/Compile.zig @@ -234,6 +234,12 @@ is_linking_libcpp: bool = false, /// builtin fuzzer, see the `fuzz` flag in `Module`. sanitize_coverage_trace_pc_guard: ?bool = null, +/// Enable or disable incremental compilation. +/// +/// Incremental compilation reduces compile time by mutating an existing build artifact. Non- +/// incremental compilation is slower but preserves previous build artifacts. +incremental: ?bool = null, + emit_directory: Configuration.OptionalGeneratedFileIndex = .none, generated_docs: Configuration.OptionalGeneratedFileIndex = .none, generated_asm: Configuration.OptionalGeneratedFileIndex = .none, -- 2.54.0