mirror of
https://github.com/ziglang/zig.git
synced 2024-11-27 15:42:49 +00:00
add support for environment variables to control cache directories
This commit adds: ZIG_LOCAL_CACHE_DIR corresponding to --cache-dir ZIG_GLOBAL_CACHE_DIR corresponding to --global-cache-dir ZIG_LIB_DIR corresponding to --override-lib-dir The main use case is for `zig cc` where we are bound by clang's CLI options and need alternate channels to pass these configuration options.
This commit is contained in:
parent
c796c4528e
commit
2759313263
20
src/main.zig
20
src/main.zig
@ -420,6 +420,15 @@ const Emit = union(enum) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
fn optionalStringEnvVar(arena: *Allocator, name: []const u8) !?[]const u8 {
|
||||||
|
if (std.process.getEnvVarOwned(arena, name)) |value| {
|
||||||
|
return value;
|
||||||
|
} else |err| switch (err) {
|
||||||
|
error.EnvironmentVariableNotFound => return null,
|
||||||
|
else => |e| return e,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn buildOutputType(
|
fn buildOutputType(
|
||||||
gpa: *Allocator,
|
gpa: *Allocator,
|
||||||
arena: *Allocator,
|
arena: *Allocator,
|
||||||
@ -499,17 +508,14 @@ fn buildOutputType(
|
|||||||
var link_eh_frame_hdr = false;
|
var link_eh_frame_hdr = false;
|
||||||
var link_emit_relocs = false;
|
var link_emit_relocs = false;
|
||||||
var each_lib_rpath: ?bool = null;
|
var each_lib_rpath: ?bool = null;
|
||||||
var libc_paths_file: ?[]const u8 = std.process.getEnvVarOwned(arena, "ZIG_LIBC") catch |err| switch (err) {
|
var libc_paths_file: ?[]const u8 = try optionalStringEnvVar(arena, "ZIG_LIBC");
|
||||||
error.EnvironmentVariableNotFound => null,
|
|
||||||
else => |e| return e,
|
|
||||||
};
|
|
||||||
var machine_code_model: std.builtin.CodeModel = .default;
|
var machine_code_model: std.builtin.CodeModel = .default;
|
||||||
var runtime_args_start: ?usize = null;
|
var runtime_args_start: ?usize = null;
|
||||||
var test_filter: ?[]const u8 = null;
|
var test_filter: ?[]const u8 = null;
|
||||||
var test_name_prefix: ?[]const u8 = null;
|
var test_name_prefix: ?[]const u8 = null;
|
||||||
var override_local_cache_dir: ?[]const u8 = null;
|
var override_local_cache_dir: ?[]const u8 = try optionalStringEnvVar(arena, "ZIG_LOCAL_CACHE_DIR");
|
||||||
var override_global_cache_dir: ?[]const u8 = null;
|
var override_global_cache_dir: ?[]const u8 = try optionalStringEnvVar(arena, "ZIG_GLOBAL_CACHE_DIR");
|
||||||
var override_lib_dir: ?[]const u8 = null;
|
var override_lib_dir: ?[]const u8 = try optionalStringEnvVar(arena, "ZIG_LIB_DIR");
|
||||||
var main_pkg_path: ?[]const u8 = null;
|
var main_pkg_path: ?[]const u8 = null;
|
||||||
var clang_preprocessor_mode: Compilation.ClangPreprocessorMode = .no;
|
var clang_preprocessor_mode: Compilation.ClangPreprocessorMode = .no;
|
||||||
var subsystem: ?std.Target.SubSystem = null;
|
var subsystem: ?std.Target.SubSystem = null;
|
||||||
|
Loading…
Reference in New Issue
Block a user