diff options
author | Fred Sundvik <fsundvik@gmail.com> | 2016-08-09 09:52:01 +0300 |
---|---|---|
committer | Fred Sundvik <fsundvik@gmail.com> | 2016-08-20 03:56:36 +0300 |
commit | 8732265928818dd0b8797fb271e7c7fa9346d025 (patch) | |
tree | 11adfbdc06f53f12ba2b9d9585dd91a0aedf6e41 | |
parent | e4c842de02d95e98f65c7bb4a8406ec6df4944fe (diff) | |
download | qmk_firmware-8732265928818dd0b8797fb271e7c7fa9346d025.tar.gz qmk_firmware-8732265928818dd0b8797fb271e7c7fa9346d025.zip |
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
-rw-r--r-- | Makefile | 50 | ||||
-rw-r--r-- | message.mk | 4 |
2 files changed, 38 insertions, 16 deletions
@@ -2,6 +2,16 @@ ifndef VERBOSE | |||
2 | .SILENT: | 2 | .SILENT: |
3 | endif | 3 | endif |
4 | 4 | ||
5 | ifdef silent | ||
6 | SILENT = $(silent) | ||
7 | endif | ||
8 | |||
9 | ifdef SILENT | ||
10 | SUB_IS_SILENT := $(silent) | ||
11 | endif | ||
12 | |||
13 | override SILENT = false | ||
14 | |||
5 | STARTING_MAKEFILE := $(firstword $(MAKEFILE_LIST)) | 15 | STARTING_MAKEFILE := $(firstword $(MAKEFILE_LIST)) |
6 | ROOT_MAKEFILE := $(lastword $(MAKEFILE_LIST)) | 16 | ROOT_MAKEFILE := $(lastword $(MAKEFILE_LIST)) |
7 | ROOT_DIR := $(dir $(ROOT_MAKEFILE)) | 17 | ROOT_DIR := $(dir $(ROOT_MAKEFILE)) |
@@ -59,10 +69,10 @@ ifdef keymap | |||
59 | KEYMAP := $(keymap) | 69 | KEYMAP := $(keymap) |
60 | endif | 70 | endif |
61 | 71 | ||
62 | $(info Keyboard: $(KEYBOARD)) | 72 | #$(info Keyboard: $(KEYBOARD)) |
63 | $(info Keymap: $(KEYMAP)) | 73 | #$(info Keymap: $(KEYMAP)) |
64 | $(info Subproject: $(SUBPROJECT)) | 74 | #$(info Subproject: $(SUBPROJECT)) |
65 | $(info Keyboards: $(KEYBOARDS)) | 75 | #$(info Keyboards: $(KEYBOARDS)) |
66 | 76 | ||
67 | .DEFAULT_GOAL := all | 77 | .DEFAULT_GOAL := all |
68 | ifneq ($(KEYMAP),) | 78 | ifneq ($(KEYMAP),) |
@@ -229,11 +239,14 @@ define PARSE_KEYMAP | |||
229 | endif | 239 | endif |
230 | KB_SP := $(BOLD)$$(KB_SP)$(NO_COLOR) | 240 | KB_SP := $(BOLD)$$(KB_SP)$(NO_COLOR) |
231 | MAKE_VARS := KEYBOARD=$$(CURRENT_KB) SUBPROJECT=$$(CURRENT_SP) KEYMAP=$$(CURRENT_KM) | 241 | MAKE_VARS := KEYBOARD=$$(CURRENT_KB) SUBPROJECT=$$(CURRENT_SP) KEYMAP=$$(CURRENT_KM) |
232 | MAKE_VARS += VERBOSE=$(VERBOSE) COLOR=$(COLOR) SILENT=false | 242 | MAKE_VARS += VERBOSE=$(VERBOSE) COLOR=$(COLOR) |
233 | COMMAND_$$(COMMAND) := \ | 243 | MAKE_COMMAND := $$(MAKE) -r -R -C $(ROOT_DIR) -f build_keyboard.mk |
234 | printf "Compiling $$(KB_SP) with $(BOLD)$$(CURRENT_KM)$(NO_COLOR)" | \ | 244 | MAKE_MSG := Compiling $$(KB_SP) with $(BOLD)$$(CURRENT_KM)$(NO_COLOR) |
235 | $(AWK) '{ printf "%-118s", $$$$0;}'; \ | 245 | MAKE_MSG_FORMAT := $(AWK) '{ printf "%-118s", $$$$0;}' |
236 | LOG=$$$$($$(MAKE) -r -R -C $(ROOT_DIR) -f build_keyboard.mk $$(MAKE_VARS) 2>&1) ; \ | 246 | COMMAND_true_$$(COMMAND) := \ |
247 | printf "$$(MAKE_MSG)" | \ | ||
248 | $$(MAKE_MSG_FORMAT); \ | ||
249 | LOG=$$$$($$(MAKE_COMMAND) $$(MAKE_VARS) SILENT=true 2>&1) ; \ | ||
237 | if [ $$$$? -gt 0 ]; \ | 250 | if [ $$$$? -gt 0 ]; \ |
238 | then $$(PRINT_ERROR_PLAIN); \ | 251 | then $$(PRINT_ERROR_PLAIN); \ |
239 | elif [ "$$$$LOG" != "" ] ; \ | 252 | elif [ "$$$$LOG" != "" ] ; \ |
@@ -241,18 +254,30 @@ define PARSE_KEYMAP | |||
241 | else \ | 254 | else \ |
242 | $$(PRINT_OK); \ | 255 | $$(PRINT_OK); \ |
243 | fi; | 256 | fi; |
257 | COMMAND_false_$$(COMMAND) := \ | ||
258 | printf "$$(MAKE_MSG)\n" | \ | ||
259 | $$(MAKE_MSG_FORMAT); \ | ||
260 | $$(MAKE_COMMAND) $$(MAKE_VARS) SILENT=false; | ||
244 | endef | 261 | endef |
245 | 262 | ||
246 | define PARSE_ALL_KEYMAPS | 263 | define PARSE_ALL_KEYMAPS |
247 | $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYMAP,$$(KEYMAPS))) | 264 | $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYMAP,$$(KEYMAPS))) |
248 | endef | 265 | endef |
249 | 266 | ||
267 | define SET_SILENT_MODE | ||
268 | ifdef SUB_IS_SILENT | ||
269 | SILENT_MODE := $(SUB_IS_SILENT) | ||
270 | else ifeq ($$(words $$(COMMANDS)),1) | ||
271 | SILENT_MODE := false | ||
272 | else | ||
273 | SILENT_MODE := true | ||
274 | endif | ||
275 | endef | ||
276 | |||
250 | include $(ROOT_DIR)/message.mk | 277 | include $(ROOT_DIR)/message.mk |
251 | 278 | ||
252 | #RUN_COMMAND = echo "Running": $(COMMAND_$(COMMAND)); | ||
253 | RUN_COMMAND = \ | 279 | RUN_COMMAND = \ |
254 | $(COMMAND_$(COMMAND)) | 280 | $(COMMAND_$(SILENT_MODE)_$(COMMAND)) |
255 | #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; \ | ||
256 | 281 | ||
257 | # Allow specifying just the subproject, in the keyboard directory, which will compile all keymaps | 282 | # Allow specifying just the subproject, in the keyboard directory, which will compile all keymaps |
258 | SUBPROJECTS := $(notdir $(patsubst %/Makefile,%,$(wildcard ./*/Makefile))) | 283 | SUBPROJECTS := $(notdir $(patsubst %/Makefile,%,$(wildcard ./*/Makefile))) |
@@ -270,6 +295,7 @@ $(SUBPROJECTS): %: %-allkm | |||
270 | esac \ | 295 | esac \ |
271 | done | 296 | done |
272 | $(eval $(call PARSE_RULE,$@)) | 297 | $(eval $(call PARSE_RULE,$@)) |
298 | $(eval $(call SET_SILENT_MODE)) | ||
273 | +$(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND)) | 299 | +$(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND)) |
274 | 300 | ||
275 | 301 | ||
diff --git a/message.mk b/message.mk index 08a4e02ab..aefb46de8 100644 --- a/message.mk +++ b/message.mk | |||
@@ -19,10 +19,6 @@ OK_STRING=$(OK_COLOR)[OK]$(NO_COLOR)\n | |||
19 | ERROR_STRING=$(ERROR_COLOR)[ERRORS]$(NO_COLOR)\n | 19 | ERROR_STRING=$(ERROR_COLOR)[ERRORS]$(NO_COLOR)\n |
20 | WARN_STRING=$(WARN_COLOR)[WARNINGS]$(NO_COLOR)\n | 20 | WARN_STRING=$(WARN_COLOR)[WARNINGS]$(NO_COLOR)\n |
21 | 21 | ||
22 | ifndef $(SILENT) | ||
23 | SILENT = false | ||
24 | endif | ||
25 | |||
26 | TAB_LOG = printf "\n$$LOG\n\n" | $(AWK) '{ sub(/^/," | "); print }' | 22 | TAB_LOG = printf "\n$$LOG\n\n" | $(AWK) '{ sub(/^/," | "); print }' |
27 | TAB_LOG_PLAIN = printf "$$LOG\n" | 23 | TAB_LOG_PLAIN = printf "$$LOG\n" |
28 | AWK_STATUS = $(AWK) '{ printf " %-10s\n", $$1; }' | 24 | AWK_STATUS = $(AWK) '{ printf " %-10s\n", $$1; }' |