diff options
| -rw-r--r-- | Makefile | 26 | 
1 files changed, 21 insertions, 5 deletions
| @@ -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 | 
