]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
Proper parsing of keymaps inside subprojects
authorFred Sundvik <fsundvik@gmail.com>
Sun, 7 Aug 2016 14:48:59 +0000 (17:48 +0300)
committerFred Sundvik <fsundvik@gmail.com>
Sat, 20 Aug 2016 00:56:19 +0000 (03:56 +0300)
Makefile

index b2a87353204a930e7eb5e9517aa2b6b5fe6fe4f8..028d143930fc24a3eeedb7d433b4dd7a67a2637d 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -131,16 +131,32 @@ endef
 # $1 Subproject
 define PARSE_SUBPROJECT
     ifeq ($1,defaultsp)
+        SUBPROJECT_DEFAULT=
         $$(eval include $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/Makefile)
         CURRENT_SP := $$(SUBPROJECT_DEFAULT)
     else
         CURRENT_SP := $1
     endif
-    KEYMAPS := $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/keymaps/*/.)))
-    ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,allkm),true)
-        $$(eval $$(call PARSE_ALL_KEYMAPS))
-    else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(KEYMAPS)),true)
-        $$(eval $$(call PARSE_KEYMAP,$$(MATCHED_ITEM)))
+    # If current subproject is empty (the default was not defined), and we have a list of subproject
+    # then make all
+    ifeq ($$(CURRENT_SP),)
+        ifneq ($$(SUBPROJECTS),)
+            CURRENT_SP := allsp
+         endif
+    endif
+    ifneq ($$(CURRENT_SP),allsp) 
+        KEYMAPS := $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/keymaps/*/.)))
+        ifneq ($$(CURRENT_SP),)
+            SP_KEYMAPS := $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/$$(CURRENT_SP)/keymaps/*/.)))
+            KEYMAPS := $$(sort $$(KEYMAPS) $$(SP_KEYMAPS))
+        endif
+        ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,allkm),true)
+            $$(eval $$(call PARSE_ALL_KEYMAPS))
+        else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(KEYMAPS)),true)
+            $$(eval $$(call PARSE_KEYMAP,$$(MATCHED_ITEM)))
+        endif
+    else
+        $$(eval $$(call PARSE_ALL_IN_LIST,PARSE_SUBPROJECT,$(SUBPROJECTS)))
     endif
 endef