From 88dc18a31952edcf2dfea737e3989f2112e5155f Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Mon, 5 Oct 2015 15:12:08 -0700 Subject: [PATCH 1/2] Put NINJA_ARGS last Put NINJA_ARGS at the end of the command line so it can contain tools, which expect to be last. Change-Id: I5f47307d01aa52eb74a333b19ffe3a7cd8950b01 --- core/ninja.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/ninja.mk b/core/ninja.mk index 6fc508d49..81298e52b 100644 --- a/core/ninja.mk +++ b/core/ninja.mk @@ -121,7 +121,7 @@ fastincremental droid $(ANDROID_TARGETS) $(EXTRA_TARGETS): ninja.intermediate .INTERMEDIATE: ninja.intermediate ninja.intermediate: $(KATI_OUTPUTS) $(MAKEPARALLEL) @echo Starting build with ninja - +$(hide) PATH=prebuilts/ninja/$(HOST_PREBUILT_TAG)/:$$PATH NINJA_STATUS="$(NINJA_STATUS)" $(NINJA_MAKEPARALLEL) $(KATI_NINJA_SH) -C $(TOP) $(NINJA_ARGS) $(filter-out dist,$(ANDROID_TARGETS)) + +$(hide) PATH=prebuilts/ninja/$(HOST_PREBUILT_TAG)/:$$PATH NINJA_STATUS="$(NINJA_STATUS)" $(NINJA_MAKEPARALLEL) $(KATI_NINJA_SH) $(filter-out dist,$(ANDROID_TARGETS)) -C $(TOP) $(NINJA_ARGS) else generateonly droid $(ANDROID_TARGETS) $(EXTRA_TARGETS): $(KATI_OUTPUTS) @#empty From 466ea35202f5e858f6f9191cb43d99d113698f5d Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Tue, 20 Oct 2015 15:41:05 -0700 Subject: [PATCH 2/2] 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 --- tools/makeparallel/Makefile | 2 ++ tools/makeparallel/Makefile.test | 2 +- tools/makeparallel/makeparallel.cpp | 8 +++++++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/tools/makeparallel/Makefile b/tools/makeparallel/Makefile index 4e7970899..4e12b10f2 100644 --- a/tools/makeparallel/Makefile +++ b/tools/makeparallel/Makefile @@ -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 diff --git a/tools/makeparallel/Makefile.test b/tools/makeparallel/Makefile.test index 91aacf7d7..cf53684c0 100644 --- a/tools/makeparallel/Makefile.test +++ b/tools/makeparallel/Makefile.test @@ -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; \ diff --git a/tools/makeparallel/makeparallel.cpp b/tools/makeparallel/makeparallel.cpp index 7dd0ceb2a..576fe8df8 100644 --- a/tools/makeparallel/makeparallel.cpp +++ b/tools/makeparallel/makeparallel.cpp @@ -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 args(&argv[1], &argv[argc]); + std::vector args({argv[1]}); std::vector makeflags = ReadMakeflags(); if (ParseMakeflags(makeflags, &in_fd, &out_fd, ¶llel, &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();