diff --git a/test/Makefile b/test/Makefile index 6ac6ab53..4a446f42 100644 --- a/test/Makefile +++ b/test/Makefile @@ -14,17 +14,53 @@ BUILD_DIR=build CTEST_OPTIONS := --quiet --output-on-failure CTEST_OPTIONS += --output-junit test-results.xml +# determine the compile environment name +ifeq ($(OS),Windows_NT) +SYS := $(shell gcc -dumpmachine) +ifneq (, $(findstring mingw, $(SYS))) +UNAME_S := MinGW +else ifneq (, $(findstring cygwin, $(SYS))) +UNAME_S := Cygwin +else +UNAME_S := Windows +endif +else +UNAME_S := $(shell uname -s) +UNAME_S := $(patsubst BSD%,BSD,$(UNAME_S)) +endif + +# unlimited parallel makefile jobs can +# overwhelm builders with limited resources +# set job limits based on number of core processors +ifeq (${JOBS},) + ifeq ($(UNAME_S),Windows) + JOBS = "-j %NUMBER_OF_PROCESSORS%" + endif + ifeq ($(UNAME_S),Linux) + JOBS = "-j $(nproc)" + endif + ifeq ($(UNAME_S),Darwin) + JOBS = "-j $(sysctl -n hw.ncpu)" + endif + ifeq ($(UNAME_S),BSD) + JOBS = "-j $(sysctl -n hw.ncpu)" + endif + ifeq ($(UNAME_S),MinGW) + JOBS = "-j" + endif +endif + .PHONY: test test: [ -d $(BUILD_DIR) ] || mkdir -p $(BUILD_DIR) [ -d $(BUILD_DIR) ] && cd $(BUILD_DIR) && cmake .. && cd .. - [ -d $(BUILD_DIR) ] && cd $(BUILD_DIR) && cmake --build . --clean-first && cd .. + [ -d $(BUILD_DIR) ] && cd $(BUILD_DIR) && cmake --build . $(JOBS) --clean-first && cd .. [ -d $(BUILD_DIR) ] && cd $(BUILD_DIR) && ctest $(CTEST_OPTIONS) [ -d $(BUILD_DIR) ] && $(MAKE) -C $(BUILD_DIR) lcov .PHONY: retest retest: - [ -d $(BUILD_DIR) ] && cd $(BUILD_DIR) && cmake --build . && cd .. + [ -d $(BUILD_DIR) ] && cd $(BUILD_DIR) && cmake --build . $(JOBS) && cd .. [ -d $(BUILD_DIR) ] && cd $(BUILD_DIR) && ctest $(CTEST_OPTIONS) [ -d $(BUILD_DIR) ] && $(MAKE) -C $(BUILD_DIR) lcov @@ -32,6 +68,13 @@ retest: report: [ -d $(BUILD_DIR) ] && cat $(BUILD_DIR)/Testing/Temporary/LastTest*.log +.PHONY: env +env: + @echo "Makefile environment variables" + @echo "UNAME_S=$(UNAME_S)" + @echo "JOBS=$(JOBS)" + @echo "BUILD_DIR=$(BUILD_DIR)" + .PHONY: clean clean: -rm -rf $(BUILD_DIR)