From fbbead928b8dfc6463b49a60becdd22395bf6701 Mon Sep 17 00:00:00 2001 From: Jesse Vincent Date: Mon, 28 Mar 2022 00:30:22 -0700 Subject: [PATCH] Don't interleave output from test suite when running under gmake4 or newer. On gmake 3, warn the user --- Makefile | 7 ++++++- testing/makefiles/testcase.mk | 1 + tests/Makefile | 4 ++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index c787210f..29a3464f 100644 --- a/Makefile +++ b/Makefile @@ -21,7 +21,9 @@ MAKEFLAGS += --no-builtin-rules # GNU Make earlier than 4.0 don't have the output-sync option, but we need it # to make parallel simulator test output readable. (otherwise it gets interleaved) ifeq ($(shell test $(firstword $(subst ., ,$(MAKE_VERSION))) -ge 4; echo $$?),0) -SUBDIR_MAKEFLAGS+=--output-sync=target +MAKEFLAGS+=--output-sync=target +else +_using_old_make=1 endif include $(dir $(abspath $(lastword $(MAKEFILE_LIST))))/etc/makefiles/arduino-cli.mk @@ -73,6 +75,9 @@ update: git submodule update --init --recursive simulator-tests: +ifneq ($(_using_old_make),) + $(info You're using an older version of GNU Make that doesn't offer the --output-sync option. If you're running the test suite in parallel, output may be garbled. You might consider using GNU Make 4.0 or later instead) +endif $(MAKE) -C tests all docker-simulator-tests: diff --git a/testing/makefiles/testcase.mk b/testing/makefiles/testcase.mk index 1a35608e..1629c51b 100644 --- a/testing/makefiles/testcase.mk +++ b/testing/makefiles/testcase.mk @@ -69,6 +69,7 @@ build: $(if $(HAS_KTEST_FILE), generate-testcase) compile-sketch all: run run: ${BIN_DIR}/${BIN_FILE} + $(info ) $(info Running test $(testcase)) $(QUIET) "${BIN_DIR}/${BIN_FILE}" -t -q diff --git a/tests/Makefile b/tests/Makefile index 6dc80211..f00e2ad7 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -36,6 +36,10 @@ TESTS := $(shell cd $(tests_dir); find ${TEST_PATH} -name '*.ino' -exec dirname KALEIDOSCOPE_CCACHE = 1 +# The clutter up the test output on Make 4.0 and newer +MAKEFLAGS += --no-print-directory + + include $(top_dir)/etc/makefiles/arduino-cli.mk # If we start off in tests to run make all, the sketch makefiles guess the wrong location for