authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-07-01 19:57:38-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-07-01 20:16:23-07:00
log71ee8ceed9dd045aa7a4bb50291fceb05257314b
tree88f4d319d8dce57ede7a9b5560f192311348384f
parent161ac7081a2b9b71800d0d5993af054efd408a34

compiler: jit commands support --zig-lib=[path]

when it is the first parameter after the command name. fixes regression introduced in d4b70505551ecf568f8af7375cb0e6e5aea97cfb

5 files changed, 19 insertions(+), 5 deletions(-)

CMakeLists.txt+3-1
......@@ -729,6 +729,8 @@ endif()
729729
730730
731731set(ZIG_BUILD_ARGS
732 "--zig-lib=${PROJECT_SOURCE_DIR}/lib"
733
732734 "-Dversion-string=${RESOLVED_ZIG_VERSION}"
733735 "-Dtarget=${ZIG_TARGET_TRIPLE}"
734736 "-Dcpu=${ZIG_TARGET_MCPU}"
......@@ -791,7 +793,7 @@ set(ZIG2_WORKING_DIR "${PROJECT_SOURCE_DIR}")
791793
792794add_custom_command(
793795 OUTPUT "${PROJECT_BINARY_DIR}/stage3/bin/zig"
794 COMMAND zig2 build --prefix "${PROJECT_BINARY_DIR}/stage3" ${ZIG_BUILD_ARGS}
796 COMMAND zig2 build ${ZIG_BUILD_ARGS} --prefix "${PROJECT_BINARY_DIR}/stage3"
795797 COMMENT "Building stage3"
796798 WORKING_DIRECTORY "${ZIG2_WORKING_DIR}"
797799)
cmake/install.cmake+1-1
......@@ -1,4 +1,4 @@
1set(ZIG_INSTALL_ARGS build --prefix "${CMAKE_INSTALL_PREFIX}" ${ZIG_BUILD_ARGS})
1set(ZIG_INSTALL_ARGS build ${ZIG_BUILD_ARGS} --prefix "${CMAKE_INSTALL_PREFIX}")
22execute_process(
33 COMMAND "${ZIG_EXECUTABLE}" ${ZIG_INSTALL_ARGS}
44 WORKING_DIRECTORY "${ZIG2_WORKING_DIR}"
lib/compiler/Maker.zig+2
......@@ -316,6 +316,8 @@ pub fn main(init: process.Init.Minimal) !void {
316316 try forks.append(arena, .init(rest));
317317 } else if (mem.eql(u8, arg, "--fork")) {
318318 try forks.append(arena, .init(nextArgOrFatal(args, &arg_i)));
319 } else if (mem.startsWith(u8, arg, "--zig-lib=")) {
320 fatal("--zig-lib= argument is special and must be first", .{});
319321 } else if (mem.eql(u8, arg, "-h") or mem.eql(u8, arg, "--help")) {
320322 help_menu = true;
321323 } else if (mem.eql(u8, arg, "-l") or mem.eql(u8, arg, "--list-steps")) {
lib/compiler/Maker/ScannedConfig.zig+1
......@@ -342,6 +342,7 @@ pub fn printUsage(sc: *const ScannedConfig, graph: *Graph, w: *Writer) !void {
342342 \\ --build-file [file] Override path to build.zig
343343 \\ --cache-dir [path] Override path to local Zig cache directory
344344 \\ --global-cache-dir [path] Override path to global Zig cache directory
345 \\ --zig-lib=[arg] Override path to Zig lib directory
345346 \\ --seed [integer] For shuffling dependency traversal order (default: random)
346347 \\ --cache-poison[=mode] Override configuration caching behavior
347348 \\ pure (default) Avoid false positive cache hits
src/main.zig+12-3
......@@ -4932,9 +4932,18 @@ fn jitCmdInner(
49324932 else
49334933 options.release_mode;
49344934 const strip = optimize_mode != .Debug;
4935 const override_lib_dir: ?[]const u8 = EnvVar.ZIG_LIB_DIR.get(environ_map);
4935 var override_lib_dir: ?[]const u8 = EnvVar.ZIG_LIB_DIR.get(environ_map);
49364936 const override_global_cache_dir: ?[]const u8 = EnvVar.ZIG_GLOBAL_CACHE_DIR.get(environ_map);
49374937
4938 // Special case: if first arg starts with --zig-lib= then it is handled here.
4939 var args_i: usize = 0;
4940 if (args.len - args_i != 0) {
4941 if (mem.cutPrefix(u8, args[args_i], "--zig-lib=")) |rest| {
4942 override_lib_dir = rest;
4943 args_i += 1;
4944 }
4945 }
4946
49384947 const cwd_path = try std.zig.getResolvedCwd(io, arena);
49394948
49404949 // This `init` calls `fatal` on error.
......@@ -4952,7 +4961,7 @@ fn jitCmdInner(
49524961 defer dirs.deinit(io);
49534962
49544963 var child_argv: std.ArrayList([]const u8) = .empty;
4955 try child_argv.ensureUnusedCapacity(arena, args.len + 6);
4964 try child_argv.ensureUnusedCapacity(arena, (args.len - args_i) + 6);
49564965
49574966 // We want to release all the locks before executing the child process, so we make a nice
49584967 // big block here to ensure the cleanup gets run when we extract out our argv.
......@@ -5064,7 +5073,7 @@ fn jitCmdInner(
50645073 if (options.prepend_seed)
50655074 child_argv.appendAssumeCapacity(try arena.print("--seed=0x{x}", .{randInt(io, u32)}));
50665075
5067 child_argv.appendSliceAssumeCapacity(args);
5076 child_argv.appendSliceAssumeCapacity(args[args_i..]);
50685077
50695078 if (EnvVar.ZIG_VERBOSE_CMD.isSet(environ_map)) {
50705079 const cmd: std.zig.SubprocessCommand = .{