diff options
| -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; }' |
