Now make -jN builds and runs selftests in parallel. Also, if one
selftest fails to build or run, make will return an error, whereas
before the error was ignored.

Signed-off-by: Peter Feiner <pfei...@google.com>

---

v1 -> v2:
        Moved fix for missing 'make clean' target into separate
        patch.
---
 tools/testing/selftests/Makefile | 49 ++++++++++++++++------------------------
 1 file changed, 20 insertions(+), 29 deletions(-)

diff --git a/tools/testing/selftests/Makefile b/tools/testing/selftests/Makefile
index 36ff2e4..8c33716 100644
--- a/tools/testing/selftests/Makefile
+++ b/tools/testing/selftests/Makefile
@@ -18,32 +18,23 @@ TARGETS += firmware
 TARGETS_HOTPLUG = cpu-hotplug
 TARGETS_HOTPLUG += memory-hotplug
 
-all:
-       for TARGET in $(TARGETS); do \
-               make -C $$TARGET; \
-       done;
-
-run_tests: all
-       for TARGET in $(TARGETS); do \
-               make -C $$TARGET run_tests; \
-       done;
-
-hotplug:
-       for TARGET in $(TARGETS_HOTPLUG); do \
-               make -C $$TARGET; \
-       done;
-
-run_hotplug: hotplug
-       for TARGET in $(TARGETS_HOTPLUG); do \
-               make -C $$TARGET run_full_test; \
-       done;
-
-clean_hotplug:
-       for TARGET in $(TARGETS_HOTPLUG); do \
-               make -C $$TARGET clean; \
-       done;
-
-clean:
-       for TARGET in $(TARGETS); do \
-               make -C $$TARGET clean; \
-       done;
+BUILD_TARGETS=$(TARGETS:%=build-%) $(TARGETS_HOTPLUG:%=build-%)
+TEST_TARGETS=$(TARGETS:%=test-%)
+CLEAN_TARGETS=$(TARGETS:%=clean-%) $(TARGETS_HOTPLUG:%=clean-%)
+
+all: $(BUILD_TARGETS)
+
+run_hotplug: test-cpu-hotplug test-memory-hotplug
+
+run_tests: $(TEST_TARGETS)
+
+clean: $(CLEAN_TARGETS)
+
+build-%:
+       $(MAKE) -C $(@:build-%=%)
+
+test-%: build-%
+       $(MAKE) -C $(@:test-%=%) run_tests
+
+clean-%:
+       $(MAKE) -C $(@:clean-%=%) clean
-- 
2.1.0.rc2.206.gedb03e5

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to