diff options
Diffstat (limited to 'build_keyboard.mk')
-rw-r--r-- | build_keyboard.mk | 206 |
1 files changed, 138 insertions, 68 deletions
diff --git a/build_keyboard.mk b/build_keyboard.mk index 88b876bac..450207850 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk | |||
@@ -6,18 +6,26 @@ endif | |||
6 | 6 | ||
7 | include common.mk | 7 | include common.mk |
8 | 8 | ||
9 | ifneq ($(SUBPROJECT),) | 9 | # 5/4/3/2/1 |
10 | TARGET ?= $(KEYBOARD)_$(SUBPROJECT)_$(KEYMAP) | 10 | KEYBOARD_FOLDER_PATH_1 := $(KEYBOARD) |
11 | KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD)_$(SUBPROJECT) | 11 | KEYBOARD_FOLDER_PATH_2 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_1))) |
12 | else | 12 | KEYBOARD_FOLDER_PATH_3 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_2))) |
13 | TARGET ?= $(KEYBOARD)_$(KEYMAP) | 13 | KEYBOARD_FOLDER_PATH_4 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_3))) |
14 | KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD) | 14 | KEYBOARD_FOLDER_PATH_5 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_4))) |
15 | endif | 15 | KEYBOARD_FOLDER_1 := $(notdir $(KEYBOARD_FOLDER_PATH_1)) |
16 | KEYBOARD_FOLDER_2 := $(notdir $(KEYBOARD_FOLDER_PATH_2)) | ||
17 | KEYBOARD_FOLDER_3 := $(notdir $(KEYBOARD_FOLDER_PATH_3)) | ||
18 | KEYBOARD_FOLDER_4 := $(notdir $(KEYBOARD_FOLDER_PATH_4)) | ||
19 | KEYBOARD_FOLDER_5 := $(notdir $(KEYBOARD_FOLDER_PATH_5)) | ||
20 | |||
21 | KEYBOARD_FILESAFE := $(subst /,_,$(KEYBOARD)) | ||
22 | |||
23 | TARGET ?= $(KEYBOARD_FILESAFE)_$(KEYMAP) | ||
24 | KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD_FILESAFE) | ||
16 | 25 | ||
17 | # Force expansion | 26 | # Force expansion |
18 | TARGET := $(TARGET) | 27 | TARGET := $(TARGET) |
19 | 28 | ||
20 | |||
21 | MASTER ?= left | 29 | MASTER ?= left |
22 | ifdef master | 30 | ifdef master |
23 | MASTER = $(master) | 31 | MASTER = $(master) |
@@ -31,28 +39,62 @@ $(error MASTER does not have a valid value(left/right)) | |||
31 | endif | 39 | endif |
32 | endif | 40 | endif |
33 | 41 | ||
34 | KEYBOARD_PATH := keyboards/$(KEYBOARD) | 42 | KEYBOARD_PATHS := |
35 | KEYBOARD_C := $(KEYBOARD_PATH)/$(KEYBOARD).c | ||
36 | 43 | ||
37 | ifneq ("$(wildcard $(KEYBOARD_C))","") | 44 | KEYBOARD_PATH_1 := keyboards/$(KEYBOARD_FOLDER_PATH_1) |
38 | include $(KEYBOARD_PATH)/rules.mk | 45 | KEYBOARD_PATH_2 := keyboards/$(KEYBOARD_FOLDER_PATH_2) |
39 | else | 46 | KEYBOARD_PATH_3 := keyboards/$(KEYBOARD_FOLDER_PATH_3) |
40 | $(error "$(KEYBOARD_C)" does not exist) | 47 | KEYBOARD_PATH_4 := keyboards/$(KEYBOARD_FOLDER_PATH_4) |
41 | endif | 48 | KEYBOARD_PATH_5 := keyboards/$(KEYBOARD_FOLDER_PATH_5) |
42 | OPT_DEFS += -DKEYBOARD_$(KEYBOARD) | 49 | |
43 | 50 | ifneq ("$(wildcard $(KEYBOARD_PATH_5)/rules.mk)","") | |
44 | ifneq ($(SUBPROJECT),) | 51 | KEYBOARD_PATHS += $(KEYBOARD_PATH_5) |
45 | SUBPROJECT_PATH := keyboards/$(KEYBOARD)/$(SUBPROJECT) | 52 | include $(KEYBOARD_PATH_5)/rules.mk |
46 | SUBPROJECT_C := $(SUBPROJECT_PATH)/$(SUBPROJECT).c | 53 | endif |
47 | ifneq ("$(wildcard $(SUBPROJECT_C))","") | 54 | ifneq ("$(wildcard $(KEYBOARD_PATH_4)/rules.mk)","") |
48 | OPT_DEFS += -DSUBPROJECT_$(SUBPROJECT) | 55 | KEYBOARD_PATHS += $(KEYBOARD_PATH_4) |
49 | include $(SUBPROJECT_PATH)/rules.mk | 56 | include $(KEYBOARD_PATH_4)/rules.mk |
50 | else | 57 | endif |
51 | $(error "$(SUBPROJECT_PATH)/$(SUBPROJECT).c" does not exist) | 58 | ifneq ("$(wildcard $(KEYBOARD_PATH_3)/rules.mk)","") |
52 | endif | 59 | KEYBOARD_PATHS += $(KEYBOARD_PATH_3) |
60 | include $(KEYBOARD_PATH_3)/rules.mk | ||
53 | endif | 61 | endif |
62 | ifneq ("$(wildcard $(KEYBOARD_PATH_2)/rules.mk)","") | ||
63 | KEYBOARD_PATHS += $(KEYBOARD_PATH_2) | ||
64 | include $(KEYBOARD_PATH_2)/rules.mk | ||
65 | endif | ||
66 | ifneq ("$(wildcard $(KEYBOARD_PATH_1)/rules.mk)","") | ||
67 | KEYBOARD_PATHS += $(KEYBOARD_PATH_1) | ||
68 | include $(KEYBOARD_PATH_1)/rules.mk | ||
69 | endif | ||
70 | |||
71 | KEYBOARD_SRC := | ||
72 | |||
73 | KEYBOARD_C_1 := $(KEYBOARD_PATH_1)/$(KEYBOARD_FOLDER_1).c | ||
74 | KEYBOARD_C_2 := $(KEYBOARD_PATH_2)/$(KEYBOARD_FOLDER_2).c | ||
75 | KEYBOARD_C_3 := $(KEYBOARD_PATH_3)/$(KEYBOARD_FOLDER_3).c | ||
76 | KEYBOARD_C_4 := $(KEYBOARD_PATH_4)/$(KEYBOARD_FOLDER_4).c | ||
77 | KEYBOARD_C_5 := $(KEYBOARD_PATH_5)/$(KEYBOARD_FOLDER_5).c | ||
54 | 78 | ||
55 | # We can assume a ChibiOS target When MCU_FAMILY is defined, since it's not used for LUFA | 79 | ifneq ("$(wildcard $(KEYBOARD_C_5))","") |
80 | KEYBOARD_SRC += $(KEYBOARD_C_5) | ||
81 | endif | ||
82 | ifneq ("$(wildcard $(KEYBOARD_C_4))","") | ||
83 | KEYBOARD_SRC += $(KEYBOARD_C_4) | ||
84 | endif | ||
85 | ifneq ("$(wildcard $(KEYBOARD_C_3))","") | ||
86 | KEYBOARD_SRC += $(KEYBOARD_C_3) | ||
87 | endif | ||
88 | ifneq ("$(wildcard $(KEYBOARD_C_2))","") | ||
89 | KEYBOARD_SRC += $(KEYBOARD_C_2) | ||
90 | endif | ||
91 | ifneq ("$(wildcard $(KEYBOARD_C_1))","") | ||
92 | KEYBOARD_SRC += $(KEYBOARD_C_1) | ||
93 | endif | ||
94 | |||
95 | OPT_DEFS += -DKEYBOARD_$(KEYBOARD_FILESAFE) | ||
96 | |||
97 | # We can assume a ChibiOS target When MCU_FAMILY is defined , since it's not used for LUFA | ||
56 | ifdef MCU_FAMILY | 98 | ifdef MCU_FAMILY |
57 | PLATFORM=CHIBIOS | 99 | PLATFORM=CHIBIOS |
58 | else | 100 | else |
@@ -63,44 +105,80 @@ ifeq ($(PLATFORM),CHIBIOS) | |||
63 | include $(TMK_PATH)/protocol/chibios.mk | 105 | include $(TMK_PATH)/protocol/chibios.mk |
64 | include $(TMK_PATH)/chibios.mk | 106 | include $(TMK_PATH)/chibios.mk |
65 | OPT_OS = chibios | 107 | OPT_OS = chibios |
66 | ifneq ("$(wildcard $(SUBPROJECT_PATH)/bootloader_defs.h)","") | 108 | ifneq ("$(wildcard $(KEYBOARD_PATH_5)/bootloader_defs.h)","") |
67 | OPT_DEFS += -include $(SUBPROJECT_PATH)/bootloader_defs.h | 109 | OPT_DEFS += -include $(KEYBOARD_PATH_5)/bootloader_defs.h |
68 | else ifneq ("$(wildcard $(SUBPROJECT_PATH)/boards/$(BOARD)/bootloader_defs.h)","") | 110 | else ifneq ("$(wildcard $(KEYBOARD_PATH_5)/boards/$(BOARD)/bootloader_defs.h)","") |
69 | OPT_DEFS += -include $(SUBPROJECT_PATH)/boards/$(BOARD)/bootloader_defs.h | 111 | OPT_DEFS += -include $(KEYBOARD_PATH_5)/boards/$(BOARD)/bootloader_defs.h |
70 | else ifneq ("$(wildcard $(KEYBOARD_PATH)/bootloader_defs.h)","") | 112 | else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/bootloader_defs.h)","") |
71 | OPT_DEFS += -include $(KEYBOARD_PATH)/bootloader_defs.h | 113 | OPT_DEFS += -include $(KEYBOARD_PATH_4)/bootloader_defs.h |
72 | else ifneq ("$(wildcard $(KEYBOARD_PATH)/boards/$(BOARD)/bootloader_defs.h)","") | 114 | else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/boards/$(BOARD)/bootloader_defs.h)","") |
73 | OPT_DEFS += -include $(KEYBOARD_PATH)/boards/$(BOARD)/bootloader_defs.h | 115 | OPT_DEFS += -include $(KEYBOARD_PATH_4)/boards/$(BOARD)/bootloader_defs.h |
116 | else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/bootloader_defs.h)","") | ||
117 | OPT_DEFS += -include $(KEYBOARD_PATH_3)/bootloader_defs.h | ||
118 | else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/boards/$(BOARD)/bootloader_defs.h)","") | ||
119 | OPT_DEFS += -include $(KEYBOARD_PATH_3)/boards/$(BOARD)/bootloader_defs.h | ||
120 | else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/bootloader_defs.h)","") | ||
121 | OPT_DEFS += -include $(KEYBOARD_PATH_2)/bootloader_defs.h | ||
122 | else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/boards/$(BOARD)/bootloader_defs.h)","") | ||
123 | OPT_DEFS += -include $(KEYBOARD_PATH_2)/boards/$(BOARD)/bootloader_defs.h | ||
124 | else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/bootloader_defs.h)","") | ||
125 | OPT_DEFS += -include $(KEYBOARD_PATH_1)/bootloader_defs.h | ||
126 | else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/boards/$(BOARD)/bootloader_defs.h)","") | ||
127 | OPT_DEFS += -include $(KEYBOARD_PATH_1)/boards/$(BOARD)/bootloader_defs.h | ||
74 | endif | 128 | endif |
75 | endif | 129 | endif |
76 | 130 | ||
77 | CONFIG_H = $(KEYBOARD_PATH)/config.h | 131 | CONFIG_H := |
78 | ifneq ($(SUBPROJECT),) | 132 | ifneq ("$(wildcard $(KEYBOARD_PATH_5)/config.h)","") |
79 | ifneq ("$(wildcard $(SUBPROJECT_C))","") | 133 | CONFIG_H += $(KEYBOARD_PATH_5)/config.h |
80 | CONFIG_H = $(SUBPROJECT_PATH)/config.h | 134 | endif |
81 | endif | 135 | ifneq ("$(wildcard $(KEYBOARD_PATH_4)/config.h)","") |
136 | CONFIG_H += $(KEYBOARD_PATH_4)/config.h | ||
137 | endif | ||
138 | ifneq ("$(wildcard $(KEYBOARD_PATH_3)/config.h)","") | ||
139 | CONFIG_H += $(KEYBOARD_PATH_3)/config.h | ||
140 | endif | ||
141 | ifneq ("$(wildcard $(KEYBOARD_PATH_2)/config.h)","") | ||
142 | CONFIG_H += $(KEYBOARD_PATH_2)/config.h | ||
143 | endif | ||
144 | ifneq ("$(wildcard $(KEYBOARD_PATH_1)/config.h)","") | ||
145 | CONFIG_H += $(KEYBOARD_PATH_1)/config.h | ||
82 | endif | 146 | endif |
83 | 147 | ||
84 | # Save the defines and includes here, so we don't include any keymap specific ones | 148 | # Save the defines and includes here, so we don't include any keymap specific ones |
85 | PROJECT_DEFS := $(OPT_DEFS) | 149 | PROJECT_DEFS := $(OPT_DEFS) |
86 | PROJECT_INC := $(VPATH) $(EXTRAINCDIRS) $(SUBPROJECT_PATH) $(KEYBOARD_PATH) | 150 | PROJECT_INC := $(VPATH) $(EXTRAINCDIRS) $(KEYBOARD_PATHS) |
87 | PROJECT_CONFIG := $(CONFIG_H) | 151 | PROJECT_CONFIG := $(CONFIG_H) |
88 | 152 | ||
89 | MAIN_KEYMAP_PATH := $(KEYBOARD_PATH)/keymaps/$(KEYMAP) | 153 | MAIN_KEYMAP_PATH_1 := $(KEYBOARD_PATH_1)/keymaps/$(KEYMAP) |
90 | MAIN_KEYMAP_C := $(MAIN_KEYMAP_PATH)/keymap.c | 154 | MAIN_KEYMAP_PATH_2 := $(KEYBOARD_PATH_2)/keymaps/$(KEYMAP) |
91 | SUBPROJ_KEYMAP_PATH := $(SUBPROJECT_PATH)/keymaps/$(KEYMAP) | 155 | MAIN_KEYMAP_PATH_3 := $(KEYBOARD_PATH_3)/keymaps/$(KEYMAP) |
92 | SUBPROJ_KEYMAP_C := $(SUBPROJ_KEYMAP_PATH)/keymap.c | 156 | MAIN_KEYMAP_PATH_4 := $(KEYBOARD_PATH_4)/keymaps/$(KEYMAP) |
93 | ifneq ("$(wildcard $(SUBPROJ_KEYMAP_C))","") | 157 | MAIN_KEYMAP_PATH_5 := $(KEYBOARD_PATH_5)/keymaps/$(KEYMAP) |
94 | -include $(SUBPROJ_KEYMAP_PATH)/rules.mk | 158 | |
95 | KEYMAP_C := $(SUBPROJ_KEYMAP_C) | 159 | ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_5)/keymap.c)","") |
96 | KEYMAP_PATH := $(SUBPROJ_KEYMAP_PATH) | 160 | -include $(MAIN_KEYMAP_PATH_5)/rules.mk |
97 | else ifneq ("$(wildcard $(MAIN_KEYMAP_C))","") | 161 | KEYMAP_C := $(MAIN_KEYMAP_PATH_5)/keymap.c |
98 | -include $(MAIN_KEYMAP_PATH)/rules.mk | 162 | KEYMAP_PATH := $(MAIN_KEYMAP_PATH_5) |
99 | KEYMAP_C := $(MAIN_KEYMAP_C) | 163 | else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_4)/keymap.c)","") |
100 | KEYMAP_PATH := $(MAIN_KEYMAP_PATH) | 164 | -include $(MAIN_KEYMAP_PATH_4)/rules.mk |
165 | KEYMAP_C := $(MAIN_KEYMAP_PATH_4)/keymap.c | ||
166 | KEYMAP_PATH := $(MAIN_KEYMAP_PATH_4) | ||
167 | else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_3)/keymap.c)","") | ||
168 | -include $(MAIN_KEYMAP_PATH_3)/rules.mk | ||
169 | KEYMAP_C := $(MAIN_KEYMAP_PATH_3)/keymap.c | ||
170 | KEYMAP_PATH := $(MAIN_KEYMAP_PATH_3) | ||
171 | else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_2)/keymap.c)","") | ||
172 | -include $(MAIN_KEYMAP_PATH_2)/rules.mk | ||
173 | KEYMAP_C := $(MAIN_KEYMAP_PATH_2)/keymap.c | ||
174 | KEYMAP_PATH := $(MAIN_KEYMAP_PATH_2) | ||
175 | else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_1)/keymap.c)","") | ||
176 | -include $(MAIN_KEYMAP_PATH_1)/rules.mk | ||
177 | KEYMAP_C := $(MAIN_KEYMAP_PATH_1)/keymap.c | ||
178 | KEYMAP_PATH := $(MAIN_KEYMAP_PATH_1) | ||
101 | else ifneq ($(LAYOUTS),) | 179 | else ifneq ($(LAYOUTS),) |
102 | include build_layout.mk | 180 | include build_layout.mk |
103 | else | 181 | else |
104 | $(error Could not find keymap) | 182 | $(error Could not find keymap) |
105 | # this state should never be reached | 183 | # this state should never be reached |
106 | endif | 184 | endif |
@@ -110,29 +188,21 @@ endif | |||
110 | # this an empty or blank macro! | 188 | # this an empty or blank macro! |
111 | KEYMAP_OUTPUT := $(BUILD_DIR)/obj_$(TARGET) | 189 | KEYMAP_OUTPUT := $(BUILD_DIR)/obj_$(TARGET) |
112 | 190 | ||
113 | |||
114 | ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","") | 191 | ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","") |
115 | CONFIG_H = $(KEYMAP_PATH)/config.h | 192 | CONFIG_H += $(KEYMAP_PATH)/config.h |
116 | endif | 193 | endif |
117 | 194 | ||
118 | # # project specific files | 195 | # # project specific files |
119 | SRC += $(KEYBOARD_C) \ | 196 | SRC += $(KEYBOARD_SRC) \ |
120 | $(KEYMAP_C) \ | 197 | $(KEYMAP_C) \ |
121 | $(QUANTUM_SRC) | 198 | $(QUANTUM_SRC) |
122 | 199 | ||
123 | ifneq ($(SUBPROJECT),) | ||
124 | SRC += $(SUBPROJECT_C) | ||
125 | endif | ||
126 | |||
127 | # Optimize size but this may cause error "relocation truncated to fit" | 200 | # Optimize size but this may cause error "relocation truncated to fit" |
128 | #EXTRALDFLAGS = -Wl,--relax | 201 | #EXTRALDFLAGS = -Wl,--relax |
129 | 202 | ||
130 | # Search Path | 203 | # Search Path |
131 | VPATH += $(KEYMAP_PATH) | 204 | VPATH += $(KEYMAP_PATH) |
132 | ifneq ($(SUBPROJECT),) | 205 | VPATH += $(KEYBOARD_PATHS) |
133 | VPATH += $(SUBPROJECT_PATH) | ||
134 | endif | ||
135 | VPATH += $(KEYBOARD_PATH) | ||
136 | VPATH += $(COMMON_VPATH) | 206 | VPATH += $(COMMON_VPATH) |
137 | 207 | ||
138 | include common_features.mk | 208 | include common_features.mk |
@@ -161,15 +231,15 @@ endif | |||
161 | OUTPUTS := $(KEYMAP_OUTPUT) $(KEYBOARD_OUTPUT) | 231 | OUTPUTS := $(KEYMAP_OUTPUT) $(KEYBOARD_OUTPUT) |
162 | $(KEYMAP_OUTPUT)_SRC := $(SRC) | 232 | $(KEYMAP_OUTPUT)_SRC := $(SRC) |
163 | $(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) $(GFXDEFS) \ | 233 | $(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) $(GFXDEFS) \ |
164 | -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYBOARD_H=\"$(KEYBOARD).h\" -DQMK_KEYBOARD_CONFIG_H=\"$(KEYBOARD_PATH)/config.h\" \ | 234 | -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYBOARD_H=\"$(KEYBOARD_FOLDER_1).h\" -DQMK_KEYBOARD_CONFIG_H=\"$(KEYBOARD_PATH_1)/config.h\" \ |
165 | -DQMK_KEYMAP=\"$(KEYMAP)\" -DQMK_KEYMAP_H=\"$(KEYMAP).h\" -DQMK_KEYMAP_CONFIG_H=\"$(KEYMAP_PATH)/config.h\" \ | 235 | -DQMK_KEYMAP=\"$(KEYMAP)\" -DQMK_KEYMAP_H=\"$(KEYMAP).h\" -DQMK_KEYMAP_CONFIG_H=\"$(KEYMAP_PATH)/config.h\" \ |
166 | -DQMK_SUBPROJECT=\"$(SUBPROJECT)\" -DQMK_SUBPROJECT_H=\"$(SUBPROJECT).h\" -DQMK_SUBPROJECT_CONFIG_H=\"$(SUBPROJECT_PATH)/config.h\" | 236 | -DQMK_SUBPROJECT -DQMK_SUBPROJECT_H -DQMK_SUBPROJECT_CONFIG_H |
167 | $(KEYMAP_OUTPUT)_INC := $(VPATH) $(EXTRAINCDIRS) | 237 | $(KEYMAP_OUTPUT)_INC := $(VPATH) $(EXTRAINCDIRS) |
168 | $(KEYMAP_OUTPUT)_CONFIG := $(CONFIG_H) | 238 | $(KEYMAP_OUTPUT)_CONFIG := $(CONFIG_H) |
169 | $(KEYBOARD_OUTPUT)_SRC := $(CHIBISRC) $(GFXSRC) | 239 | $(KEYBOARD_OUTPUT)_SRC := $(CHIBISRC) $(GFXSRC) |
170 | $(KEYBOARD_OUTPUT)_DEFS := $(PROJECT_DEFS) $(GFXDEFS) | 240 | $(KEYBOARD_OUTPUT)_DEFS := $(PROJECT_DEFS) $(GFXDEFS) |
171 | $(KEYBOARD_OUTPUT)_INC := $(PROJECT_INC) $(GFXINC) | 241 | $(KEYBOARD_OUTPUT)_INC := $(PROJECT_INC) $(GFXINC) |
172 | $(KEYBOARD_OUTPUT)_CONFIG := $(PROJECT_CONFIG) | 242 | $(KEYBOARD_OUTPUT)_CONFIG := $(PROJECT_CONFIG) |
173 | 243 | ||
174 | # Default target. | 244 | # Default target. |
175 | all: build sizeafter | 245 | all: build sizeafter |