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
This commit is contained in:
Fred Sundvik 2016-08-09 09:52:01 +03:00
parent e4c842de02
commit 8732265928
2 changed files with 38 additions and 16 deletions

View File

@ -2,6 +2,16 @@ ifndef VERBOSE
.SILENT: .SILENT:
endif endif
ifdef silent
SILENT = $(silent)
endif
ifdef SILENT
SUB_IS_SILENT := $(silent)
endif
override SILENT = false
STARTING_MAKEFILE := $(firstword $(MAKEFILE_LIST)) STARTING_MAKEFILE := $(firstword $(MAKEFILE_LIST))
ROOT_MAKEFILE := $(lastword $(MAKEFILE_LIST)) ROOT_MAKEFILE := $(lastword $(MAKEFILE_LIST))
ROOT_DIR := $(dir $(ROOT_MAKEFILE)) ROOT_DIR := $(dir $(ROOT_MAKEFILE))
@ -59,10 +69,10 @@ ifdef keymap
KEYMAP := $(keymap) KEYMAP := $(keymap)
endif endif
$(info Keyboard: $(KEYBOARD)) #$(info Keyboard: $(KEYBOARD))
$(info Keymap: $(KEYMAP)) #$(info Keymap: $(KEYMAP))
$(info Subproject: $(SUBPROJECT)) #$(info Subproject: $(SUBPROJECT))
$(info Keyboards: $(KEYBOARDS)) #$(info Keyboards: $(KEYBOARDS))
.DEFAULT_GOAL := all .DEFAULT_GOAL := all
ifneq ($(KEYMAP),) ifneq ($(KEYMAP),)
@ -229,11 +239,14 @@ define PARSE_KEYMAP
endif endif
KB_SP := $(BOLD)$$(KB_SP)$(NO_COLOR) KB_SP := $(BOLD)$$(KB_SP)$(NO_COLOR)
MAKE_VARS := KEYBOARD=$$(CURRENT_KB) SUBPROJECT=$$(CURRENT_SP) KEYMAP=$$(CURRENT_KM) MAKE_VARS := KEYBOARD=$$(CURRENT_KB) SUBPROJECT=$$(CURRENT_SP) KEYMAP=$$(CURRENT_KM)
MAKE_VARS += VERBOSE=$(VERBOSE) COLOR=$(COLOR) SILENT=false MAKE_VARS += VERBOSE=$(VERBOSE) COLOR=$(COLOR)
COMMAND_$$(COMMAND) := \ MAKE_COMMAND := $$(MAKE) -r -R -C $(ROOT_DIR) -f build_keyboard.mk
printf "Compiling $$(KB_SP) with $(BOLD)$$(CURRENT_KM)$(NO_COLOR)" | \ MAKE_MSG := Compiling $$(KB_SP) with $(BOLD)$$(CURRENT_KM)$(NO_COLOR)
$(AWK) '{ printf "%-118s", $$$$0;}'; \ MAKE_MSG_FORMAT := $(AWK) '{ printf "%-118s", $$$$0;}'
LOG=$$$$($$(MAKE) -r -R -C $(ROOT_DIR) -f build_keyboard.mk $$(MAKE_VARS) 2>&1) ; \ COMMAND_true_$$(COMMAND) := \
printf "$$(MAKE_MSG)" | \
$$(MAKE_MSG_FORMAT); \
LOG=$$$$($$(MAKE_COMMAND) $$(MAKE_VARS) SILENT=true 2>&1) ; \
if [ $$$$? -gt 0 ]; \ if [ $$$$? -gt 0 ]; \
then $$(PRINT_ERROR_PLAIN); \ then $$(PRINT_ERROR_PLAIN); \
elif [ "$$$$LOG" != "" ] ; \ elif [ "$$$$LOG" != "" ] ; \
@ -241,18 +254,30 @@ define PARSE_KEYMAP
else \ else \
$$(PRINT_OK); \ $$(PRINT_OK); \
fi; fi;
COMMAND_false_$$(COMMAND) := \
printf "$$(MAKE_MSG)\n" | \
$$(MAKE_MSG_FORMAT); \
$$(MAKE_COMMAND) $$(MAKE_VARS) SILENT=false;
endef endef
define PARSE_ALL_KEYMAPS define PARSE_ALL_KEYMAPS
$$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYMAP,$$(KEYMAPS))) $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_KEYMAP,$$(KEYMAPS)))
endef 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 include $(ROOT_DIR)/message.mk
#RUN_COMMAND = echo "Running": $(COMMAND_$(COMMAND));
RUN_COMMAND = \ RUN_COMMAND = \
$(COMMAND_$(COMMAND)) $(COMMAND_$(SILENT_MODE)_$(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; \
# Allow specifying just the subproject, in the keyboard directory, which will compile all keymaps # Allow specifying just the subproject, in the keyboard directory, which will compile all keymaps
SUBPROJECTS := $(notdir $(patsubst %/Makefile,%,$(wildcard ./*/Makefile))) SUBPROJECTS := $(notdir $(patsubst %/Makefile,%,$(wildcard ./*/Makefile)))
@ -270,6 +295,7 @@ $(SUBPROJECTS): %: %-allkm
esac \ esac \
done done
$(eval $(call PARSE_RULE,$@)) $(eval $(call PARSE_RULE,$@))
$(eval $(call SET_SILENT_MODE))
+$(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND)) +$(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND))

View File

@ -19,10 +19,6 @@ OK_STRING=$(OK_COLOR)[OK]$(NO_COLOR)\n
ERROR_STRING=$(ERROR_COLOR)[ERRORS]$(NO_COLOR)\n ERROR_STRING=$(ERROR_COLOR)[ERRORS]$(NO_COLOR)\n
WARN_STRING=$(WARN_COLOR)[WARNINGS]$(NO_COLOR)\n WARN_STRING=$(WARN_COLOR)[WARNINGS]$(NO_COLOR)\n
ifndef $(SILENT)
SILENT = false
endif
TAB_LOG = printf "\n$$LOG\n\n" | $(AWK) '{ sub(/^/," | "); print }' TAB_LOG = printf "\n$$LOG\n\n" | $(AWK) '{ sub(/^/," | "); print }'
TAB_LOG_PLAIN = printf "$$LOG\n" TAB_LOG_PLAIN = printf "$$LOG\n"
AWK_STATUS = $(AWK) '{ printf " %-10s\n", $$1; }' AWK_STATUS = $(AWK) '{ printf " %-10s\n", $$1; }'