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()...@@ -729,6 +729,8 @@ endif()
729729
730730
731set(ZIG_BUILD_ARGS731set(ZIG_BUILD_ARGS
732 "--zig-lib=${PROJECT_SOURCE_DIR}/lib"
733
732 "-Dversion-string=${RESOLVED_ZIG_VERSION}"734 "-Dversion-string=${RESOLVED_ZIG_VERSION}"
733 "-Dtarget=${ZIG_TARGET_TRIPLE}"735 "-Dtarget=${ZIG_TARGET_TRIPLE}"
734 "-Dcpu=${ZIG_TARGET_MCPU}"736 "-Dcpu=${ZIG_TARGET_MCPU}"
...@@ -791,7 +793,7 @@ set(ZIG2_WORKING_DIR "${PROJECT_SOURCE_DIR}")...@@ -791,7 +793,7 @@ set(ZIG2_WORKING_DIR "${PROJECT_SOURCE_DIR}")
791793
792add_custom_command(794add_custom_command(
793 OUTPUT "${PROJECT_BINARY_DIR}/stage3/bin/zig"795 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"
795 COMMENT "Building stage3"797 COMMENT "Building stage3"
796 WORKING_DIRECTORY "${ZIG2_WORKING_DIR}"798 WORKING_DIRECTORY "${ZIG2_WORKING_DIR}"
797)799)
cmake/install.cmake+1-1
...@@ -1,4 +1,4 @@...@@ -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}")
2execute_process(2execute_process(
3 COMMAND "${ZIG_EXECUTABLE}" ${ZIG_INSTALL_ARGS}3 COMMAND "${ZIG_EXECUTABLE}" ${ZIG_INSTALL_ARGS}
4 WORKING_DIRECTORY "${ZIG2_WORKING_DIR}"4 WORKING_DIRECTORY "${ZIG2_WORKING_DIR}"
lib/compiler/Maker.zig+2
...@@ -316,6 +316,8 @@ pub fn main(init: process.Init.Minimal) !void {...@@ -316,6 +316,8 @@ pub fn main(init: process.Init.Minimal) !void {
316 try forks.append(arena, .init(rest));316 try forks.append(arena, .init(rest));
317 } else if (mem.eql(u8, arg, "--fork")) {317 } else if (mem.eql(u8, arg, "--fork")) {
318 try forks.append(arena, .init(nextArgOrFatal(args, &arg_i)));318 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", .{});
319 } else if (mem.eql(u8, arg, "-h") or mem.eql(u8, arg, "--help")) {321 } else if (mem.eql(u8, arg, "-h") or mem.eql(u8, arg, "--help")) {
320 help_menu = true;322 help_menu = true;
321 } else if (mem.eql(u8, arg, "-l") or mem.eql(u8, arg, "--list-steps")) {323 } 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 {...@@ -342,6 +342,7 @@ pub fn printUsage(sc: *const ScannedConfig, graph: *Graph, w: *Writer) !void {
342 \\ --build-file [file] Override path to build.zig342 \\ --build-file [file] Override path to build.zig
343 \\ --cache-dir [path] Override path to local Zig cache directory343 \\ --cache-dir [path] Override path to local Zig cache directory
344 \\ --global-cache-dir [path] Override path to global Zig cache directory344 \\ --global-cache-dir [path] Override path to global Zig cache directory
345 \\ --zig-lib=[arg] Override path to Zig lib directory
345 \\ --seed [integer] For shuffling dependency traversal order (default: random)346 \\ --seed [integer] For shuffling dependency traversal order (default: random)
346 \\ --cache-poison[=mode] Override configuration caching behavior347 \\ --cache-poison[=mode] Override configuration caching behavior
347 \\ pure (default) Avoid false positive cache hits348 \\ pure (default) Avoid false positive cache hits
src/main.zig+12-3
...@@ -4932,9 +4932,18 @@ fn jitCmdInner(...@@ -4932,9 +4932,18 @@ fn jitCmdInner(
4932 else4932 else
4933 options.release_mode;4933 options.release_mode;
4934 const strip = optimize_mode != .Debug;4934 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);
4936 const override_global_cache_dir: ?[]const u8 = EnvVar.ZIG_GLOBAL_CACHE_DIR.get(environ_map);4936 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
4938 const cwd_path = try std.zig.getResolvedCwd(io, arena);4947 const cwd_path = try std.zig.getResolvedCwd(io, arena);
49394948
4940 // This `init` calls `fatal` on error.4949 // This `init` calls `fatal` on error.
...@@ -4952,7 +4961,7 @@ fn jitCmdInner(...@@ -4952,7 +4961,7 @@ fn jitCmdInner(
4952 defer dirs.deinit(io);4961 defer dirs.deinit(io);
49534962
4954 var child_argv: std.ArrayList([]const u8) = .empty;4963 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
4957 // We want to release all the locks before executing the child process, so we make a nice4966 // We want to release all the locks before executing the child process, so we make a nice
4958 // big block here to ensure the cleanup gets run when we extract out our argv.4967 // big block here to ensure the cleanup gets run when we extract out our argv.
...@@ -5064,7 +5073,7 @@ fn jitCmdInner(...@@ -5064,7 +5073,7 @@ fn jitCmdInner(
5064 if (options.prepend_seed)5073 if (options.prepend_seed)
5065 child_argv.appendAssumeCapacity(try arena.print("--seed=0x{x}", .{randInt(io, u32)}));5074 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
5069 if (EnvVar.ZIG_VERBOSE_CMD.isSet(environ_map)) {5078 if (EnvVar.ZIG_VERBOSE_CMD.isSet(environ_map)) {
5070 const cmd: std.zig.SubprocessCommand = .{5079 const cmd: std.zig.SubprocessCommand = .{