aboutsummaryrefslogtreecommitdiff
path: root/main.cc
diff options
context:
space:
mode:
authorShinichiro Hamaji <shinichiro.hamaji@gmail.com>2015-09-09 17:37:41 +0900
committerShinichiro Hamaji <shinichiro.hamaji@gmail.com>2015-09-09 17:37:41 +0900
commitb6a04540f2522a37b88090c0c806649399bed083 (patch)
tree1cc3e4b42cd58b89b8b708516f5dbe0826875201 /main.cc
parent91571ac184d4a152584fda1ef2c2ab40f2971cd6 (diff)
[C++] Fix submake_basic.mk for non-ninja mode
Diffstat (limited to 'main.cc')
-rw-r--r--main.cc23
1 files changed, 21 insertions, 2 deletions
diff --git a/main.cc b/main.cc
index 5373556..f1d3ce1 100644
--- a/main.cc
+++ b/main.cc
@@ -51,6 +51,7 @@ static bool g_dump_kati_stamp;
static const char* g_ninja_suffix;
static const char* g_ninja_dir;
static bool g_use_find_emulator;
+static vector<const char*> g_subkati_args;
static bool ParseCommandLineOptionWithArg(StringPiece option,
char* argv[],
@@ -79,17 +80,23 @@ static bool ParseCommandLineOptionWithArg(StringPiece option,
static void ParseCommandLine(int argc, char* argv[],
vector<Symbol>* targets,
vector<StringPiece>* cl_vars) {
+ g_subkati_args.push_back(argv[0]);
g_num_jobs = sysconf(_SC_NPROCESSORS_ONLN);
const char* num_jobs_str;
for (int i = 1; i < argc; i++) {
const char* arg = argv[i];
+ bool should_propagate = true;
+ int pi = i;
if (!strcmp(arg, "-f")) {
g_makefile = argv[++i];
+ should_propagate = false;
} else if (!strcmp(arg, "-c")) {
g_is_syntax_check_only = true;
} else if (!strcmp(arg, "-i")) {
g_is_dry_run = true;
+ } else if (!strcmp(arg, "-s")) {
+ g_is_silent_mode = true;
} else if (!strcmp(arg, "--kati_stats")) {
g_enable_stat_logs = true;
} else if (!strcmp(arg, "--ninja")) {
@@ -142,9 +149,16 @@ static void ParseCommandLine(int argc, char* argv[],
if (strchr(arg, '=')) {
cl_vars->push_back(arg);
} else {
+ should_propagate = false;
targets->push_back(Intern(arg));
}
}
+
+ if (should_propagate) {
+ for (; pi <= i; pi++) {
+ g_subkati_args.push_back(argv[pi]);
+ }
+ }
}
}
@@ -202,8 +216,13 @@ static void ReadBootstrapMakefile(const vector<Symbol>& targets,
"\t$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c -o $@ $<\n"
// TODO: Add more builtin rules.
);
- bootstrap += StringPrintf("MAKE?=make -j%d\n",
- g_num_jobs < 1 ? 1 : g_num_jobs / 2);
+ if (g_generate_ninja) {
+ bootstrap += StringPrintf("MAKE?=make -j%d\n",
+ g_num_jobs < 1 ? 1 : g_num_jobs / 2);
+ } else {
+ bootstrap += StringPrintf("MAKE?=%s\n",
+ JoinStrings(g_subkati_args, " ").c_str());
+ }
bootstrap += StringPrintf("MAKECMDGOALS?=%s\n",
JoinSymbols(targets, " ").c_str());