summaryrefslogtreecommitdiff
path: root/builddefs
diff options
context:
space:
mode:
authorNick Brassel <nick@tzarc.org>2025-02-26 22:25:41 +1100
committerGitHub <noreply@github.com>2025-02-26 22:25:41 +1100
commit1efc82403bebe759272d1ba7a79d9dfa0d5df506 (patch)
treec356ae7afeb0849926534beb5dd4515f693abf99 /builddefs
parent63b095212b157c4522bdeda3de144fb87213085d (diff)
Community modules (#24848)
Diffstat (limited to 'builddefs')
-rw-r--r--builddefs/build_keyboard.mk122
1 files changed, 85 insertions, 37 deletions
diff --git a/builddefs/build_keyboard.mk b/builddefs/build_keyboard.mk
index 7d58c29462..c5fc9cd25d 100644
--- a/builddefs/build_keyboard.mk
+++ b/builddefs/build_keyboard.mk
@@ -112,6 +112,39 @@ endif
112ifneq ("$(wildcard $(KEYBOARD_PATH_1)/rules.mk)","") 112ifneq ("$(wildcard $(KEYBOARD_PATH_1)/rules.mk)","")
113 include $(KEYBOARD_PATH_1)/rules.mk 113 include $(KEYBOARD_PATH_1)/rules.mk
114endif 114endif
115# Create dependencies on DD keyboard config - structure validated elsewhere
116DD_CONFIG_FILES :=
117ifneq ("$(wildcard $(KEYBOARD_PATH_1)/info.json)","")
118 DD_CONFIG_FILES += $(KEYBOARD_PATH_1)/info.json
119endif
120ifneq ("$(wildcard $(KEYBOARD_PATH_2)/info.json)","")
121 DD_CONFIG_FILES += $(KEYBOARD_PATH_2)/info.json
122endif
123ifneq ("$(wildcard $(KEYBOARD_PATH_3)/info.json)","")
124 DD_CONFIG_FILES += $(KEYBOARD_PATH_3)/info.json
125endif
126ifneq ("$(wildcard $(KEYBOARD_PATH_4)/info.json)","")
127 DD_CONFIG_FILES += $(KEYBOARD_PATH_4)/info.json
128endif
129ifneq ("$(wildcard $(KEYBOARD_PATH_5)/info.json)","")
130 DD_CONFIG_FILES += $(KEYBOARD_PATH_5)/info.json
131endif
132
133ifneq ("$(wildcard $(KEYBOARD_PATH_1)/keyboard.json)","")
134 DD_CONFIG_FILES += $(KEYBOARD_PATH_1)/keyboard.json
135endif
136ifneq ("$(wildcard $(KEYBOARD_PATH_2)/keyboard.json)","")
137 DD_CONFIG_FILES += $(KEYBOARD_PATH_2)/keyboard.json
138endif
139ifneq ("$(wildcard $(KEYBOARD_PATH_3)/keyboard.json)","")
140 DD_CONFIG_FILES += $(KEYBOARD_PATH_3)/keyboard.json
141endif
142ifneq ("$(wildcard $(KEYBOARD_PATH_4)/keyboard.json)","")
143 DD_CONFIG_FILES += $(KEYBOARD_PATH_4)/keyboard.json
144endif
145ifneq ("$(wildcard $(KEYBOARD_PATH_5)/keyboard.json)","")
146 DD_CONFIG_FILES += $(KEYBOARD_PATH_5)/keyboard.json
147endif
115 148
116MAIN_KEYMAP_PATH_1 := $(KEYBOARD_PATH_1)/keymaps/$(KEYMAP) 149MAIN_KEYMAP_PATH_1 := $(KEYBOARD_PATH_1)/keymaps/$(KEYMAP)
117MAIN_KEYMAP_PATH_2 := $(KEYBOARD_PATH_2)/keymaps/$(KEYMAP) 150MAIN_KEYMAP_PATH_2 := $(KEYBOARD_PATH_2)/keymaps/$(KEYMAP)
@@ -207,17 +240,17 @@ ifneq ("$(wildcard $(KEYMAP_JSON))", "")
207 include $(INFO_RULES_MK) 240 include $(INFO_RULES_MK)
208 241
209# Add rules to generate the keymap files - indentation here is important 242# Add rules to generate the keymap files - indentation here is important
210$(INTERMEDIATE_OUTPUT)/src/keymap.c: $(KEYMAP_JSON) 243$(INTERMEDIATE_OUTPUT)/src/keymap.c: $(KEYMAP_JSON) $(DD_CONFIG_FILES)
211 @$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD) 244 @$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
212 $(eval CMD=$(QMK_BIN) json2c --quiet --output $(KEYMAP_C) $(KEYMAP_JSON)) 245 $(eval CMD=$(QMK_BIN) json2c --quiet --output $(KEYMAP_C) $(KEYMAP_JSON))
213 @$(BUILD_CMD) 246 @$(BUILD_CMD)
214 247
215$(INTERMEDIATE_OUTPUT)/src/config.h: $(KEYMAP_JSON) 248$(INTERMEDIATE_OUTPUT)/src/config.h: $(KEYMAP_JSON) $(DD_CONFIG_FILES)
216 @$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD) 249 @$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
217 $(eval CMD=$(QMK_BIN) generate-config-h --quiet --output $(KEYMAP_H) $(KEYMAP_JSON)) 250 $(eval CMD=$(QMK_BIN) generate-config-h --quiet --output $(KEYMAP_H) $(KEYMAP_JSON))
218 @$(BUILD_CMD) 251 @$(BUILD_CMD)
219 252
220$(INTERMEDIATE_OUTPUT)/src/keymap.h: $(KEYMAP_JSON) 253$(INTERMEDIATE_OUTPUT)/src/keymap.h: $(KEYMAP_JSON) $(DD_CONFIG_FILES)
221 @$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD) 254 @$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
222 $(eval CMD=$(QMK_BIN) generate-keymap-h --quiet --output $(INTERMEDIATE_OUTPUT)/src/keymap.h $(KEYMAP_JSON)) 255 $(eval CMD=$(QMK_BIN) generate-keymap-h --quiet --output $(INTERMEDIATE_OUTPUT)/src/keymap.h $(KEYMAP_JSON))
223 @$(BUILD_CMD) 256 @$(BUILD_CMD)
@@ -226,6 +259,32 @@ generated-files: $(INTERMEDIATE_OUTPUT)/src/config.h $(INTERMEDIATE_OUTPUT)/src/
226 259
227endif 260endif
228 261
262# Community modules
263$(INTERMEDIATE_OUTPUT)/src/community_modules.h: $(KEYMAP_JSON) $(DD_CONFIG_FILES)
264 @$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
265 $(eval CMD=$(QMK_BIN) generate-community-modules-h -kb $(KEYBOARD) --quiet --output $(INTERMEDIATE_OUTPUT)/src/community_modules.h $(KEYMAP_JSON))
266 @$(BUILD_CMD)
267
268$(INTERMEDIATE_OUTPUT)/src/community_modules.c: $(KEYMAP_JSON) $(DD_CONFIG_FILES)
269 @$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
270 $(eval CMD=$(QMK_BIN) generate-community-modules-c -kb $(KEYBOARD) --quiet --output $(INTERMEDIATE_OUTPUT)/src/community_modules.c $(KEYMAP_JSON))
271 @$(BUILD_CMD)
272
273$(INTERMEDIATE_OUTPUT)/src/community_modules_introspection.c: $(KEYMAP_JSON) $(DD_CONFIG_FILES)
274 @$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
275 $(eval CMD=$(QMK_BIN) generate-community-modules-introspection-c -kb $(KEYBOARD) --quiet --output $(INTERMEDIATE_OUTPUT)/src/community_modules_introspection.c $(KEYMAP_JSON))
276 @$(BUILD_CMD)
277
278$(INTERMEDIATE_OUTPUT)/src/community_modules_introspection.h: $(KEYMAP_JSON) $(DD_CONFIG_FILES)
279 @$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
280 $(eval CMD=$(QMK_BIN) generate-community-modules-introspection-h -kb $(KEYBOARD) --quiet --output $(INTERMEDIATE_OUTPUT)/src/community_modules_introspection.h $(KEYMAP_JSON))
281 @$(BUILD_CMD)
282
283SRC += $(INTERMEDIATE_OUTPUT)/src/community_modules.c
284
285generated-files: $(INTERMEDIATE_OUTPUT)/src/community_modules.h $(INTERMEDIATE_OUTPUT)/src/community_modules.c $(INTERMEDIATE_OUTPUT)/src/community_modules_introspection.c $(INTERMEDIATE_OUTPUT)/src/community_modules_introspection.h
286
287
229include $(BUILDDEFS_PATH)/converters.mk 288include $(BUILDDEFS_PATH)/converters.mk
230 289
231# Generate the board's version.h file. 290# Generate the board's version.h file.
@@ -315,6 +374,14 @@ endif
315 374
316# Find all of the config.h files and add them to our CONFIG_H define. 375# Find all of the config.h files and add them to our CONFIG_H define.
317CONFIG_H := 376CONFIG_H :=
377
378define config_h_community_module_appender
379 ifneq ("$(wildcard $(1)/config.h)","")
380 CONFIG_H += $(1)/config.h
381 endif
382endef
383$(foreach module,$(COMMUNITY_MODULE_PATHS),$(eval $(call config_h_community_module_appender,$(module))))
384
318ifneq ("$(wildcard $(KEYBOARD_PATH_5)/config.h)","") 385ifneq ("$(wildcard $(KEYBOARD_PATH_5)/config.h)","")
319 CONFIG_H += $(KEYBOARD_PATH_5)/config.h 386 CONFIG_H += $(KEYBOARD_PATH_5)/config.h
320endif 387endif
@@ -332,6 +399,14 @@ ifneq ("$(wildcard $(KEYBOARD_PATH_1)/config.h)","")
332endif 399endif
333 400
334POST_CONFIG_H := 401POST_CONFIG_H :=
402
403define post_config_h_community_module_appender
404 ifneq ("$(wildcard $(1)/post_config.h)","")
405 POST_CONFIG_H += $(1)/post_config.h
406 endif
407endef
408$(foreach module,$(COMMUNITY_MODULE_PATHS),$(eval $(call post_config_h_community_module_appender,$(module))))
409
335ifneq ("$(wildcard $(KEYBOARD_PATH_1)/post_config.h)","") 410ifneq ("$(wildcard $(KEYBOARD_PATH_1)/post_config.h)","")
336 POST_CONFIG_H += $(KEYBOARD_PATH_1)/post_config.h 411 POST_CONFIG_H += $(KEYBOARD_PATH_1)/post_config.h
337endif 412endif
@@ -348,40 +423,6 @@ ifneq ("$(wildcard $(KEYBOARD_PATH_5)/post_config.h)","")
348 POST_CONFIG_H += $(KEYBOARD_PATH_5)/post_config.h 423 POST_CONFIG_H += $(KEYBOARD_PATH_5)/post_config.h
349endif 424endif
350 425
351# Create dependencies on DD keyboard config - structure validated elsewhere
352DD_CONFIG_FILES :=
353ifneq ("$(wildcard $(KEYBOARD_PATH_1)/info.json)","")
354 DD_CONFIG_FILES += $(KEYBOARD_PATH_1)/info.json
355endif
356ifneq ("$(wildcard $(KEYBOARD_PATH_2)/info.json)","")
357 DD_CONFIG_FILES += $(KEYBOARD_PATH_2)/info.json
358endif
359ifneq ("$(wildcard $(KEYBOARD_PATH_3)/info.json)","")
360 DD_CONFIG_FILES += $(KEYBOARD_PATH_3)/info.json
361endif
362ifneq ("$(wildcard $(KEYBOARD_PATH_4)/info.json)","")
363 DD_CONFIG_FILES += $(KEYBOARD_PATH_4)/info.json
364endif
365ifneq ("$(wildcard $(KEYBOARD_PATH_5)/info.json)","")
366 DD_CONFIG_FILES += $(KEYBOARD_PATH_5)/info.json
367endif
368
369ifneq ("$(wildcard $(KEYBOARD_PATH_1)/keyboard.json)","")
370 DD_CONFIG_FILES += $(KEYBOARD_PATH_1)/keyboard.json
371endif
372ifneq ("$(wildcard $(KEYBOARD_PATH_2)/keyboard.json)","")
373 DD_CONFIG_FILES += $(KEYBOARD_PATH_2)/keyboard.json
374endif
375ifneq ("$(wildcard $(KEYBOARD_PATH_3)/keyboard.json)","")
376 DD_CONFIG_FILES += $(KEYBOARD_PATH_3)/keyboard.json
377endif
378ifneq ("$(wildcard $(KEYBOARD_PATH_4)/keyboard.json)","")
379 DD_CONFIG_FILES += $(KEYBOARD_PATH_4)/keyboard.json
380endif
381ifneq ("$(wildcard $(KEYBOARD_PATH_5)/keyboard.json)","")
382 DD_CONFIG_FILES += $(KEYBOARD_PATH_5)/keyboard.json
383endif
384
385CONFIG_H += $(INTERMEDIATE_OUTPUT)/src/info_config.h 426CONFIG_H += $(INTERMEDIATE_OUTPUT)/src/info_config.h
386KEYBOARD_SRC += $(INTERMEDIATE_OUTPUT)/src/default_keyboard.c 427KEYBOARD_SRC += $(INTERMEDIATE_OUTPUT)/src/default_keyboard.c
387 428
@@ -462,6 +503,13 @@ ifneq ("$(wildcard $(KEYBOARD_PATH_5)/post_rules.mk)","")
462 include $(KEYBOARD_PATH_5)/post_rules.mk 503 include $(KEYBOARD_PATH_5)/post_rules.mk
463endif 504endif
464 505
506define post_rules_mk_community_module_includer
507 ifneq ("$(wildcard $(1)/post_rules.mk)","")
508 include $(1)/post_rules.mk
509 endif
510endef
511$(foreach module,$(COMMUNITY_MODULE_PATHS),$(eval $(call post_rules_mk_community_module_includer,$(module))))
512
465ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","") 513ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","")
466 CONFIG_H += $(KEYMAP_PATH)/config.h 514 CONFIG_H += $(KEYMAP_PATH)/config.h
467endif 515endif