Browse Source

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
pjones-keymap
zvecr 4 months ago
parent
commit
40e67a3074
3 changed files with 42 additions and 0 deletions
  1. 4
    0
      build_keyboard.mk
  2. 9
    0
      build_layout.mk
  3. 29
    0
      docs/feature_layouts.md

+ 4
- 0
build_keyboard.mk View File

@@ -135,6 +135,10 @@ ifeq ($(strip $(CONVERT_TO_PROTON_C)), yes)
135 135
     OPT_DEFS += -DCONVERT_TO_PROTON_C
136 136
 endif
137 137
 
138
+ifneq ($(FORCE_LAYOUT),)
139
+    TARGET := $(TARGET)_$(FORCE_LAYOUT)
140
+endif
141
+
138 142
 include quantum/mcu_selection.mk
139 143
 
140 144
 ifdef MCU_FAMILY

+ 9
- 0
build_layout.mk View File

@@ -15,4 +15,13 @@ define SEARCH_LAYOUTS
15 15
     $$(foreach LAYOUTS_REPO,$$(LAYOUTS_REPOS),$$(eval $$(call SEARCH_LAYOUTS_REPO)))
16 16
 endef
17 17
 
18
+ifneq ($(FORCE_LAYOUT),)
19
+    ifneq (,$(findstring $(FORCE_LAYOUT),$(LAYOUTS)))
20
+        $(info Forcing layout: $(FORCE_LAYOUT))
21
+        LAYOUTS := $(FORCE_LAYOUT)
22
+    else
23
+        $(error Forced layout does not exist)
24
+    endif
25
+endif
26
+
18 27
 $(foreach LAYOUT,$(LAYOUTS),$(eval $(call SEARCH_LAYOUTS)))

+ 29
- 0
docs/feature_layouts.md View File

@@ -51,6 +51,35 @@ The folder name must be added to the keyboard's `rules.mk`:
51 51
 
52 52
 but the `LAYOUT_<layout>` variable must be defined in `<folder>.h` as well.
53 53
 
54
+## Building a Keymap
55
+
56
+You should be able to build the keyboard keymap with a command in this format:
57
+
58
+    make <keyboard>:<layout>
59
+
60
+### Conflicting layouts
61
+When a keyboard supports multiple layout options,
62
+
63
+    LAYOUTS = ortho_4x4 ortho_4x12
64
+
65
+And a layout exists for both options,
66
+```
67
+layouts/
68
++ community/
69
+| + ortho_4x4/
70
+| | + <layout>/
71
+| | | + ...
72
+| + ortho_4x12/
73
+| | + <layout>/
74
+| | | + ...
75
+| + ...
76
+```
77
+
78
+The FORCE_LAYOUT argument can be used to specify which layout to build
79
+
80
+    make <keyboard>:<layout> FORCE_LAYOUT=ortho_4x4
81
+    make <keyboard>:<layout> FORCE_LAYOUT=ortho_4x12
82
+
54 83
 ## Tips for Making Layouts Keyboard-Agnostic
55 84
 
56 85
 ### Includes

Loading…
Cancel
Save