diff options
| author | Nick Brassel <nick@tzarc.org> | 2025-02-26 22:25:41 +1100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-02-26 22:25:41 +1100 |
| commit | 1efc82403bebe759272d1ba7a79d9dfa0d5df506 (patch) | |
| tree | c356ae7afeb0849926534beb5dd4515f693abf99 /builddefs | |
| parent | 63b095212b157c4522bdeda3de144fb87213085d (diff) | |
Community modules (#24848)
Diffstat (limited to 'builddefs')
| -rw-r--r-- | builddefs/build_keyboard.mk | 122 |
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 | |||
| 112 | ifneq ("$(wildcard $(KEYBOARD_PATH_1)/rules.mk)","") | 112 | ifneq ("$(wildcard $(KEYBOARD_PATH_1)/rules.mk)","") |
| 113 | include $(KEYBOARD_PATH_1)/rules.mk | 113 | include $(KEYBOARD_PATH_1)/rules.mk |
| 114 | endif | 114 | endif |
| 115 | # Create dependencies on DD keyboard config - structure validated elsewhere | ||
| 116 | DD_CONFIG_FILES := | ||
| 117 | ifneq ("$(wildcard $(KEYBOARD_PATH_1)/info.json)","") | ||
| 118 | DD_CONFIG_FILES += $(KEYBOARD_PATH_1)/info.json | ||
| 119 | endif | ||
| 120 | ifneq ("$(wildcard $(KEYBOARD_PATH_2)/info.json)","") | ||
| 121 | DD_CONFIG_FILES += $(KEYBOARD_PATH_2)/info.json | ||
| 122 | endif | ||
| 123 | ifneq ("$(wildcard $(KEYBOARD_PATH_3)/info.json)","") | ||
| 124 | DD_CONFIG_FILES += $(KEYBOARD_PATH_3)/info.json | ||
| 125 | endif | ||
| 126 | ifneq ("$(wildcard $(KEYBOARD_PATH_4)/info.json)","") | ||
| 127 | DD_CONFIG_FILES += $(KEYBOARD_PATH_4)/info.json | ||
| 128 | endif | ||
| 129 | ifneq ("$(wildcard $(KEYBOARD_PATH_5)/info.json)","") | ||
| 130 | DD_CONFIG_FILES += $(KEYBOARD_PATH_5)/info.json | ||
| 131 | endif | ||
| 132 | |||
| 133 | ifneq ("$(wildcard $(KEYBOARD_PATH_1)/keyboard.json)","") | ||
| 134 | DD_CONFIG_FILES += $(KEYBOARD_PATH_1)/keyboard.json | ||
| 135 | endif | ||
| 136 | ifneq ("$(wildcard $(KEYBOARD_PATH_2)/keyboard.json)","") | ||
| 137 | DD_CONFIG_FILES += $(KEYBOARD_PATH_2)/keyboard.json | ||
| 138 | endif | ||
| 139 | ifneq ("$(wildcard $(KEYBOARD_PATH_3)/keyboard.json)","") | ||
| 140 | DD_CONFIG_FILES += $(KEYBOARD_PATH_3)/keyboard.json | ||
| 141 | endif | ||
| 142 | ifneq ("$(wildcard $(KEYBOARD_PATH_4)/keyboard.json)","") | ||
| 143 | DD_CONFIG_FILES += $(KEYBOARD_PATH_4)/keyboard.json | ||
| 144 | endif | ||
| 145 | ifneq ("$(wildcard $(KEYBOARD_PATH_5)/keyboard.json)","") | ||
| 146 | DD_CONFIG_FILES += $(KEYBOARD_PATH_5)/keyboard.json | ||
| 147 | endif | ||
| 115 | 148 | ||
| 116 | MAIN_KEYMAP_PATH_1 := $(KEYBOARD_PATH_1)/keymaps/$(KEYMAP) | 149 | MAIN_KEYMAP_PATH_1 := $(KEYBOARD_PATH_1)/keymaps/$(KEYMAP) |
| 117 | MAIN_KEYMAP_PATH_2 := $(KEYBOARD_PATH_2)/keymaps/$(KEYMAP) | 150 | MAIN_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 | ||
| 227 | endif | 260 | endif |
| 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 | |||
| 283 | SRC += $(INTERMEDIATE_OUTPUT)/src/community_modules.c | ||
| 284 | |||
| 285 | generated-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 | |||
| 229 | include $(BUILDDEFS_PATH)/converters.mk | 288 | include $(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. |
| 317 | CONFIG_H := | 376 | CONFIG_H := |
| 377 | |||
| 378 | define config_h_community_module_appender | ||
| 379 | ifneq ("$(wildcard $(1)/config.h)","") | ||
| 380 | CONFIG_H += $(1)/config.h | ||
| 381 | endif | ||
| 382 | endef | ||
| 383 | $(foreach module,$(COMMUNITY_MODULE_PATHS),$(eval $(call config_h_community_module_appender,$(module)))) | ||
| 384 | |||
| 318 | ifneq ("$(wildcard $(KEYBOARD_PATH_5)/config.h)","") | 385 | ifneq ("$(wildcard $(KEYBOARD_PATH_5)/config.h)","") |
| 319 | CONFIG_H += $(KEYBOARD_PATH_5)/config.h | 386 | CONFIG_H += $(KEYBOARD_PATH_5)/config.h |
| 320 | endif | 387 | endif |
| @@ -332,6 +399,14 @@ ifneq ("$(wildcard $(KEYBOARD_PATH_1)/config.h)","") | |||
| 332 | endif | 399 | endif |
| 333 | 400 | ||
| 334 | POST_CONFIG_H := | 401 | POST_CONFIG_H := |
| 402 | |||
| 403 | define post_config_h_community_module_appender | ||
| 404 | ifneq ("$(wildcard $(1)/post_config.h)","") | ||
| 405 | POST_CONFIG_H += $(1)/post_config.h | ||
| 406 | endif | ||
| 407 | endef | ||
| 408 | $(foreach module,$(COMMUNITY_MODULE_PATHS),$(eval $(call post_config_h_community_module_appender,$(module)))) | ||
| 409 | |||
| 335 | ifneq ("$(wildcard $(KEYBOARD_PATH_1)/post_config.h)","") | 410 | ifneq ("$(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 |
| 337 | endif | 412 | endif |
| @@ -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 |
| 349 | endif | 424 | endif |
| 350 | 425 | ||
| 351 | # Create dependencies on DD keyboard config - structure validated elsewhere | ||
| 352 | DD_CONFIG_FILES := | ||
| 353 | ifneq ("$(wildcard $(KEYBOARD_PATH_1)/info.json)","") | ||
| 354 | DD_CONFIG_FILES += $(KEYBOARD_PATH_1)/info.json | ||
| 355 | endif | ||
| 356 | ifneq ("$(wildcard $(KEYBOARD_PATH_2)/info.json)","") | ||
| 357 | DD_CONFIG_FILES += $(KEYBOARD_PATH_2)/info.json | ||
| 358 | endif | ||
| 359 | ifneq ("$(wildcard $(KEYBOARD_PATH_3)/info.json)","") | ||
| 360 | DD_CONFIG_FILES += $(KEYBOARD_PATH_3)/info.json | ||
| 361 | endif | ||
| 362 | ifneq ("$(wildcard $(KEYBOARD_PATH_4)/info.json)","") | ||
| 363 | DD_CONFIG_FILES += $(KEYBOARD_PATH_4)/info.json | ||
| 364 | endif | ||
| 365 | ifneq ("$(wildcard $(KEYBOARD_PATH_5)/info.json)","") | ||
| 366 | DD_CONFIG_FILES += $(KEYBOARD_PATH_5)/info.json | ||
| 367 | endif | ||
| 368 | |||
| 369 | ifneq ("$(wildcard $(KEYBOARD_PATH_1)/keyboard.json)","") | ||
| 370 | DD_CONFIG_FILES += $(KEYBOARD_PATH_1)/keyboard.json | ||
| 371 | endif | ||
| 372 | ifneq ("$(wildcard $(KEYBOARD_PATH_2)/keyboard.json)","") | ||
| 373 | DD_CONFIG_FILES += $(KEYBOARD_PATH_2)/keyboard.json | ||
| 374 | endif | ||
| 375 | ifneq ("$(wildcard $(KEYBOARD_PATH_3)/keyboard.json)","") | ||
| 376 | DD_CONFIG_FILES += $(KEYBOARD_PATH_3)/keyboard.json | ||
| 377 | endif | ||
| 378 | ifneq ("$(wildcard $(KEYBOARD_PATH_4)/keyboard.json)","") | ||
| 379 | DD_CONFIG_FILES += $(KEYBOARD_PATH_4)/keyboard.json | ||
| 380 | endif | ||
| 381 | ifneq ("$(wildcard $(KEYBOARD_PATH_5)/keyboard.json)","") | ||
| 382 | DD_CONFIG_FILES += $(KEYBOARD_PATH_5)/keyboard.json | ||
| 383 | endif | ||
| 384 | |||
| 385 | CONFIG_H += $(INTERMEDIATE_OUTPUT)/src/info_config.h | 426 | CONFIG_H += $(INTERMEDIATE_OUTPUT)/src/info_config.h |
| 386 | KEYBOARD_SRC += $(INTERMEDIATE_OUTPUT)/src/default_keyboard.c | 427 | KEYBOARD_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 |
| 463 | endif | 504 | endif |
| 464 | 505 | ||
| 506 | define post_rules_mk_community_module_includer | ||
| 507 | ifneq ("$(wildcard $(1)/post_rules.mk)","") | ||
| 508 | include $(1)/post_rules.mk | ||
| 509 | endif | ||
| 510 | endef | ||
| 511 | $(foreach module,$(COMMUNITY_MODULE_PATHS),$(eval $(call post_rules_mk_community_module_includer,$(module)))) | ||
| 512 | |||
| 465 | ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","") | 513 | ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","") |
| 466 | CONFIG_H += $(KEYMAP_PATH)/config.h | 514 | CONFIG_H += $(KEYMAP_PATH)/config.h |
| 467 | endif | 515 | endif |
