aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShinichiro Hamaji <shinichiro.hamaji@gmail.com>2015-11-17 14:47:56 +0900
committerShinichiro Hamaji <shinichiro.hamaji@gmail.com>2015-11-17 14:53:47 +0900
commit644d6b9b5e0ffa14e38e7c2212e1a686b248c1cd (patch)
treef01b896bfeefa0dc2b278bf3f2e9a73076849253
parenta84e670c9b2d9d8123c1f8fd06d1df890db291a4 (diff)
downloadkati-644d6b9b5e0ffa14e38e7c2212e1a686b248c1cd.tar.gz
[C++] Add --warn flag which produces extra warnings
-rw-r--r--flags.cc2
-rw-r--r--flags.h1
-rw-r--r--func.cc4
-rw-r--r--log.h5
4 files changed, 12 insertions, 0 deletions
diff --git a/flags.cc b/flags.cc
index daf0c19..06772f0 100644
--- a/flags.cc
+++ b/flags.cc
@@ -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")) {
diff --git a/flags.h b/flags.h
index 8c72fa5..d2fe923 100644
--- a/flags.h
+++ b/flags.h
@@ -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;
diff --git a/func.cc b/func.cc
index 4de6de8..a194eb7 100644
--- a/func.cc
+++ b/func.cc
@@ -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) {
diff --git a/log.h b/log.h
index 68e0ba1..6507bde 100644
--- a/log.h
+++ b/log.h
@@ -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()); \