summaryrefslogtreecommitdiffstats
path: root/Makefile
diff options
context:
space:
mode:
authorFred Sundvik <fsundvik@gmail.com>2016-08-09 08:52:01 +0200
committerFred Sundvik <fsundvik@gmail.com>2016-08-20 02:56:36 +0200
commit8732265928818dd0b8797fb271e7c7fa9346d025 (patch)
tree11adfbdc06f53f12ba2b9d9585dd91a0aedf6e41 /Makefile
parente4c842de02d95e98f65c7bb4a8406ec6df4944fe (diff)
downloadqmk_firmware-8732265928818dd0b8797fb271e7c7fa9346d025.tar.gz
qmk_firmware-8732265928818dd0b8797fb271e7c7fa9346d025.tar.xz
Options for silent compilation
A single keyboard is always by default compiled in verbose mode. While multiple keyboards are compiled in silent mode. This can be overriden by the silent variable from the command line
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile50
1 files changed, 38 insertions, 12 deletions
diff --git a/Makefile b/Makefile
index 9b534e897..3d4bd589f 100644
--- a/Makefile
+++ b/Makefile
@@ -2,6 +2,16 @@ ifndef VERBOSE
.SILENT:
endif
+ifdef silent
+ SILENT = $(silent)
+endif
+
+ifdef SILENT
+ SUB_IS_SILENT := $(silent)
+endif
+
+override SILENT = false
+
STARTING_MAKEFILE := $(firstword $(MAKEFILE_LIST))
ROOT_MAKEFILE := $(lastword $(MAKEFILE_LIST))
ROOT_DIR := $(dir $(ROOT_MAKEFILE))
@@ -59,10 +69,10 @@ ifdef keymap
KEYMAP := $(keymap)
endif
-$(info Keyboard: $(KEYBOARD))
-$(info Keymap: $(KEYMAP))
-$(info Subproject: $(SUBPROJECT))
-$(info Keyboards: $(KEYBOARDS))
+#$(info Keyboard: $(KEYBOARD))
+#$(info Keymap: $(KEYMAP))
+#$(info Subproject: $(SUBPROJECT))
+#$(info Keyboards: $(KEYBOARDS))
.DEFAULT_GOAL := all
ifneq ($(KEYMAP),)
@@ -229,11 +239,14 @@ define PARSE_KEYMAP
endif
KB_SP := $(BOLD)$$(KB_SP)$(NO_COLOR)
MAKE_VARS := KEYBOARD=$$(CURRENT_KB) SUBPROJECT=$$(CURRENT_SP) KEYMAP=$$(CURRENT_KM)
- MAKE_VARS += VERBOSE=$(VERBOSE) COLOR=$(COLOR) SILENT=false
- COMMAND_$$(COMMAND) := \
- printf "Compiling $$(KB_SP) with $(BOLD)$$(CURRENT_KM)$(NO_COLOR)" | \
- $(AWK) '{ printf "%-118s", $$$$0;}'; \
- LOG=$$$$($$(MAKE) -r -R -C $(ROOT_DIR) -f build_keyboard.mk $$(MAKE_VARS) 2>&1) ; \
+ MAKE_VARS += VERBOSE=$(VERBOSE) COLOR=$(COLOR)
+ MAKE_COMMAND := $$(MAKE) -r -R -C $(ROOT_DIR) -f build_keyboard.mk
+ MAKE_MSG := Compiling $$(KB_SP) with $(BOLD)$$(CURRENT_KM)$(NO_COLOR)
+ MAKE_MSG_FORMAT := $(AWK) '{ printf "%-118s", $$$$0;}'
+ COMMAND_true_$$(COMMAND) := \
+ printf "$$(MAKE_MSG)" | \
+ $$(MAKE_MSG_FORMAT); \
+ LOG=$$$$($$(MAKE_COMMAND) $$(MAKE_VARS) SILENT=true 2>&1) ; \
if [ $$$$? -gt 0 ]; \
then $$(PRINT_ERROR_PLAIN); \
elif [ "$$$$LOG" != "" ] ; \
@@ -241,18 +254,30 @@ define PARSE_KEYMAP
else \
$$(PRINT_OK); \
fi;
+ COMMAND_false_$$(COMMAND) := \
+ printf "$$(MAKE_MSG)\n" | \
+ $$(MAKE_MSG_FORMAT); \
+ $$(MAKE_COMMAND) $$(MAKE_VARS) SILENT=false;
endef
define PARSE_ALL_KEYMAPS
$$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYMAP,$$(KEYMAPS)))
endef
+define SET_SILENT_MODE
+ ifdef SUB_IS_SILENT
+ SILENT_MODE := $(SUB_IS_SILENT)
+ else ifeq ($$(words $$(COMMANDS)),1)
+ SILENT_MODE := false
+ else
+ SILENT_MODE := true
+ endif
+endef
+
include $(ROOT_DIR)/message.mk
-#RUN_COMMAND = echo "Running": $(COMMAND_$(COMMAND));
RUN_COMMAND = \
-$(COMMAND_$(COMMAND))
-#LOG=$$(echo $(COMMAND) VERBOSE=$(VERBOSE) COLOR=$(COLOR) SILENT=true 2>&1) ; if [ $$? -gt 0 ]; then $(PRINT_ERROR_PLAIN); elif [ "$$LOG" != "" ] ; then $(PRINT_WARNING_PLAIN); else $(PRINT_OK); fi; \
+$(COMMAND_$(SILENT_MODE)_$(COMMAND))
# Allow specifying just the subproject, in the keyboard directory, which will compile all keymaps
SUBPROJECTS := $(notdir $(patsubst %/Makefile,%,$(wildcard ./*/Makefile)))
@@ -270,6 +295,7 @@ $(SUBPROJECTS): %: %-allkm
esac \
done
$(eval $(call PARSE_RULE,$@))
+ $(eval $(call SET_SILENT_MODE))
+$(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND))