Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 466ea352 authored by Colin Cross's avatar Colin Cross
Browse files

makeparallel: prepend flags to ninja command line

Ninja stops parsing top level options after -t is used to select a
tool.  Put any inserted command line options at the beginning of the
command.

Change-Id: I2ba903143366aaded63e21d749476248617c8962
parent 88dc18a3
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -90,3 +90,5 @@ makeparallel_test: $(MAKEPARALLEL)
	@EXPECTED="-j1"    $(MAKEPARALLEL_TEST) A=-j1234
	@EXPECTED="-j1"    $(MAKEPARALLEL_TEST) A\ -j1234=-j1234
	@EXPECTED="-j1234" $(MAKEPARALLEL_TEST) A\ -j1234=-j1234 -j1234

	@EXPECTED="-j1234 args" ARGS="args" $(MAKEPARALLEL_TEST) -j1234
+1 −1
Original line number Diff line number Diff line
@@ -3,7 +3,7 @@ MAKEPARALLEL ?= ./makeparallel
.PHONY: test
test:
	@+echo MAKEFLAGS=$${MAKEFLAGS};              \
	result=$$($(MAKEPARALLEL) echo);             \
	result=$$($(MAKEPARALLEL) echo $(ARGS));     \
	echo result: $${result};                     \
	if [ "$${result}" = "$(EXPECTED)" ]; then    \
	  echo SUCCESS && echo;                      \
+7 −1
Original line number Diff line number Diff line
@@ -298,8 +298,12 @@ int main(int argc, char* argv[]) {
    argc--;
  }

  if (argc < 2) {
    error(EXIT_FAILURE, 0, "expected command to run");
  }

  const char* path = argv[1];
  std::vector<char*> args(&argv[1], &argv[argc]);
  std::vector<char*> args({argv[1]});

  std::vector<std::string> makeflags = ReadMakeflags();
  if (ParseMakeflags(makeflags, &in_fd, &out_fd, &parallel, &keep_going)) {
@@ -328,6 +332,8 @@ int main(int argc, char* argv[]) {
    args.push_back(strdup(jarg.c_str()));
  }

  args.insert(args.end(), &argv[2], &argv[argc]);

  args.push_back(nullptr);

  pid_t pid = fork();