From 3bfacf071e0d208d445292c62f6e19b3f5c607d7 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Wed, 27 Feb 2019 16:02:07 -0500 Subject: [PATCH] print the command that failed when C source code fails to build also respect the --color arg when building C code --- src/codegen.cpp | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/src/codegen.cpp b/src/codegen.cpp index 520c1eed00..d7dbab4556 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -8164,6 +8164,14 @@ static void gen_global_asm(CodeGen *g) { } } +static void print_zig_cc_cmd(const char *zig_exe, ZigList *args) { + fprintf(stderr, zig_exe); + for (size_t arg_i = 0; arg_i < args->length; arg_i += 1) { + fprintf(stderr, " %s", args->at(arg_i)); + } + fprintf(stderr, "\n"); +} + static void gen_c_object(CodeGen *g, Buf *self_exe_path, CFile *c_file) { Error err; @@ -8190,6 +8198,19 @@ static void gen_c_object(CodeGen *g, Buf *self_exe_path, CFile *c_file) { args.append("-nostdinc"); args.append("-fno-spell-checking"); + switch (g->err_color) { + case ErrColorAuto: + break; + case ErrColorOff: + args.append("-fno-color-diagnostics"); + args.append("-fno-caret-diagnostics"); + break; + case ErrColorOn: + args.append("-fcolor-diagnostics"); + args.append("-fcaret-diagnostics"); + break; + } + args.append("-isystem"); args.append(buf_ptr(g->zig_c_headers_dir)); @@ -8263,16 +8284,12 @@ static void gen_c_object(CodeGen *g, Buf *self_exe_path, CFile *c_file) { } if (g->verbose_cc) { - fprintf(stderr, "zig"); - for (size_t arg_i = 0; arg_i < args.length; arg_i += 1) { - fprintf(stderr, " %s", args.at(arg_i)); - } - fprintf(stderr, "\n"); + print_zig_cc_cmd("zig", &args); } - os_spawn_process(buf_ptr(self_exe_path), args, &term); if (term.how != TerminationIdClean || term.code != 0) { - fprintf(stderr, "`zig cc` failed\n"); + fprintf(stderr, "\nThe following command failed:\n"); + print_zig_cc_cmd(buf_ptr(self_exe_path), &args); exit(1); }