Commit | Line | Data |
---|---|---|
98b16b32 | 1 | # Determine what keyboard we are building and setup the build environment. |
2 | # | |
3 | # We support folders up to 5 levels deep below `keyboards/`. This file is | |
4 | # responsible for determining which folder is being used and doing the | |
5 | # corresponding environment setup. | |
6 | ||
86706de0 FS |
7 | ifndef VERBOSE |
8 | .SILENT: | |
9 | endif | |
10 | ||
11 | .DEFAULT_GOAL := all | |
12 | ||
27a673f5 | 13 | include common.mk |
8f164031 | 14 | |
98b16b32 | 15 | # Set the filename for the final firmware binary |
800ec55d | 16 | KEYBOARD_FILESAFE := $(subst /,_,$(KEYBOARD)) |
800ec55d JH |
17 | TARGET ?= $(KEYBOARD_FILESAFE)_$(KEYMAP) |
18 | KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD_FILESAFE) | |
3cf179be | 19 | STM32_PATH := quantum/stm32 |
8f164031 FS |
20 | |
21 | # Force expansion | |
22 | TARGET := $(TARGET) | |
23 | ||
98b16b32 | 24 | # For split boards we need to set a master half. |
86706de0 FS |
25 | MASTER ?= left |
26 | ifdef master | |
1d5567a3 | 27 | MASTER = $(master) |
86706de0 FS |
28 | endif |
29 | ||
b911e196 | 30 | ifeq ($(MASTER),right) |
1d5567a3 | 31 | OPT_DEFS += -DMASTER_IS_ON_RIGHT |
b911e196 | 32 | else |
1d5567a3 | 33 | ifneq ($(MASTER),left) |
c692fd1d | 34 | $(error MASTER does not have a valid value(left/right)) |
1d5567a3 | 35 | endif |
c692fd1d FS |
36 | endif |
37 | ||
8f790948 TI |
38 | ifdef SKIP_VERSION |
39 | OPT_DEFS += -DSKIP_VERSION | |
40 | endif | |
41 | ||
98b16b32 | 42 | # Determine which subfolders exist. |
43 | KEYBOARD_FOLDER_PATH_1 := $(KEYBOARD) | |
44 | KEYBOARD_FOLDER_PATH_2 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_1))) | |
45 | KEYBOARD_FOLDER_PATH_3 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_2))) | |
46 | KEYBOARD_FOLDER_PATH_4 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_3))) | |
47 | KEYBOARD_FOLDER_PATH_5 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_4))) | |
48 | KEYBOARD_FOLDER_1 := $(notdir $(KEYBOARD_FOLDER_PATH_1)) | |
49 | KEYBOARD_FOLDER_2 := $(notdir $(KEYBOARD_FOLDER_PATH_2)) | |
50 | KEYBOARD_FOLDER_3 := $(notdir $(KEYBOARD_FOLDER_PATH_3)) | |
51 | KEYBOARD_FOLDER_4 := $(notdir $(KEYBOARD_FOLDER_PATH_4)) | |
52 | KEYBOARD_FOLDER_5 := $(notdir $(KEYBOARD_FOLDER_PATH_5)) | |
800ec55d | 53 | KEYBOARD_PATHS := |
800ec55d JH |
54 | KEYBOARD_PATH_1 := keyboards/$(KEYBOARD_FOLDER_PATH_1) |
55 | KEYBOARD_PATH_2 := keyboards/$(KEYBOARD_FOLDER_PATH_2) | |
56 | KEYBOARD_PATH_3 := keyboards/$(KEYBOARD_FOLDER_PATH_3) | |
57 | KEYBOARD_PATH_4 := keyboards/$(KEYBOARD_FOLDER_PATH_4) | |
58 | KEYBOARD_PATH_5 := keyboards/$(KEYBOARD_FOLDER_PATH_5) | |
59 | ||
98b16b32 | 60 | ifneq ("$(wildcard $(KEYBOARD_PATH_5)/)","") |
800ec55d | 61 | KEYBOARD_PATHS += $(KEYBOARD_PATH_5) |
98b16b32 | 62 | endif |
63 | ifneq ("$(wildcard $(KEYBOARD_PATH_4)/)","") | |
64 | KEYBOARD_PATHS += $(KEYBOARD_PATH_4) | |
65 | endif | |
66 | ifneq ("$(wildcard $(KEYBOARD_PATH_3)/)","") | |
67 | KEYBOARD_PATHS += $(KEYBOARD_PATH_3) | |
68 | endif | |
69 | ifneq ("$(wildcard $(KEYBOARD_PATH_2)/)","") | |
70 | KEYBOARD_PATHS += $(KEYBOARD_PATH_2) | |
71 | endif | |
72 | ifneq ("$(wildcard $(KEYBOARD_PATH_1)/)","") | |
73 | KEYBOARD_PATHS += $(KEYBOARD_PATH_1) | |
74 | endif | |
75 | ||
3cf179be | 76 | |
98b16b32 | 77 | # Pull in rules.mk files from all our subfolders |
78 | ifneq ("$(wildcard $(KEYBOARD_PATH_5)/rules.mk)","") | |
800ec55d JH |
79 | include $(KEYBOARD_PATH_5)/rules.mk |
80 | endif | |
81 | ifneq ("$(wildcard $(KEYBOARD_PATH_4)/rules.mk)","") | |
800ec55d JH |
82 | include $(KEYBOARD_PATH_4)/rules.mk |
83 | endif | |
84 | ifneq ("$(wildcard $(KEYBOARD_PATH_3)/rules.mk)","") | |
800ec55d | 85 | include $(KEYBOARD_PATH_3)/rules.mk |
67b294ca | 86 | endif |
800ec55d | 87 | ifneq ("$(wildcard $(KEYBOARD_PATH_2)/rules.mk)","") |
800ec55d JH |
88 | include $(KEYBOARD_PATH_2)/rules.mk |
89 | endif | |
90 | ifneq ("$(wildcard $(KEYBOARD_PATH_1)/rules.mk)","") | |
800ec55d JH |
91 | include $(KEYBOARD_PATH_1)/rules.mk |
92 | endif | |
93 | ||
3cf179be JH |
94 | |
95 | MAIN_KEYMAP_PATH_1 := $(KEYBOARD_PATH_1)/keymaps/$(KEYMAP) | |
96 | MAIN_KEYMAP_PATH_2 := $(KEYBOARD_PATH_2)/keymaps/$(KEYMAP) | |
97 | MAIN_KEYMAP_PATH_3 := $(KEYBOARD_PATH_3)/keymaps/$(KEYMAP) | |
98 | MAIN_KEYMAP_PATH_4 := $(KEYBOARD_PATH_4)/keymaps/$(KEYMAP) | |
99 | MAIN_KEYMAP_PATH_5 := $(KEYBOARD_PATH_5)/keymaps/$(KEYMAP) | |
100 | ||
a25dd58b | 101 | # Check for keymap.json first, so we can regenerate keymap.c |
102 | include build_json.mk | |
103 | ||
104 | ifeq ("$(wildcard $(KEYMAP_PATH))", "") | |
105 | # Look through the possible keymap folders until we find a matching keymap.c | |
106 | ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_5)/keymap.c)","") | |
107 | -include $(MAIN_KEYMAP_PATH_5)/rules.mk | |
108 | KEYMAP_C := $(MAIN_KEYMAP_PATH_5)/keymap.c | |
109 | KEYMAP_PATH := $(MAIN_KEYMAP_PATH_5) | |
110 | else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_4)/keymap.c)","") | |
111 | -include $(MAIN_KEYMAP_PATH_4)/rules.mk | |
112 | KEYMAP_C := $(MAIN_KEYMAP_PATH_4)/keymap.c | |
113 | KEYMAP_PATH := $(MAIN_KEYMAP_PATH_4) | |
114 | else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_3)/keymap.c)","") | |
115 | -include $(MAIN_KEYMAP_PATH_3)/rules.mk | |
116 | KEYMAP_C := $(MAIN_KEYMAP_PATH_3)/keymap.c | |
117 | KEYMAP_PATH := $(MAIN_KEYMAP_PATH_3) | |
118 | else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_2)/keymap.c)","") | |
119 | -include $(MAIN_KEYMAP_PATH_2)/rules.mk | |
120 | KEYMAP_C := $(MAIN_KEYMAP_PATH_2)/keymap.c | |
121 | KEYMAP_PATH := $(MAIN_KEYMAP_PATH_2) | |
122 | else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_1)/keymap.c)","") | |
123 | -include $(MAIN_KEYMAP_PATH_1)/rules.mk | |
124 | KEYMAP_C := $(MAIN_KEYMAP_PATH_1)/keymap.c | |
125 | KEYMAP_PATH := $(MAIN_KEYMAP_PATH_1) | |
126 | else ifneq ($(LAYOUTS),) | |
127 | # If we haven't found a keymap yet fall back to community layouts | |
128 | include build_layout.mk | |
129 | else | |
130 | $(error Could not find keymap) | |
131 | # this state should never be reached | |
132 | endif | |
3cf179be JH |
133 | endif |
134 | ||
135 | ifeq ($(strip $(CTPC)), yes) | |
136 | CONVERT_TO_PROTON_C=yes | |
137 | endif | |
138 | ||
139 | ifeq ($(strip $(CONVERT_TO_PROTON_C)), yes) | |
140 | TARGET := $(TARGET)_proton_c | |
141 | include $(STM32_PATH)/proton_c.mk | |
142 | OPT_DEFS += -DCONVERT_TO_PROTON_C | |
143 | endif | |
144 | ||
40e67a30 | 145 | ifneq ($(FORCE_LAYOUT),) |
146 | TARGET := $(TARGET)_$(FORCE_LAYOUT) | |
147 | endif | |
148 | ||
3cf179be JH |
149 | include quantum/mcu_selection.mk |
150 | ||
151 | ifdef MCU_FAMILY | |
152 | OPT_DEFS += -DQMK_STM32 | |
153 | KEYBOARD_PATHS += $(STM32_PATH) | |
154 | endif | |
155 | ||
156 | ||
98b16b32 | 157 | # Find all the C source files to be compiled in subfolders. |
800ec55d JH |
158 | KEYBOARD_SRC := |
159 | ||
160 | KEYBOARD_C_1 := $(KEYBOARD_PATH_1)/$(KEYBOARD_FOLDER_1).c | |
161 | KEYBOARD_C_2 := $(KEYBOARD_PATH_2)/$(KEYBOARD_FOLDER_2).c | |
162 | KEYBOARD_C_3 := $(KEYBOARD_PATH_3)/$(KEYBOARD_FOLDER_3).c | |
163 | KEYBOARD_C_4 := $(KEYBOARD_PATH_4)/$(KEYBOARD_FOLDER_4).c | |
164 | KEYBOARD_C_5 := $(KEYBOARD_PATH_5)/$(KEYBOARD_FOLDER_5).c | |
67b294ca | 165 | |
800ec55d JH |
166 | ifneq ("$(wildcard $(KEYBOARD_C_5))","") |
167 | KEYBOARD_SRC += $(KEYBOARD_C_5) | |
168 | endif | |
169 | ifneq ("$(wildcard $(KEYBOARD_C_4))","") | |
170 | KEYBOARD_SRC += $(KEYBOARD_C_4) | |
171 | endif | |
172 | ifneq ("$(wildcard $(KEYBOARD_C_3))","") | |
173 | KEYBOARD_SRC += $(KEYBOARD_C_3) | |
174 | endif | |
175 | ifneq ("$(wildcard $(KEYBOARD_C_2))","") | |
176 | KEYBOARD_SRC += $(KEYBOARD_C_2) | |
177 | endif | |
178 | ifneq ("$(wildcard $(KEYBOARD_C_1))","") | |
179 | KEYBOARD_SRC += $(KEYBOARD_C_1) | |
180 | endif | |
181 | ||
6cf9402c DJ |
182 | # Generate KEYBOARD_name_subname for all levels of the keyboard folder |
183 | KEYBOARD_FILESAFE_1 := $(subst .,,$(subst /,_,$(KEYBOARD_FOLDER_PATH_1))) | |
184 | KEYBOARD_FILESAFE_2 := $(subst .,,$(subst /,_,$(KEYBOARD_FOLDER_PATH_2))) | |
185 | KEYBOARD_FILESAFE_3 := $(subst .,,$(subst /,_,$(KEYBOARD_FOLDER_PATH_3))) | |
186 | KEYBOARD_FILESAFE_4 := $(subst .,,$(subst /,_,$(KEYBOARD_FOLDER_PATH_4))) | |
187 | KEYBOARD_FILESAFE_5 := $(subst .,,$(subst /,_,$(KEYBOARD_FOLDER_PATH_5))) | |
800ec55d | 188 | |
6cf9402c DJ |
189 | ifneq ("$(wildcard $(KEYBOARD_PATH_5)/)","") |
190 | OPT_DEFS += -DKEYBOARD_$(KEYBOARD_FILESAFE_5) | |
191 | endif | |
192 | ifneq ("$(wildcard $(KEYBOARD_PATH_4)/)","") | |
193 | OPT_DEFS += -DKEYBOARD_$(KEYBOARD_FILESAFE_4) | |
194 | endif | |
195 | ifneq ("$(wildcard $(KEYBOARD_PATH_3)/)","") | |
196 | OPT_DEFS += -DKEYBOARD_$(KEYBOARD_FILESAFE_3) | |
197 | endif | |
198 | ifneq ("$(wildcard $(KEYBOARD_PATH_2)/)","") | |
199 | OPT_DEFS += -DKEYBOARD_$(KEYBOARD_FILESAFE_2) | |
200 | endif | |
201 | ifneq ("$(wildcard $(KEYBOARD_PATH_1)/)","") | |
202 | OPT_DEFS += -DKEYBOARD_$(KEYBOARD_FILESAFE_1) | |
203 | endif | |
ec3e065f | 204 | |
98b16b32 | 205 | # Setup the define for QMK_KEYBOARD_H. This is used inside of keymaps so |
206 | # that the same keymap may be used on multiple keyboards. | |
207 | # | |
208 | # We grab the most top-level include file that we can. That file should | |
209 | # use #ifdef statements to include all the neccesary subfolder includes, | |
210 | # as described here: | |
211 | # | |
212 | # https://docs.qmk.fm/#/feature_layouts?id=tips-for-making-layouts-keyboard-agnostic | |
213 | # | |
ec3e065f JH |
214 | ifneq ("$(wildcard $(KEYBOARD_PATH_1)/$(KEYBOARD_FOLDER_1).h)","") |
215 | QMK_KEYBOARD_H = $(KEYBOARD_FOLDER_1).h | |
216 | endif | |
217 | ifneq ("$(wildcard $(KEYBOARD_PATH_2)/$(KEYBOARD_FOLDER_2).h)","") | |
218 | QMK_KEYBOARD_H = $(KEYBOARD_FOLDER_2).h | |
219 | endif | |
220 | ifneq ("$(wildcard $(KEYBOARD_PATH_3)/$(KEYBOARD_FOLDER_3).h)","") | |
221 | QMK_KEYBOARD_H = $(KEYBOARD_FOLDER_3).h | |
222 | endif | |
223 | ifneq ("$(wildcard $(KEYBOARD_PATH_4)/$(KEYBOARD_FOLDER_4).h)","") | |
224 | QMK_KEYBOARD_H = $(KEYBOARD_FOLDER_4).h | |
225 | endif | |
226 | ifneq ("$(wildcard $(KEYBOARD_PATH_5)/$(KEYBOARD_FOLDER_5).h)","") | |
227 | QMK_KEYBOARD_H = $(KEYBOARD_FOLDER_5).h | |
228 | endif | |
229 | ||
98b16b32 | 230 | # Determine and set parameters based on the keyboard's processor family. |
231 | # We can assume a ChibiOS target When MCU_FAMILY is defined since it's | |
232 | # not used for LUFA | |
33fbd3be | 233 | ifdef MCU_FAMILY |
98b16b32 | 234 | FIRMWARE_FORMAT?=bin |
1d5567a3 | 235 | PLATFORM=CHIBIOS |
30680c6e | 236 | else ifdef ARM_ATSAM |
237 | PLATFORM=ARM_ATSAM | |
238 | FIRMWARE_FORMAT=bin | |
33fbd3be | 239 | else |
1d5567a3 | 240 | PLATFORM=AVR |
98b16b32 | 241 | FIRMWARE_FORMAT?=hex |
33fbd3be FS |
242 | endif |
243 | ||
244 | ifeq ($(PLATFORM),CHIBIOS) | |
1d5567a3 FS |
245 | include $(TMK_PATH)/chibios.mk |
246 | OPT_OS = chibios | |
800ec55d JH |
247 | ifneq ("$(wildcard $(KEYBOARD_PATH_5)/bootloader_defs.h)","") |
248 | OPT_DEFS += -include $(KEYBOARD_PATH_5)/bootloader_defs.h | |
249 | else ifneq ("$(wildcard $(KEYBOARD_PATH_5)/boards/$(BOARD)/bootloader_defs.h)","") | |
250 | OPT_DEFS += -include $(KEYBOARD_PATH_5)/boards/$(BOARD)/bootloader_defs.h | |
251 | else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/bootloader_defs.h)","") | |
252 | OPT_DEFS += -include $(KEYBOARD_PATH_4)/bootloader_defs.h | |
253 | else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/boards/$(BOARD)/bootloader_defs.h)","") | |
254 | OPT_DEFS += -include $(KEYBOARD_PATH_4)/boards/$(BOARD)/bootloader_defs.h | |
255 | else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/bootloader_defs.h)","") | |
256 | OPT_DEFS += -include $(KEYBOARD_PATH_3)/bootloader_defs.h | |
257 | else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/boards/$(BOARD)/bootloader_defs.h)","") | |
258 | OPT_DEFS += -include $(KEYBOARD_PATH_3)/boards/$(BOARD)/bootloader_defs.h | |
259 | else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/bootloader_defs.h)","") | |
260 | OPT_DEFS += -include $(KEYBOARD_PATH_2)/bootloader_defs.h | |
261 | else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/boards/$(BOARD)/bootloader_defs.h)","") | |
262 | OPT_DEFS += -include $(KEYBOARD_PATH_2)/boards/$(BOARD)/bootloader_defs.h | |
263 | else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/bootloader_defs.h)","") | |
264 | OPT_DEFS += -include $(KEYBOARD_PATH_1)/bootloader_defs.h | |
265 | else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/boards/$(BOARD)/bootloader_defs.h)","") | |
266 | OPT_DEFS += -include $(KEYBOARD_PATH_1)/boards/$(BOARD)/bootloader_defs.h | |
f6b3c676 KE |
267 | else ifneq ("$(wildcard $(TOP_DIR)/drivers/boards/$(BOARD)/bootloader_defs.h)","") |
268 | OPT_DEFS += -include $(TOP_DIR)/drivers/boards/$(BOARD)/bootloader_defs.h | |
1d5567a3 | 269 | endif |
33fbd3be FS |
270 | endif |
271 | ||
98b16b32 | 272 | # Find all of the config.h files and add them to our CONFIG_H define. |
800ec55d JH |
273 | CONFIG_H := |
274 | ifneq ("$(wildcard $(KEYBOARD_PATH_5)/config.h)","") | |
275 | CONFIG_H += $(KEYBOARD_PATH_5)/config.h | |
276 | endif | |
277 | ifneq ("$(wildcard $(KEYBOARD_PATH_4)/config.h)","") | |
278 | CONFIG_H += $(KEYBOARD_PATH_4)/config.h | |
279 | endif | |
280 | ifneq ("$(wildcard $(KEYBOARD_PATH_3)/config.h)","") | |
281 | CONFIG_H += $(KEYBOARD_PATH_3)/config.h | |
282 | endif | |
283 | ifneq ("$(wildcard $(KEYBOARD_PATH_2)/config.h)","") | |
284 | CONFIG_H += $(KEYBOARD_PATH_2)/config.h | |
285 | endif | |
286 | ifneq ("$(wildcard $(KEYBOARD_PATH_1)/config.h)","") | |
287 | CONFIG_H += $(KEYBOARD_PATH_1)/config.h | |
9028a412 FS |
288 | endif |
289 | ||
7e67bd79 TI |
290 | POST_CONFIG_H := |
291 | ifneq ("$(wildcard $(KEYBOARD_PATH_1)/post_config.h)","") | |
292 | POST_CONFIG_H += $(KEYBOARD_PATH_1)/post_config.h | |
293 | endif | |
294 | ifneq ("$(wildcard $(KEYBOARD_PATH_2)/post_config.h)","") | |
295 | POST_CONFIG_H += $(KEYBOARD_PATH_2)/post_config.h | |
296 | endif | |
297 | ifneq ("$(wildcard $(KEYBOARD_PATH_3)/post_config.h)","") | |
298 | POST_CONFIG_H += $(KEYBOARD_PATH_3)/post_config.h | |
299 | endif | |
300 | ifneq ("$(wildcard $(KEYBOARD_PATH_4)/post_config.h)","") | |
301 | POST_CONFIG_H += $(KEYBOARD_PATH_4)/post_config.h | |
302 | endif | |
303 | ifneq ("$(wildcard $(KEYBOARD_PATH_5)/post_config.h)","") | |
304 | POST_CONFIG_H += $(KEYBOARD_PATH_5)/post_config.h | |
305 | endif | |
306 | ||
b911e196 | 307 | # Save the defines and includes here, so we don't include any keymap specific ones |
3aac4e95 | 308 | PROJECT_DEFS := $(OPT_DEFS) |
800ec55d | 309 | PROJECT_INC := $(VPATH) $(EXTRAINCDIRS) $(KEYBOARD_PATHS) |
9028a412 | 310 | PROJECT_CONFIG := $(CONFIG_H) |
3aac4e95 | 311 | |
98b16b32 | 312 | # Userspace setup and definitions |
5ca9aecf JW |
313 | ifeq ("$(USER_NAME)","") |
314 | USER_NAME := $(KEYMAP) | |
315 | endif | |
316 | USER_PATH := users/$(USER_NAME) | |
317 | ||
06f196c5 | 318 | -include $(USER_PATH)/rules.mk |
508801c9 W |
319 | ifneq ("$(wildcard $(USER_PATH)/config.h)","") |
320 | CONFIG_H += $(USER_PATH)/config.h | |
162a67cb DJ |
321 | endif |
322 | ||
86706de0 FS |
323 | # Object files directory |
324 | # To put object files in current directory, use a dot (.), do NOT make | |
325 | # this an empty or blank macro! | |
3aac4e95 | 326 | KEYMAP_OUTPUT := $(BUILD_DIR)/obj_$(TARGET) |
86706de0 | 327 | |
86706de0 | 328 | ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","") |
800ec55d | 329 | CONFIG_H += $(KEYMAP_PATH)/config.h |
86706de0 FS |
330 | endif |
331 | ||
a25dd58b | 332 | # project specific files |
800ec55d | 333 | SRC += $(KEYBOARD_SRC) \ |
1d5567a3 | 334 | $(KEYMAP_C) \ |
1c0fe956 | 335 | $(QUANTUM_SRC) |
86706de0 | 336 | |
86706de0 FS |
337 | # Optimize size but this may cause error "relocation truncated to fit" |
338 | #EXTRALDFLAGS = -Wl,--relax | |
339 | ||
340 | # Search Path | |
341 | VPATH += $(KEYMAP_PATH) | |
27b0f892 | 342 | VPATH += $(USER_PATH) |
800ec55d | 343 | VPATH += $(KEYBOARD_PATHS) |
c692fd1d | 344 | VPATH += $(COMMON_VPATH) |
86706de0 | 345 | |
1c0fe956 | 346 | include common_features.mk |
3be13d1f | 347 | include $(TMK_PATH)/protocol.mk |
86706de0 | 348 | include $(TMK_PATH)/common.mk |
9fdc2762 | 349 | include bootloader.mk |
1c0fe956 | 350 | |
29f68459 | 351 | SRC += $(patsubst %.c,%.clib,$(LIB_SRC)) |
8f790948 | 352 | SRC += $(patsubst %.c,%.clib,$(QUANTUM_LIB_SRC)) |
c692fd1d FS |
353 | SRC += $(TMK_COMMON_SRC) |
354 | OPT_DEFS += $(TMK_COMMON_DEFS) | |
355 | EXTRALDFLAGS += $(TMK_COMMON_LDFLAGS) | |
356 | ||
86706de0 | 357 | ifeq ($(PLATFORM),AVR) |
f7462aaa | 358 | ifeq ($(strip $(PROTOCOL)), VUSB) |
1d5567a3 | 359 | include $(TMK_PATH)/protocol/vusb.mk |
f7462aaa | 360 | else |
1d5567a3 | 361 | include $(TMK_PATH)/protocol/lufa.mk |
f7462aaa | 362 | endif |
1d5567a3 | 363 | include $(TMK_PATH)/avr.mk |
86706de0 FS |
364 | endif |
365 | ||
30680c6e | 366 | ifeq ($(PLATFORM),ARM_ATSAM) |
367 | include $(TMK_PATH)/arm_atsam.mk | |
368 | include $(TMK_PATH)/protocol/arm_atsam.mk | |
369 | endif | |
370 | ||
53ff8a31 | 371 | ifeq ($(PLATFORM),CHIBIOS) |
372 | include $(TMK_PATH)/protocol/chibios.mk | |
373 | endif | |
374 | ||
86706de0 | 375 | ifeq ($(strip $(VISUALIZER_ENABLE)), yes) |
1d5567a3 FS |
376 | VISUALIZER_DIR = $(QUANTUM_DIR)/visualizer |
377 | VISUALIZER_PATH = $(QUANTUM_PATH)/visualizer | |
378 | include $(VISUALIZER_PATH)/visualizer.mk | |
86706de0 FS |
379 | endif |
380 | ||
7e67bd79 | 381 | CONFIG_H += $(POST_CONFIG_H) |
ec3e065f JH |
382 | ALL_CONFIGS := $(PROJECT_CONFIG) $(CONFIG_H) |
383 | ||
3aac4e95 FS |
384 | OUTPUTS := $(KEYMAP_OUTPUT) $(KEYBOARD_OUTPUT) |
385 | $(KEYMAP_OUTPUT)_SRC := $(SRC) | |
d2ff66a9 | 386 | $(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) $(GFXDEFS) \ |
ec3e065f | 387 | -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYBOARD_H=\"$(QMK_KEYBOARD_H)\" -DQMK_KEYBOARD_CONFIG_H=\"$(KEYBOARD_PATH_1)/config.h\" \ |
d2ff66a9 | 388 | -DQMK_KEYMAP=\"$(KEYMAP)\" -DQMK_KEYMAP_H=\"$(KEYMAP).h\" -DQMK_KEYMAP_CONFIG_H=\"$(KEYMAP_PATH)/config.h\" \ |
800ec55d | 389 | -DQMK_SUBPROJECT -DQMK_SUBPROJECT_H -DQMK_SUBPROJECT_CONFIG_H |
c692fd1d | 390 | $(KEYMAP_OUTPUT)_INC := $(VPATH) $(EXTRAINCDIRS) |
9028a412 | 391 | $(KEYMAP_OUTPUT)_CONFIG := $(CONFIG_H) |
f5c89416 FS |
392 | $(KEYBOARD_OUTPUT)_SRC := $(CHIBISRC) $(GFXSRC) |
393 | $(KEYBOARD_OUTPUT)_DEFS := $(PROJECT_DEFS) $(GFXDEFS) | |
394 | $(KEYBOARD_OUTPUT)_INC := $(PROJECT_INC) $(GFXINC) | |
800ec55d | 395 | $(KEYBOARD_OUTPUT)_CONFIG := $(PROJECT_CONFIG) |
3aac4e95 | 396 | |
8a9aac6e | 397 | # Default target. |
9fdc2762 | 398 | all: build check-size |
9bfaf667 | 399 | build: elf cpfirmware |
4082d880 | 400 | check-size: build |
0f95c086 | 401 | objs-size: build |
3aac4e95 | 402 | |
d5bc7fc1 | 403 | include show_options.mk |
86706de0 | 404 | include $(TMK_PATH)/rules.mk |