diff options
Diffstat (limited to 'tools/makeparallel/makeparallel.cpp')
| -rw-r--r-- | tools/makeparallel/makeparallel.cpp | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/tools/makeparallel/makeparallel.cpp b/tools/makeparallel/makeparallel.cpp index 4ae8f61d9d..0e1e45c153 100644 --- a/tools/makeparallel/makeparallel.cpp +++ b/tools/makeparallel/makeparallel.cpp @@ -317,20 +317,38 @@ int main(int argc, char* argv[]) { } } - std::string jarg = "-j" + std::to_string(tokens + 1); + std::string jarg; + if (parallel) { + if (tokens == 0) { + if (ninja) { + // ninja is parallel by default + jarg = ""; + } else { + // make -j with no argument, guess a reasonable parallelism like ninja does + jarg = "-j" + std::to_string(sysconf(_SC_NPROCESSORS_ONLN) + 2); + } + } else { + jarg = "-j" + std::to_string(tokens + 1); + } + } + if (ninja) { if (!parallel) { // ninja is parallel by default, pass -j1 to disable parallelism if make wasn't parallel args.push_back(strdup("-j1")); - } else if (tokens > 0) { - args.push_back(strdup(jarg.c_str())); + } else { + if (jarg != "") { + args.push_back(strdup(jarg.c_str())); + } } if (keep_going) { args.push_back(strdup("-k0")); } } else { - args.push_back(strdup(jarg.c_str())); + if (jarg != "") { + args.push_back(strdup(jarg.c_str())); + } } args.insert(args.end(), &argv[2], &argv[argc]); |