Chore/make test parallel build limits (#480)
* re-enable parallel build for CMake unit tests, but limited to ncores on supported OSes. Using MAKEFLAGS in .bashrc to set the '-j' flag size causes problem for Makefile build of BACnet library which doesn't tolerate parallel builds. Using "-j" without limits for CMake of unit tests overwhelms my lesser endowed build machines. --------- Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
This commit is contained in:
+45
-2
@@ -14,17 +14,53 @@ BUILD_DIR=build
|
|||||||
CTEST_OPTIONS := --quiet --output-on-failure
|
CTEST_OPTIONS := --quiet --output-on-failure
|
||||||
CTEST_OPTIONS += --output-junit test-results.xml
|
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
|
.PHONY: test
|
||||||
test:
|
test:
|
||||||
[ -d $(BUILD_DIR) ] || mkdir -p $(BUILD_DIR)
|
[ -d $(BUILD_DIR) ] || mkdir -p $(BUILD_DIR)
|
||||||
[ -d $(BUILD_DIR) ] && cd $(BUILD_DIR) && cmake .. && cd ..
|
[ -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) ] && cd $(BUILD_DIR) && ctest $(CTEST_OPTIONS)
|
||||||
[ -d $(BUILD_DIR) ] && $(MAKE) -C $(BUILD_DIR) lcov
|
[ -d $(BUILD_DIR) ] && $(MAKE) -C $(BUILD_DIR) lcov
|
||||||
|
|
||||||
.PHONY: retest
|
.PHONY: retest
|
||||||
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) ] && cd $(BUILD_DIR) && ctest $(CTEST_OPTIONS)
|
||||||
[ -d $(BUILD_DIR) ] && $(MAKE) -C $(BUILD_DIR) lcov
|
[ -d $(BUILD_DIR) ] && $(MAKE) -C $(BUILD_DIR) lcov
|
||||||
|
|
||||||
@@ -32,6 +68,13 @@ retest:
|
|||||||
report:
|
report:
|
||||||
[ -d $(BUILD_DIR) ] && cat $(BUILD_DIR)/Testing/Temporary/LastTest*.log
|
[ -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
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
-rm -rf $(BUILD_DIR)
|
-rm -rf $(BUILD_DIR)
|
||||||
|
|||||||
Reference in New Issue
Block a user