This commit is contained in:
johannes 2017-02-03 10:49:46 +01:00
commit 453cd25ab8
2 changed files with 20 additions and 19 deletions

View File

@ -26,3 +26,4 @@ ENV keymap=default
VOLUME /qmk VOLUME /qmk
WORKDIR /qmk WORKDIR /qmk
CMD make clean ; make keyboard=${keyboard} subproject=${subproject} keymap=${keymap}

View File

@ -16,10 +16,10 @@ ifdef SILENT
endif endif
# We need to make sure that silent is always turned off at the top level # We need to make sure that silent is always turned off at the top level
# Otherwise the [OK], [ERROR] and [WARN] messags won't be displayed correctly # Otherwise the [OK], [ERROR] and [WARN] messages won't be displayed correctly
override SILENT := false override SILENT := false
ON_ERROR := error_occured=1 ON_ERROR := error_occurred=1
STARTING_MAKEFILE := $(firstword $(MAKEFILE_LIST)) STARTING_MAKEFILE := $(firstword $(MAKEFILE_LIST))
ROOT_MAKEFILE := $(lastword $(MAKEFILE_LIST)) ROOT_MAKEFILE := $(lastword $(MAKEFILE_LIST))
@ -34,13 +34,13 @@ ABS_ROOT_DIR := $(dir $(ABS_ROOT_MAKEFILE))
STARTING_DIR := $(subst $(ABS_ROOT_DIR),,$(ABS_STARTING_DIR)) STARTING_DIR := $(subst $(ABS_ROOT_DIR),,$(ABS_STARTING_DIR))
BUILD_DIR := $(ROOT_DIR)/.build BUILD_DIR := $(ROOT_DIR)/.build
TEST_DIR := $(BUILD_DIR)/test TEST_DIR := $(BUILD_DIR)/test
ERROR_FILE := $(BUILD_DIR)/error_occured ERROR_FILE := $(BUILD_DIR)/error_occurred
MAKEFILE_INCLUDED=yes MAKEFILE_INCLUDED=yes
# Helper function to process the newt element of a space separated path # Helper function to process the newt element of a space separated path
# It works a bit like the traditional functional head tail # It works a bit like the traditional functional head tail
# so the CURRENT_PATH_ELEMENT will beome the new head # so the CURRENT_PATH_ELEMENT will become the new head
# and the PATH_ELEMENTS are the rest that are still unprocessed # and the PATH_ELEMENTS are the rest that are still unprocessed
define NEXT_PATH_ELEMENT define NEXT_PATH_ELEMENT
$$(eval CURRENT_PATH_ELEMENT := $$(firstword $$(PATH_ELEMENTS))) $$(eval CURRENT_PATH_ELEMENT := $$(firstword $$(PATH_ELEMENTS)))
@ -84,7 +84,7 @@ endif
# Only consider folders with makefiles, to prevent errors in case there are extra folders # Only consider folders with makefiles, to prevent errors in case there are extra folders
KEYBOARDS := $(notdir $(patsubst %/Makefile,%,$(wildcard $(ROOT_DIR)/keyboards/*/Makefile))) KEYBOARDS := $(notdir $(patsubst %/Makefile,%,$(wildcard $(ROOT_DIR)/keyboards/*/Makefile)))
#Compability with the old make variables, anything you specify directly on the command line #Compatibility with the old make variables, anything you specify directly on the command line
# always overrides the detected folders # always overrides the detected folders
ifdef keyboard ifdef keyboard
KEYBOARD := $(keyboard) KEYBOARD := $(keyboard)
@ -106,7 +106,7 @@ endif
#$(info Keyboards: $(KEYBOARDS)) #$(info Keyboards: $(KEYBOARDS))
# Set the default goal depening on where we are running make from # Set the default goal depending on where we are running make from
# this handles the case where you run make without any arguments # this handles the case where you run make without any arguments
.DEFAULT_GOAL := all .DEFAULT_GOAL := all
ifneq ($(KEYMAP),) ifneq ($(KEYMAP),)
@ -170,7 +170,7 @@ define TRY_TO_MATCH_RULE_FROM_LIST_HELPER3
endef endef
# A recursive helper function for finding the longest match # A recursive helper function for finding the longest match
# $1 The list to be checed # $1 The list to be checked
# It works by always removing the currently matched item from the list # It works by always removing the currently matched item from the list
# and call itself recursively, until a match is found # and call itself recursively, until a match is found
define TRY_TO_MATCH_RULE_FROM_LIST_HELPER2 define TRY_TO_MATCH_RULE_FROM_LIST_HELPER2
@ -180,7 +180,7 @@ define TRY_TO_MATCH_RULE_FROM_LIST_HELPER2
$$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER3,$1)) $$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER3,$1))
# If a match is found in the current list, otherwise just return what we had before # If a match is found in the current list, otherwise just return what we had before
ifeq ($$(RULE_FOUND),true) ifeq ($$(RULE_FOUND),true)
# Save the best match so far and call itself recursivel # Save the best match so far and call itself recursively
BEST_MATCH := $$(MATCHED_ITEM) BEST_MATCH := $$(MATCHED_ITEM)
BEST_MATCH_RULE := $$(RULE) BEST_MATCH_RULE := $$(RULE)
RULE_FOUND := false RULE_FOUND := false
@ -337,7 +337,7 @@ define PARSE_SUBPROJECT
$$(eval $$(call PARSE_ALL_KEYMAPS)) $$(eval $$(call PARSE_ALL_KEYMAPS))
endif endif
else else
# As earlier mentione,d when allsb is specified, we call our self recursively # As earlier mentioned when allsb is specified, we call our self recursively
# for all of the subprojects # for all of the subprojects
$$(eval $$(call PARSE_ALL_IN_LIST,PARSE_SUBPROJECT,$(SUBPROJECTS))) $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_SUBPROJECT,$(SUBPROJECTS)))
endif endif
@ -403,11 +403,11 @@ define BUILD
printf "$$(MAKE_MSG)\n\n"; \ printf "$$(MAKE_MSG)\n\n"; \
$$(MAKE_CMD) $$(MAKE_VARS) SILENT=false; \ $$(MAKE_CMD) $$(MAKE_VARS) SILENT=false; \
if [ $$$$? -gt 0 ]; \ if [ $$$$? -gt 0 ]; \
then error_occured=1; \ then error_occurred=1; \
fi; fi;
endef endef
# Just parse all the keymaps for a specifc keyboard # Just parse all the keymaps for a specific keyboard
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
@ -428,7 +428,7 @@ define BUILD_TEST
printf "$$(TEST_MSG)\n"; \ printf "$$(TEST_MSG)\n"; \
$$(TEST_EXECUTABLE); \ $$(TEST_EXECUTABLE); \
if [ $$$$? -gt 0 ]; \ if [ $$$$? -gt 0 ]; \
then error_occured=1; \ then error_occurred=1; \
fi; \ fi; \
printf "\n"; printf "\n";
endif endif
@ -448,7 +448,7 @@ endef
# Set the silent mode depending on if we are trying to compile multiple keyboards or not # Set the silent mode depending on if we are trying to compile multiple keyboards or not
# By default it's on in that case, but it can be overriden by specifying silent=false # By default it's on in that case, but it can be overridden by specifying silent=false
# from the command line # from the command line
define SET_SILENT_MODE define SET_SILENT_MODE
ifdef SUB_IS_SILENT ifdef SUB_IS_SILENT
@ -465,16 +465,16 @@ include $(ROOT_DIR)/message.mk
# The empty line is important here, as it will force a new shell to be created for each command # The empty line is important here, as it will force a new shell to be created for each command
# Otherwise the command line will become too long with a lot of keyboards and keymaps # Otherwise the command line will become too long with a lot of keyboards and keymaps
define RUN_COMMAND define RUN_COMMAND
+error_occured=0;\ +error_occurred=0;\
$(COMMAND_$(SILENT_MODE)_$(COMMAND))\ $(COMMAND_$(SILENT_MODE)_$(COMMAND))\
if [ $$error_occured -gt 0 ]; then echo $$error_occured > $(ERROR_FILE); fi; if [ $$error_occurred -gt 0 ]; then echo $$error_occurred > $(ERROR_FILE); fi;
endef endef
define RUN_TEST define RUN_TEST
+error_occured=0;\ +error_occurred=0;\
$($(TEST)_COMMAND)\ $($(TEST)_COMMAND)\
if [ $$error_occured -gt 0 ]; then echo $$error_occured > $(ERROR_FILE); fi; if [ $$error_occurred -gt 0 ]; then echo $$error_occurred > $(ERROR_FILE); fi;
endef endef
@ -514,7 +514,7 @@ endif
.PHONY: all .PHONY: all
all: all-keyboards test-all all: all-keyboards test-all
# Define some shortcuts, mostly for compability with the old syntax # Define some shortcuts, mostly for compatibility with the old syntax
.PHONY: all-keyboards .PHONY: all-keyboards
all-keyboards: allkb-allsp-allkm all-keyboards: allkb-allsp-allkm