summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorJoel Challis <git@zvecr.com>2025-01-29 19:22:05 +0000
committerGitHub <noreply@github.com>2025-01-30 06:22:05 +1100
commit0c14fc3a211fc6ba55cf58c1b8224700102a33b3 (patch)
tree2fb40979f6e5048376e8f9ee1badb2139e5bbfd3 /Makefile
parentdb68fd88bd67e8b04f5f1ec0c8c54cfe2ce88bb6 (diff)
Resolve keyboard_aliases when processing keyboard make targets (#24834)
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile36
1 files changed, 24 insertions, 12 deletions
diff --git a/Makefile b/Makefile
index 5fcd6bbf0f..c68ee7418a 100644
--- a/Makefile
+++ b/Makefile
@@ -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
114TRY_TO_MATCH_RULE_FROM_LIST = $(eval $(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER,$1))$(RULE_FOUND) 114TRY_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
118define 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
134endef
135
136# Make it easier to call TRY_TO_MATCH_RULE_FROM_LIST_KB
137TRY_TO_MATCH_RULE_FROM_LIST_KB = $(eval $(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER_KB,$1))$(RULE_FOUND)
138
116define ALL_IN_LIST_LOOP 139define 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)))