diff options
author | Shinichiro Hamaji <shinichiro.hamaji@gmail.com> | 2015-11-17 14:47:56 +0900 |
---|---|---|
committer | Shinichiro Hamaji <shinichiro.hamaji@gmail.com> | 2015-11-17 14:53:47 +0900 |
commit | 644d6b9b5e0ffa14e38e7c2212e1a686b248c1cd (patch) | |
tree | f01b896bfeefa0dc2b278bf3f2e9a73076849253 | |
parent | a84e670c9b2d9d8123c1f8fd06d1df890db291a4 (diff) | |
download | kati-644d6b9b5e0ffa14e38e7c2212e1a686b248c1cd.tar.gz |
[C++] Add --warn flag which produces extra warnings
-rw-r--r-- | flags.cc | 2 | ||||
-rw-r--r-- | flags.h | 1 | ||||
-rw-r--r-- | func.cc | 4 | ||||
-rw-r--r-- | log.h | 5 |
4 files changed, 12 insertions, 0 deletions
@@ -67,6 +67,8 @@ void Flags::Parse(int argc, char** argv) { is_silent_mode = true; } else if (!strcmp(arg, "--kati_stats")) { enable_stat_logs = true; + } else if (!strcmp(arg, "--warn")) { + enable_kati_warnings = true; } else if (!strcmp(arg, "--ninja")) { generate_ninja = true; } else if (!strcmp(arg, "--gen_all_targets")) { @@ -26,6 +26,7 @@ using namespace std; struct Flags { bool detect_android_echo; bool dump_kati_stamp; + bool enable_kati_warnings; bool enable_stat_logs; bool gen_all_targets; bool gen_regen_rule; @@ -455,6 +455,10 @@ void EvalFunc(const vector<Value*>& args, Evaluator* ev, string*) { //const string text = args[0]->Eval(ev); string* text = new string; args[0]->Eval(ev, text); + if (ev->avoid_io()) { + KATI_WARN("%s:%d: *warning*: $(eval) in a recipe is not recommended: %s", + LOCF(ev->loc()), text->c_str()); + } vector<Stmt*> stmts; Parse(*text, ev->loc(), &stmts); for (Stmt* stmt : stmts) { @@ -54,6 +54,11 @@ extern string* g_last_error; fprintf(stderr, "%s\n", StringPrintf(__VA_ARGS__).c_str()); \ } while (0) +#define KATI_WARN(...) do { \ + if (g_flags.enable_kati_warnings) \ + fprintf(stderr, "%s\n", StringPrintf(__VA_ARGS__).c_str()); \ + } while (0) + #define ERROR(...) do { \ if (!g_log_no_exit) { \ fprintf(stderr, "%s\n", StringPrintf(__VA_ARGS__).c_str()); \ |