diff options
author | zvecr <git@zvecr.com> | 2019-02-15 04:14:26 +0000 |
---|---|---|
committer | MechMerlin <30334081+mechmerlin@users.noreply.github.com> | 2019-02-14 20:14:26 -0800 |
commit | 40e67a3074293bc8e96574e7d603a943d3ca8d38 (patch) | |
tree | 1e152c2282a4a0737e1a5952ec4ac6d96a333b63 | |
parent | 85022f8bb5129f7118b55556c1ce85bc7d721356 (diff) |
Add a mechanism for force building a particular community layout (#5027)
* Add a mechanism for force building a particular community layout
* Add docs for FORCE_LAYOUT argument
* Update output name when FORCE_LAYOUT is enabled
-rw-r--r-- | build_keyboard.mk | 4 | ||||
-rw-r--r-- | build_layout.mk | 9 | ||||
-rw-r--r-- | docs/feature_layouts.md | 29 |
3 files changed, 42 insertions, 0 deletions
diff --git a/build_keyboard.mk b/build_keyboard.mk index 71ba805236..ee6a69fc79 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk @@ -135,6 +135,10 @@ ifeq ($(strip $(CONVERT_TO_PROTON_C)), yes) OPT_DEFS += -DCONVERT_TO_PROTON_C endif +ifneq ($(FORCE_LAYOUT),) + TARGET := $(TARGET)_$(FORCE_LAYOUT) +endif + include quantum/mcu_selection.mk ifdef MCU_FAMILY diff --git a/build_layout.mk b/build_layout.mk index beb1cb6627..6e9f97dae2 100644 --- a/build_layout.mk +++ b/build_layout.mk @@ -15,4 +15,13 @@ define SEARCH_LAYOUTS $$(foreach LAYOUTS_REPO,$$(LAYOUTS_REPOS),$$(eval $$(call SEARCH_LAYOUTS_REPO))) endef +ifneq ($(FORCE_LAYOUT),) + ifneq (,$(findstring $(FORCE_LAYOUT),$(LAYOUTS))) + $(info Forcing layout: $(FORCE_LAYOUT)) + LAYOUTS := $(FORCE_LAYOUT) + else + $(error Forced layout does not exist) + endif +endif + $(foreach LAYOUT,$(LAYOUTS),$(eval $(call SEARCH_LAYOUTS)))
\ No newline at end of file diff --git a/docs/feature_layouts.md b/docs/feature_layouts.md index 1ee8b5e35c..b34fd442d5 100644 --- a/docs/feature_layouts.md +++ b/docs/feature_layouts.md @@ -51,6 +51,35 @@ The folder name must be added to the keyboard's `rules.mk`: but the `LAYOUT_<layout>` variable must be defined in `<folder>.h` as well. +## Building a Keymap + +You should be able to build the keyboard keymap with a command in this format: + + make <keyboard>:<layout> + +### Conflicting layouts +When a keyboard supports multiple layout options, + + LAYOUTS = ortho_4x4 ortho_4x12 + +And a layout exists for both options, +``` +layouts/ ++ community/ +| + ortho_4x4/ +| | + <layout>/ +| | | + ... +| + ortho_4x12/ +| | + <layout>/ +| | | + ... +| + ... +``` + +The FORCE_LAYOUT argument can be used to specify which layout to build + + make <keyboard>:<layout> FORCE_LAYOUT=ortho_4x4 + make <keyboard>:<layout> FORCE_LAYOUT=ortho_4x12 + ## Tips for Making Layouts Keyboard-Agnostic ### Includes |