diff --git a/Makefile b/Makefile index aa33c40f..9cc77c55 100644 --- a/Makefile +++ b/Makefile @@ -473,7 +473,7 @@ if [ $$error_occured -gt 0 ]; then echo $$error_occured > $(ERROR_FILE); fi; endef define RUN_TEST +error_occured=0;\ -$($(TEST)_COMMAND))\ +$($(TEST)_COMMAND)\ if [ $$error_occured -gt 0 ]; then echo $$error_occured > $(ERROR_FILE); fi; endef @@ -485,11 +485,11 @@ $(SUBPROJECTS): %: %-allkm # Let's match everything, we handle all the rule parsing ourselves .PHONY: % -ifndef SKIP_GIT %: # Check if we have the CMP tool installed cmp --version >/dev/null 2>&1; if [ $$? -gt 0 ]; then printf "$(MSG_NO_CMP)"; exit 1; fi; # Check if the submodules are dirty, and display a warning if they are +ifndef SKIP_GIT git submodule status --recursive 2>/dev/null | \ while IFS= read -r x; do \ case "$$x" in \ @@ -497,6 +497,7 @@ ifndef SKIP_GIT *) printf "$(MSG_SUBMODULE_DIRTY)";break;; \ esac \ done +endif rm -f $(ERROR_FILE) > /dev/null 2>&1 $(eval $(call PARSE_RULE,$@)) $(eval $(call SET_SILENT_MODE)) @@ -508,22 +509,6 @@ ifndef SKIP_GIT if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi; $(foreach TEST,$(TESTS),$(RUN_TEST)) if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi; -else -%: - # Check if we have the CMP tool installed - cmp --version >/dev/null 2>&1; if [ $$? -gt 0 ]; then printf "$(MSG_NO_CMP)"; exit 1; fi; - rm -f $(ERROR_FILE) > /dev/null 2>&1 - $(eval $(call PARSE_RULE,$@)) - $(eval $(call SET_SILENT_MODE)) - # Run all the commands in the same shell, notice the + at the first line - # it has to be there to allow parallel execution of the submake - # This always tries to compile everything, even if error occurs in the middle - # But we return the error code at the end, to trigger travis failures - $(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND)) - if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi; - $(foreach TEST,$(TESTS),$(RUN_TEST)) - if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi; -endif # All should compile everything .PHONY: all