mirror of
https://github.com/Keychron/qmk_firmware.git
synced 2024-12-26 19:18:03 +06:00
commit
f0633f2540
36
Makefile
36
Makefile
@ -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
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user