Skip to content

Commit

Permalink
Fix the make all-keyboards command (vial-kb#422)
Browse files Browse the repository at this point in the history
Unfortunately the supported targets, like "quick", "all", "clean",
and so on has to be repeated two extra times, but this is the best
I can do with my makefile skills.
  • Loading branch information
fredizzimo authored and jackhumbert committed Jun 21, 2016
1 parent 80c8705 commit a69d002
Showing 1 changed file with 26 additions and 9 deletions.
35 changes: 26 additions & 9 deletions tmk_core/rules.mk
Original file line number Diff line number Diff line change
Expand Up @@ -632,17 +632,34 @@ all-keyboards-defaults-%:
all-keyboards-defaults: all-keyboards-defaults-all

KEYBOARDS := $(SUBDIRS:$(TOP_DIR)/keyboard/%/=/keyboard/%)
all-keyboards-%: $(KEYBOARDS)
/keyboard/%:
$(eval KEYBOARD=$(patsubst /keyboard/%,%,$@))
$(eval KEYMAPS=$(notdir $(patsubst %/.,%,$(wildcard $(TOP_DIR)$@/keymaps/*/.))))
@for x in $(KEYMAPS) ; do \
printf "Compiling $(BOLD)$(KEYBOARD)$(NO_COLOR) with $(BOLD)$$x$(NO_COLOR)" | $(AWK) '{ printf "%-88s", $$0; }'; \
LOG=$$($(MAKE) -C $(TOP_DIR)$@ $(subst all-keyboards-,,$@) keymap=$$x 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; \
done

all-keyboards-all: $(addsuffix -all,$(KEYBOARDS))
all-keyboards-quick: $(addsuffix -quick,$(KEYBOARDS))
all-keyboards-clean: $(addsuffix -clean,$(KEYBOARDS))
all-keyboards: all-keyboards-all

define make_keyboard
$(eval KEYBOARD=$(patsubst /keyboard/%,%,$1))
$(eval KEYMAPS=$(notdir $(patsubst %/.,%,$(wildcard $(TOP_DIR)$1/keymaps/*/.))))
@for x in $(KEYMAPS) ; do \
printf "Compiling $(BOLD)$(KEYBOARD)$(NO_COLOR) with $(BOLD)$$x$(NO_COLOR)" | $(AWK) '{ printf "%-88s", $$0; }'; \
LOG=$$($(MAKE) -C $(TOP_DIR)$1 $2 keymap=$$x 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; \
done
endef

define make_keyboard_helper
# Just remove the -quick, -all and so on from the first argument and pass it forward
$(call make_keyboard,$(subst -$2,,$1),$2)
endef

/keyboard/%-quick:
$(call make_keyboard_helper,$@,quick)
/keyboard/%-all:
$(call make_keyboard_helper,$@,all)
/keyboard/%-clean:
$(call make_keyboard_helper,$@,clean)
/keyboard/%:
$(call make_keyboard_helper,$@,all)

all-keymaps-%:
$(eval MAKECONFIG=$(call get_target,all-keymaps,$@))
$(eval KEYMAPS=$(notdir $(patsubst %/.,%,$(wildcard $(TOP_DIR)/keyboard/$(KEYBOARD)/keymaps/*/.))))
Expand Down

0 comments on commit a69d002

Please sign in to comment.