diff options
| author | Joel Challis <git@zvecr.com> | 2025-01-29 19:22:05 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-01-30 06:22:05 +1100 |
| commit | 0c14fc3a211fc6ba55cf58c1b8224700102a33b3 (patch) | |
| tree | 2fb40979f6e5048376e8f9ee1badb2139e5bbfd3 /Makefile | |
| parent | db68fd88bd67e8b04f5f1ec0c8c54cfe2ce88bb6 (diff) | |
Resolve keyboard_aliases when processing keyboard make targets (#24834)
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 36 |
1 files changed, 24 insertions, 12 deletions
| @@ -113,6 +113,29 @@ endef | |||
| 113 | # Make it easier to call TRY_TO_MATCH_RULE_FROM_LIST | 113 | # Make it easier to call TRY_TO_MATCH_RULE_FROM_LIST |
| 114 | TRY_TO_MATCH_RULE_FROM_LIST = $(eval $(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER,$1))$(RULE_FOUND) | 114 | TRY_TO_MATCH_RULE_FROM_LIST = $(eval $(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER,$1))$(RULE_FOUND) |
| 115 | 115 | ||
| 116 | # As TRY_TO_MATCH_RULE_FROM_LIST_HELPER, but with additional | ||
| 117 | # resolution of DEFAULT_FOLDER and keyboard_aliases.hjson for provided rule | ||
| 118 | define TRY_TO_MATCH_RULE_FROM_LIST_HELPER_KB | ||
| 119 | # Split on ":", padding with empty strings to avoid indexing issues | ||
| 120 | TOKEN1:=$$(shell python3 -c "import sys; print((sys.argv[1].split(':',1)+[''])[0])" $$(RULE)) | ||
| 121 | TOKENr:=$$(shell python3 -c "import sys; print((sys.argv[1].split(':',1)+[''])[1])" $$(RULE)) | ||
| 122 | |||
| 123 | TOKEN1:=$$(shell $(QMK_BIN) resolve-alias --allow-unknown $$(TOKEN1)) | ||
| 124 | |||
| 125 | FOUNDx:=$$(shell echo $1 | tr " " "\n" | grep -Fx $$(TOKEN1)) | ||
| 126 | ifneq ($$(FOUNDx),) | ||
| 127 | RULE := $$(TOKENr) | ||
| 128 | RULE_FOUND := true | ||
| 129 | MATCHED_ITEM := $$(TOKEN1) | ||
| 130 | else | ||
| 131 | RULE_FOUND := false | ||
| 132 | MATCHED_ITEM := | ||
| 133 | endif | ||
| 134 | endef | ||
| 135 | |||
| 136 | # Make it easier to call TRY_TO_MATCH_RULE_FROM_LIST_KB | ||
| 137 | TRY_TO_MATCH_RULE_FROM_LIST_KB = $(eval $(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER_KB,$1))$(RULE_FOUND) | ||
| 138 | |||
| 116 | define ALL_IN_LIST_LOOP | 139 | define ALL_IN_LIST_LOOP |
| 117 | OLD_RULE$1 := $$(RULE) | 140 | OLD_RULE$1 := $$(RULE) |
| 118 | $$(eval $$(call $1,$$(ITEM$1))) | 141 | $$(eval $$(call $1,$$(ITEM$1))) |
| @@ -138,7 +161,7 @@ define PARSE_RULE | |||
| 138 | $$(eval $$(call PARSE_TEST)) | 161 | $$(eval $$(call PARSE_TEST)) |
| 139 | # If the rule starts with the name of a known keyboard, then continue | 162 | # If the rule starts with the name of a known keyboard, then continue |
| 140 | # the parsing from PARSE_KEYBOARD | 163 | # the parsing from PARSE_KEYBOARD |
| 141 | else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(shell $(QMK_BIN) list-keyboards --no-resolve-defaults)),true) | 164 | else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST_KB,$$(shell $(QMK_BIN) list-keyboards)),true) |
| 142 | KEYBOARD_RULE=$$(MATCHED_ITEM) | 165 | KEYBOARD_RULE=$$(MATCHED_ITEM) |
| 143 | $$(eval $$(call PARSE_KEYBOARD,$$(MATCHED_ITEM))) | 166 | $$(eval $$(call PARSE_KEYBOARD,$$(MATCHED_ITEM))) |
| 144 | else | 167 | else |
| @@ -170,17 +193,6 @@ define PARSE_KEYBOARD | |||
| 170 | # include the correct makefile to determine the actual name of it | 193 | # include the correct makefile to determine the actual name of it |
| 171 | CURRENT_KB := $1 | 194 | CURRENT_KB := $1 |
| 172 | 195 | ||
| 173 | # KEYBOARD_FOLDERS := $$(subst /, , $(CURRENT_KB)) | ||
| 174 | |||
| 175 | DEFAULT_FOLDER := $$(CURRENT_KB) | ||
| 176 | |||
| 177 | # We assume that every rules.mk will contain the full default value | ||
| 178 | $$(eval include $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/rules.mk) | ||
| 179 | ifneq ($$(DEFAULT_FOLDER),$$(CURRENT_KB)) | ||
| 180 | $$(eval include $(ROOT_DIR)/keyboards/$$(DEFAULT_FOLDER)/rules.mk) | ||
| 181 | endif | ||
| 182 | CURRENT_KB := $$(DEFAULT_FOLDER) | ||
| 183 | |||
| 184 | # 5/4/3/2/1 | 196 | # 5/4/3/2/1 |
| 185 | KEYBOARD_FOLDER_PATH_1 := $$(CURRENT_KB) | 197 | KEYBOARD_FOLDER_PATH_1 := $$(CURRENT_KB) |
| 186 | KEYBOARD_FOLDER_PATH_2 := $$(patsubst %/,%,$$(dir $$(KEYBOARD_FOLDER_PATH_1))) | 198 | KEYBOARD_FOLDER_PATH_2 := $$(patsubst %/,%,$$(dir $$(KEYBOARD_FOLDER_PATH_1))) |
