makeparallel: improve support for wrapping ninja
Allow makeparallel to pass better -j and -k arguments to ninja if the
first argument to makeparallel is --ninja. Uses getopt to parse
MAKEFLAGS to get values for --jobserver-fds, -k, and -j, and uses the
result to not pass any -j argument to ninja for make -j with no number,
and pass -k0 to ninja for make -k.
Also improve the test makefile to provide many more tests.
Bug: 24199503
Change-Id: Id6481430f77e9e952213be58a98fe78c46ee5d6a
diff --git a/tools/makeparallel/Makefile b/tools/makeparallel/Makefile
index ed8fdfc..4e79708 100644
--- a/tools/makeparallel/Makefile
+++ b/tools/makeparallel/Makefile
@@ -59,6 +59,34 @@
-include $(MAKEPARALLEL_INTERMEDIATES_PATH)/*.d
-.PHONY: test
-test: $(MAKEPARALLEL)
- MAKEFLAGS= $(MAKE) -j1234 -C $(MAKEPARALLEL_SRC_PATH) -f Makefile.test MAKEPARALLEL=$(MAKEPARALLEL) test
+.PHONY: makeparallel_test
+MAKEPARALLEL_TEST := MAKEFLAGS= MAKELEVEL= MAKEPARALLEL=$(MAKEPARALLEL) $(MAKE) -f Makefile.test test
+MAKEPARALLEL_NINJA_TEST := MAKEFLAGS= MAKELEVEL= MAKEPARALLEL="$(MAKEPARALLEL) --ninja" $(MAKE) -f Makefile.test test
+makeparallel_test: $(MAKEPARALLEL)
+ @EXPECTED="-j1234" $(MAKEPARALLEL_TEST) -j1234
+ @EXPECTED="-j123" $(MAKEPARALLEL_TEST) -j123
+ @EXPECTED="-j1" $(MAKEPARALLEL_TEST) -j1
+ @EXPECTED="-j1" $(MAKEPARALLEL_TEST)
+
+ @EXPECTED="-j1234" $(MAKEPARALLEL_NINJA_TEST) -j1234
+ @EXPECTED="-j123" $(MAKEPARALLEL_NINJA_TEST) -j123
+ @EXPECTED="-j1" $(MAKEPARALLEL_NINJA_TEST) -j1
+ @EXPECTED="-j1" $(MAKEPARALLEL_NINJA_TEST)
+ @EXPECTED="" $(MAKEPARALLEL_NINJA_TEST) -j
+ @EXPECTED="" $(MAKEPARALLEL_NINJA_TEST) -j -l
+
+ @EXPECTED="-j1234" $(MAKEPARALLEL_TEST) --no-print-directory -j1234
+ @EXPECTED="-j1234" $(MAKEPARALLEL_TEST) --no-print-directory -k -j1234
+ @EXPECTED="-j1234" $(MAKEPARALLEL_TEST) -k -j1234
+ @EXPECTED="-j1234" $(MAKEPARALLEL_TEST) -j1234 -k
+ @EXPECTED="-j1234" $(MAKEPARALLEL_TEST) -kt -j1234
+
+ @EXPECTED="-j1234" $(MAKEPARALLEL_NINJA_TEST) --no-print-directory -j1234
+ @EXPECTED="-j1234 -k0" $(MAKEPARALLEL_NINJA_TEST) --no-print-directory -k -j1234
+ @EXPECTED="-j1234 -k0" $(MAKEPARALLEL_NINJA_TEST) -k -j1234
+ @EXPECTED="-j1234 -k0" $(MAKEPARALLEL_NINJA_TEST) -j1234 -k
+ @EXPECTED="-j1234 -k0" $(MAKEPARALLEL_NINJA_TEST) -kt -j1234
+
+ @EXPECTED="-j1" $(MAKEPARALLEL_TEST) A=-j1234
+ @EXPECTED="-j1" $(MAKEPARALLEL_TEST) A\ -j1234=-j1234
+ @EXPECTED="-j1234" $(MAKEPARALLEL_TEST) A\ -j1234=-j1234 -j1234