summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorFred Sundvik <fsundvik@gmail.com>2017-04-09 20:04:12 +0300
committerFred Sundvik <fsundvik@gmail.com>2017-04-13 16:00:29 +0300
commit224fc8a20fc78927ed90326ca6c07370d33d00d5 (patch)
treeab27510594a95cd4f1a71e92c8a6fbf80fed2cd5 /Makefile
parentd3301c0f8b0005738ab9aa2030d83739ffb5c4b6 (diff)
downloadqmk_firmware-224fc8a20fc78927ed90326ca6c07370d33d00d5.tar.gz
qmk_firmware-224fc8a20fc78927ed90326ca6c07370d33d00d5.zip
Add makefile option to break on errors
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile13
1 files changed, 10 insertions, 3 deletions
diff --git a/Makefile b/Makefile
index 9d9c9629d5..297de0cafb 100644
--- a/Makefile
+++ b/Makefile
@@ -21,6 +21,8 @@ override SILENT := false
ON_ERROR := error_occurred=1
+BREAK_ON_ERRORS = no
+
STARTING_MAKEFILE := $(firstword $(MAKEFILE_LIST))
ROOT_MAKEFILE := $(lastword $(MAKEFILE_LIST))
ROOT_DIR := $(dir $(ROOT_MAKEFILE))
@@ -462,20 +464,25 @@ endef
include $(ROOT_DIR)/message.mk
+ifeq ($(strip $(BREAK_ON_ERRORS)), yes)
+HANDLE_ERROR = exit 1
+else
+HANDLE_ERROR = echo $$error_occurred > $(ERROR_FILE)
+endif
+
# The empty line is important here, as it will force a new shell to be created for each command
# Otherwise the command line will become too long with a lot of keyboards and keymaps
define RUN_COMMAND
+error_occurred=0;\
$(COMMAND_$(SILENT_MODE)_$(COMMAND))\
-if [ $$error_occurred -gt 0 ]; then echo $$error_occurred > $(ERROR_FILE); fi;
+if [ $$error_occurred -gt 0 ]; then $(HANDLE_ERROR); fi;
endef
define RUN_TEST
+error_occurred=0;\
$($(TEST)_COMMAND)\
-if [ $$error_occurred -gt 0 ]; then echo $$error_occurred > $(ERROR_FILE); fi;
-
+if [ $$error_occurred -gt 0 ]; then $(HANDLE_ERROR); fi;
endef
# Allow specifying just the subproject, in the keyboard directory, which will compile all keymaps