|
|
|
@ -34,43 +34,8 @@ FORMAT = ihex
|
|
|
|
|
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
|
|
|
|
|
OPT = s
|
|
|
|
|
|
|
|
|
|
COLOR ?= true
|
|
|
|
|
|
|
|
|
|
ifeq ($(COLOR),true)
|
|
|
|
|
NO_COLOR=\033[0m
|
|
|
|
|
OK_COLOR=\033[32;01m
|
|
|
|
|
ERROR_COLOR=\033[31;01m
|
|
|
|
|
WARN_COLOR=\033[33;01m
|
|
|
|
|
BLUE=\033[0;34m
|
|
|
|
|
BOLD=\033[1m
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
AUTOGEN ?= false
|
|
|
|
|
|
|
|
|
|
ifneq ($(shell awk --version 2>/dev/null),)
|
|
|
|
|
AWK=awk
|
|
|
|
|
else
|
|
|
|
|
AWK=cat && test
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
OK_STRING=$(OK_COLOR)[OK]$(NO_COLOR)\n
|
|
|
|
|
ERROR_STRING=$(ERROR_COLOR)[ERRORS]$(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_PLAIN = printf "$$LOG\n"
|
|
|
|
|
AWK_STATUS = $(AWK) '{ printf " %-10s\n", $$1; }'
|
|
|
|
|
AWK_CMD = $(AWK) '{ printf "%-99s", $$0; }'
|
|
|
|
|
PRINT_ERROR = ($(SILENT) ||printf " $(ERROR_STRING)" | $(AWK_STATUS)) && $(TAB_LOG) && exit 1
|
|
|
|
|
PRINT_WARNING = ($(SILENT) || printf " $(WARN_STRING)" | $(AWK_STATUS)) && $(TAB_LOG)
|
|
|
|
|
PRINT_ERROR_PLAIN = ($(SILENT) ||printf " $(ERROR_STRING)" | $(AWK_STATUS)) && $(TAB_LOG_PLAIN) && exit 1
|
|
|
|
|
PRINT_WARNING_PLAIN = ($(SILENT) || printf " $(WARN_STRING)" | $(AWK_STATUS)) && $(TAB_LOG_PLAIN)
|
|
|
|
|
PRINT_OK = $(SILENT) || printf " $(OK_STRING)" | $(AWK_STATUS)
|
|
|
|
|
BUILD_CMD = LOG=$$($(CMD) 2>&1) ; if [ $$? -gt 0 ]; then $(PRINT_ERROR); elif [ "$$LOG" != "" ] ; then $(PRINT_WARNING); else $(PRINT_OK); fi;
|
|
|
|
|
|
|
|
|
|
# List any extra directories to look for include files here.
|
|
|
|
|
# Each directory must be seperated by a space.
|
|
|
|
@ -433,6 +398,7 @@ DEPS = $(patsubst %.o,%.d,$(OBJ))
|
|
|
|
|
# Empty rule to force recompilation if the .d file is missing
|
|
|
|
|
$(DEPS):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Since the object files could be in two different folders, generate
|
|
|
|
|
# separate rules for them, rather than having too generic rules
|
|
|
|
|
$(eval $(call GEN_OBJRULE,$(OBJDIR)))
|
|
|
|
@ -464,57 +430,6 @@ show_path:
|
|
|
|
|
@echo VPATH=$(VPATH)
|
|
|
|
|
@echo SRC=$(SRC)
|
|
|
|
|
|
|
|
|
|
SUBDIRS := $(filter-out %/util/ %/doc/ %/keymaps/ %/old_keymap_files/,$(dir $(wildcard $(TOP_DIR)/keyboards/**/*/Makefile)))
|
|
|
|
|
SUBDIRS := $(SUBDIRS) $(dir $(wildcard $(TOP_DIR)/keyboards/*/.))
|
|
|
|
|
SUBDIRS := $(sort $(SUBDIRS))
|
|
|
|
|
# $(error $(SUBDIRS))
|
|
|
|
|
all-keyboards-defaults-%:
|
|
|
|
|
@for x in $(SUBDIRS) ; do \
|
|
|
|
|
printf "Compiling with default: $$x" | $(AWK_CMD); \
|
|
|
|
|
LOG=$$($(MAKE) -C $$x $(subst all-keyboards-defaults-,,$@) 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-defaults: all-keyboards-defaults-all
|
|
|
|
|
|
|
|
|
|
KEYBOARDS := $(SUBDIRS:$(TOP_DIR)/keyboards/%/=/keyboards/%)
|
|
|
|
|
all-keyboards-all: $(addsuffix -all,$(KEYBOARDS))
|
|
|
|
|
all-keyboards-clean: $(addsuffix -clean,$(KEYBOARDS))
|
|
|
|
|
all-keyboards: all-keyboards-all
|
|
|
|
|
|
|
|
|
|
define make_keyboard
|
|
|
|
|
$(eval KEYBOARD=$(patsubst /keyboards/%,%,$1))
|
|
|
|
|
$(eval SUBPROJECT=$(lastword $(subst /, ,$(KEYBOARD))))
|
|
|
|
|
$(eval KEYBOARD=$(firstword $(subst /, ,$(KEYBOARD))))
|
|
|
|
|
$(eval KEYMAPS=$(notdir $(patsubst %/.,%,$(wildcard $(TOP_DIR)/keyboards/$(KEYBOARD)/keymaps/*/.))))
|
|
|
|
|
$(eval KEYMAPS+=$(notdir $(patsubst %/.,%,$(wildcard $(TOP_DIR)/keyboards/$(KEYBOARD)/$(SUBPROJECT)/keymaps/*/.))))
|
|
|
|
|
@for x in $(KEYMAPS) ; do \
|
|
|
|
|
printf "Compiling $(BOLD)$(KEYBOARD)/$(SUBPROJECT)$(NO_COLOR) with $(BOLD)$$x$(NO_COLOR)" | $(AWK) '{ printf "%-118s", $$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 -all and so on from the first argument and pass it forward
|
|
|
|
|
$(call make_keyboard,$(subst -$2,,$1),$2)
|
|
|
|
|
endef
|
|
|
|
|
|
|
|
|
|
/keyboards/%-all:
|
|
|
|
|
$(call make_keyboard_helper,$@,all)
|
|
|
|
|
/keyboards/%-clean:
|
|
|
|
|
$(call make_keyboard_helper,$@,clean)
|
|
|
|
|
/keyboards/%:
|
|
|
|
|
$(call make_keyboard_helper,$@,all)
|
|
|
|
|
|
|
|
|
|
all-keymaps-%:
|
|
|
|
|
$(eval MAKECONFIG=$(call get_target,all-keymaps,$@))
|
|
|
|
|
$(eval KEYMAPS=$(notdir $(patsubst %/.,%,$(wildcard $(TOP_DIR)/keyboards/$(KEYBOARD)/keymaps/*/.))))
|
|
|
|
|
@for x in $(KEYMAPS) ; do \
|
|
|
|
|
printf "Compiling $(BOLD)$(KEYBOARD)$(NO_COLOR) with $(BOLD)$$x$(NO_COLOR)" | $(AWK) '{ printf "%-118s", $$0; }'; \
|
|
|
|
|
LOG=$$($(MAKE) $(subst all-keymaps-,,$@) keyboard=$(KEYBOARD) 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-keymaps: all-keymaps-all
|
|
|
|
|
|
|
|
|
|
# Create build directory
|
|
|
|
|
$(shell mkdir $(BUILD_DIR) 2>/dev/null)
|
|
|
|
|
|
|
|
|
@ -530,6 +445,4 @@ $(shell mkdir $(KBOBJDIR) 2>/dev/null)
|
|
|
|
|
.PHONY : all finish sizebefore sizeafter gccversion \
|
|
|
|
|
build elf hex eep lss sym coff extcoff check_submodule \
|
|
|
|
|
clean clean_list debug gdb-config show_path \
|
|
|
|
|
program teensy dfu flip dfu-ee flip-ee dfu-start \
|
|
|
|
|
all-keyboards-defaults all-keyboards all-keymaps \
|
|
|
|
|
all-keyboards-defaults-% all-keyboards-% all-keymaps-%
|
|
|
|
|
program teensy dfu flip dfu-ee flip-ee dfu-start
|