authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-03-04 17:37:53-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-03-04 17:37:53-07:00
log98b24aa47f98d9c70d1e152228ac89dd41e0f637
treeac089158784ff211ad44a726b801519e4fdac126
parentffb2568a9f0d038a94a23bfe776602ac9099e2a0

stage2: support environment variables for verbose options

The presence of ZIG_VERBOSE_LINK now enables --verbose-link. The presence of ZIG_VERBOSE_CC now enables --verbose-cc. These are useful when debugging usage of `zig cc` which does not have CLI flags for these options, since they are not valid C compiler flags.

1 files changed, 11 insertions(+), 2 deletions(-)

src/main.zig+11-2
......@@ -448,6 +448,15 @@ const Emit = union(enum) {
448448 }
449449};
450450
451fn optionalBoolEnvVar(arena: *Allocator, name: []const u8) !bool {
452 if (std.process.getEnvVarOwned(arena, name)) |value| {
453 return true;
454 } else |err| switch (err) {
455 error.EnvironmentVariableNotFound => return false,
456 else => |e| return e,
457 }
458}
459
451460fn optionalStringEnvVar(arena: *Allocator, name: []const u8) !?[]const u8 {
452461 if (std.process.getEnvVarOwned(arena, name)) |value| {
453462 return value;
......@@ -482,8 +491,8 @@ fn buildOutputType(
482491 var single_threaded = false;
483492 var function_sections = false;
484493 var watch = false;
485 var verbose_link = false;
486 var verbose_cc = false;
494 var verbose_link = try optionalBoolEnvVar(arena, "ZIG_VERBOSE_LINK");
495 var verbose_cc = try optionalBoolEnvVar(arena, "ZIG_VERBOSE_CC");
487496 var verbose_tokenize = false;
488497 var verbose_ast = false;
489498 var verbose_ir = false;