summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorFred Sundvik <fsundvik@gmail.com>2016-08-24 10:29:01 +0300
committerFred Sundvik <fsundvik@gmail.com>2016-08-24 10:29:01 +0300
commit7c9fff59d0bfd36016a5cd79d40ec27ae591610b (patch)
treeddca26737e70599063fa9dfcc3facdb5bb171b2b /Makefile
parentfeebc58d327b969fe1ef11cd5b5989a60c51ac87 (diff)
downloadqmk_firmware-7c9fff59d0bfd36016a5cd79d40ec27ae591610b.tar.gz
qmk_firmware-7c9fff59d0bfd36016a5cd79d40ec27ae591610b.zip
Fix slight inconsistency
When running make from either a keyboard folder or a subproject it runs all keymaps for all subprojects and the selected subproject respectively. Without this fix, the same doesn't happen if your run make clean for example. As it would just provide you with an error message. Now this will work as expected.
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile28
1 files changed, 15 insertions, 13 deletions
diff --git a/Makefile b/Makefile
index c8122e5765..f78cca6c6f 100644
--- a/Makefile
+++ b/Makefile
@@ -262,7 +262,7 @@ define PARSE_KEYBOARD
# If there's no matching subproject, we assume it's the default
# This will allow you to leave the subproject part of the target out
else
- $$(eval $$(call PARSE_SUBPROJECT,defaultsp))
+ $$(eval $$(call PARSE_SUBPROJECT,))
endif
endef
@@ -278,12 +278,14 @@ endef
define PARSE_SUBPROJECT
# If we want to compile the default subproject, then we need to
# include the correct makefile to determine the actual name of it
- ifeq ($1,defaultsp)
+ CURRENT_SP := $1
+ ifeq ($$(CURRENT_SP),)
+ CURRENT_SP := defaultsp
+ endif
+ ifeq ($$(CURRENT_SP),defaultsp)
SUBPROJECT_DEFAULT=
$$(eval include $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/Makefile)
CURRENT_SP := $$(SUBPROJECT_DEFAULT)
- else
- CURRENT_SP := $1
endif
# If current subproject is empty (the default was not defined), and we have a list of subproject
# then make all of them
@@ -314,16 +316,16 @@ define PARSE_SUBPROJECT
# Otherwise try to match the keymap from the current folder, or arguments to the make command
else ifneq ($$(KEYMAP),)
$$(eval $$(call PARSE_KEYMAP,$$(KEYMAP)))
+ # No matching keymap found, so we assume that the rest of the rule is the target
+ # If we haven't been able to parse out a subproject, then make all of them
+ # This is consistent with running make without any arguments from the keyboard
+ # folder
+ else ifeq ($1,)
+ $$(eval $$(call PARSE_ALL_SUBPROJECTS))
+ # Otherwise, make all keymaps, again this is consistent with how it works without
+ # any arguments
else
- # Otherwise something is wrong with the target
- # Try to give as much information as possible of what it it was trying to do
- ifeq ($$(CURRENT_SP),)
- $$(info make: *** No rule to make target '$$(CURRENT_KB)-$$(RULE)'. Stop.)
- else
- $$(info make: *** No rule to make target '$$(CURRENT_KB)-$$(CURRENT_SP)-$$(RULE)'. Stop.)
- endif
- # Notice the tab instead of spaces below!
- exit 1
+ $$(eval $$(call PARSE_ALL_KEYMAPS))
endif
else
# As earlier mentione,d when allsb is specified, we call our self recursively