add 'include keyboard_features.mk' into build_keyboard.mk (#8422)
* add 'include keyboard_features.mk' into build_keyboard.mk keyboard_features.mk is a keyboard-local version of the functions performed by common_features.mk. * add comment into build_keyboard.mk * added description of keyboard_features.mk in hardware_keyboard_guidelines.md. * rename `keyboard_features.mk` to `post_rules.mk`master
parent
f061ca4974
commit
9fe7b5307a
|
@ -115,6 +115,7 @@ include $(INFO_RULES_MK)
|
||||||
# Check for keymap.json first, so we can regenerate keymap.c
|
# Check for keymap.json first, so we can regenerate keymap.c
|
||||||
include build_json.mk
|
include build_json.mk
|
||||||
|
|
||||||
|
# Pull in keymap level rules.mk
|
||||||
ifeq ("$(wildcard $(KEYMAP_PATH))", "")
|
ifeq ("$(wildcard $(KEYMAP_PATH))", "")
|
||||||
# Look through the possible keymap folders until we find a matching keymap.c
|
# Look through the possible keymap folders until we find a matching keymap.c
|
||||||
ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_5)/keymap.c)","")
|
ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_5)/keymap.c)","")
|
||||||
|
@ -345,6 +346,7 @@ ifeq ("$(USER_NAME)","")
|
||||||
endif
|
endif
|
||||||
USER_PATH := users/$(USER_NAME)
|
USER_PATH := users/$(USER_NAME)
|
||||||
|
|
||||||
|
# Pull in user level rules.mk
|
||||||
-include $(USER_PATH)/rules.mk
|
-include $(USER_PATH)/rules.mk
|
||||||
ifneq ("$(wildcard $(USER_PATH)/config.h)","")
|
ifneq ("$(wildcard $(USER_PATH)/config.h)","")
|
||||||
CONFIG_H += $(USER_PATH)/config.h
|
CONFIG_H += $(USER_PATH)/config.h
|
||||||
|
@ -356,6 +358,23 @@ endif
|
||||||
# Disable features that a keyboard doesn't support
|
# Disable features that a keyboard doesn't support
|
||||||
-include disable_features.mk
|
-include disable_features.mk
|
||||||
|
|
||||||
|
# Pull in post_rules.mk files from all our subfolders
|
||||||
|
ifneq ("$(wildcard $(KEYBOARD_PATH_1)/post_rules.mk)","")
|
||||||
|
include $(KEYBOARD_PATH_1)/post_rules.mk
|
||||||
|
endif
|
||||||
|
ifneq ("$(wildcard $(KEYBOARD_PATH_2)/post_rules.mk)","")
|
||||||
|
include $(KEYBOARD_PATH_2)/post_rules.mk
|
||||||
|
endif
|
||||||
|
ifneq ("$(wildcard $(KEYBOARD_PATH_3)/post_rules.mk)","")
|
||||||
|
include $(KEYBOARD_PATH_3)/post_rules.mk
|
||||||
|
endif
|
||||||
|
ifneq ("$(wildcard $(KEYBOARD_PATH_4)/post_rules.mk)","")
|
||||||
|
include $(KEYBOARD_PATH_4)/post_rules.mk
|
||||||
|
endif
|
||||||
|
ifneq ("$(wildcard $(KEYBOARD_PATH_5)/post_rules.mk)","")
|
||||||
|
include $(KEYBOARD_PATH_5)/post_rules.mk
|
||||||
|
endif
|
||||||
|
|
||||||
ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","")
|
ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","")
|
||||||
CONFIG_H += $(KEYMAP_PATH)/config.h
|
CONFIG_H += $(KEYMAP_PATH)/config.h
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -144,10 +144,38 @@ The `rules.mk` file can also be placed in a sub-folder, and its reading order is
|
||||||
* `keyboards/top_folder/sub_1/sub_2/sub_3/sub_4/rules.mk`
|
* `keyboards/top_folder/sub_1/sub_2/sub_3/sub_4/rules.mk`
|
||||||
* `keyboards/top_folder/keymaps/a_keymap/rules.mk`
|
* `keyboards/top_folder/keymaps/a_keymap/rules.mk`
|
||||||
* `users/a_user_folder/rules.mk`
|
* `users/a_user_folder/rules.mk`
|
||||||
|
* `keyboards/top_folder/sub_1/sub_2/sub_3/sub_4/post_rules.mk`
|
||||||
|
* `keyboards/top_folder/sub_1/sub_2/sub_3/post_rules.mk`
|
||||||
|
* `keyboards/top_folder/sub_1/sub_2/post_rules.mk`
|
||||||
|
* `keyboards/top_folder/sub_1/post_rules.mk`
|
||||||
|
* `keyboards/top_folder/post_rules.mk`
|
||||||
* `common_features.mk`
|
* `common_features.mk`
|
||||||
|
|
||||||
Many of the settings written in the `rules.mk` file are interpreted by `common_features.mk`, which sets the necessary source files and compiler options.
|
Many of the settings written in the `rules.mk` file are interpreted by `common_features.mk`, which sets the necessary source files and compiler options.
|
||||||
|
|
||||||
|
The `post_rules.mk` file can interpret `features` of a keyboard-level before `common_features.mk`. For example, when your designed keyboard has the option to implement backlighting or underglow using rgblight.c, writing the following in the `post_rules.mk` makes it easier for the user to configure the `rules.mk`.
|
||||||
|
|
||||||
|
* `keyboards/top_folder/keymaps/a_keymap/rules.mk`
|
||||||
|
```makefile
|
||||||
|
# Please set the following according to the selection of the hardware implementation option.
|
||||||
|
RGBLED_OPTION_TYPE = backlight ## none, backlight or underglow
|
||||||
|
```
|
||||||
|
* `keyboards/top_folder/post_rules.mk`
|
||||||
|
```makefile
|
||||||
|
ifeq ($(filter $(strip $(RGBLED_OPTION_TYPE))x, nonex backlightx underglowx x),)
|
||||||
|
$(error unknown RGBLED_OPTION_TYPE value "$(RGBLED_OPTION_TYPE)")
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(strip $(RGBLED_OPTION_TYPE)),backlight)
|
||||||
|
RGBLIGHT_ENABLE = yes
|
||||||
|
OPT_DEFS += -DRGBLED_NUM=30
|
||||||
|
endif
|
||||||
|
ifeq ($(strip $(RGBLED_OPTION_TYPE)),underglow)
|
||||||
|
RGBLIGHT_ENABLE = yes
|
||||||
|
OPT_DEFS += -DRGBLED_NUM=6
|
||||||
|
endif
|
||||||
|
```
|
||||||
|
|
||||||
?> See `build_keyboard.mk` and `common_features.mk` for more details.
|
?> See `build_keyboard.mk` and `common_features.mk` for more details.
|
||||||
|
|
||||||
### `<keyboard_name.c>`
|
### `<keyboard_name.c>`
|
||||||
|
|
Loading…
Reference in New Issue