X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=tools%2Fccanlint%2Fccanlint.c;h=e59912cccfe289b56689ffb654469594d9ed069d;hb=8da574fe7c6021afcb0afb8ae3a6bd462ee14413;hp=231ae7c05c45e0b1050b834b096b48ddb634f23d;hpb=104125b2dd0a044fb3d68f9bc3b1b18c9f32ae2b;p=ccan diff --git a/tools/ccanlint/ccanlint.c b/tools/ccanlint/ccanlint.c index 231ae7c0..e59912cc 100644 --- a/tools/ccanlint/ccanlint.c +++ b/tools/ccanlint/ccanlint.c @@ -43,8 +43,8 @@ static struct btree *info_exclude; static unsigned int timeout; /* These are overridden at runtime if we can find config.h */ -const char *compiler = CCAN_COMPILER; -const char *cflags = CCAN_CFLAGS; +char *compiler = NULL; +char *cflags = NULL; const char *config_header; @@ -552,20 +552,28 @@ static void read_config_header(void) if (!get_token(line, "define")) continue; sym = get_symbol_token(lines, line); - if (streq(sym, "CCAN_COMPILER")) { + if (streq(sym, "CCAN_COMPILER") && !compiler) { compiler = demangle_string(lines[i]); + if (!compiler) + errx(1, "%s:%u:could not parse CCAN_COMPILER", + fname, i+1); if (verbose > 1) printf("%s: compiler set to '%s'\n", fname, compiler); - } else if (streq(sym, "CCAN_CFLAGS")) { + } else if (streq(sym, "CCAN_CFLAGS") && !cflags) { cflags = demangle_string(lines[i]); + if (!cflags) + errx(1, "%s:%u:could not parse CCAN_CFLAGS", + fname, i+1); if (verbose > 1) printf("%s: compiler flags set to '%s'\n", fname, cflags); } } - if (!compiler || !cflags) - errx(1, "Problem parsing %s", fname); + if (!compiler) + compiler = CCAN_COMPILER; + if (!cflags) + compiler = CCAN_CFLAGS; } int main(int argc, char *argv[]) @@ -605,6 +613,10 @@ int main(int argc, char *argv[]) opt_register_arg("--target ", opt_set_charp, NULL, &target, "only run one test (and its prerequisites)"); + opt_register_arg("--compiler ", opt_set_charp, + NULL, &compiler, "set the compiler"); + opt_register_arg("--cflags ", opt_set_charp, + NULL, &cflags, "set the compiler flags"); opt_register_noarg("-?|-h|--help", opt_usage_and_exit, "\nA program for checking and guiding development" " of CCAN modules.", @@ -653,7 +665,8 @@ int main(int argc, char *argv[]) } /* --target overrides known FAIL from _info */ - add_info_options(m->info_file, !target); + if (m->info_file) + add_info_options(m->info_file, !target); while ((i = get_next_test(&normal_tests)) != NULL) run_test(i, summary, &score, &total_score, m);