Commit | Line | Data |
---|---|---|
86706de0 FS |
1 | ifndef VERBOSE |
2 | .SILENT: | |
3 | endif | |
4 | ||
5 | .DEFAULT_GOAL := all | |
6 | ||
27a673f5 | 7 | include common.mk |
8f164031 | 8 | |
800ec55d JH |
9 | # 5/4/3/2/1 |
10 | KEYBOARD_FOLDER_PATH_1 := $(KEYBOARD) | |
11 | KEYBOARD_FOLDER_PATH_2 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_1))) | |
12 | KEYBOARD_FOLDER_PATH_3 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_2))) | |
13 | KEYBOARD_FOLDER_PATH_4 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_3))) | |
14 | KEYBOARD_FOLDER_PATH_5 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_4))) | |
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) | |
8f164031 FS |
25 | |
26 | # Force expansion | |
27 | TARGET := $(TARGET) | |
28 | ||
86706de0 FS |
29 | MASTER ?= left |
30 | ifdef master | |
1d5567a3 | 31 | MASTER = $(master) |
86706de0 FS |
32 | endif |
33 | ||
b911e196 | 34 | ifeq ($(MASTER),right) |
1d5567a3 | 35 | OPT_DEFS += -DMASTER_IS_ON_RIGHT |
b911e196 | 36 | else |
1d5567a3 | 37 | ifneq ($(MASTER),left) |
c692fd1d | 38 | $(error MASTER does not have a valid value(left/right)) |
1d5567a3 | 39 | endif |
c692fd1d FS |
40 | endif |
41 | ||
800ec55d | 42 | KEYBOARD_PATHS := |
86706de0 | 43 | |
800ec55d JH |
44 | KEYBOARD_PATH_1 := keyboards/$(KEYBOARD_FOLDER_PATH_1) |
45 | KEYBOARD_PATH_2 := keyboards/$(KEYBOARD_FOLDER_PATH_2) | |
46 | KEYBOARD_PATH_3 := keyboards/$(KEYBOARD_FOLDER_PATH_3) | |
47 | KEYBOARD_PATH_4 := keyboards/$(KEYBOARD_FOLDER_PATH_4) | |
48 | KEYBOARD_PATH_5 := keyboards/$(KEYBOARD_FOLDER_PATH_5) | |
49 | ||
50 | ifneq ("$(wildcard $(KEYBOARD_PATH_5)/rules.mk)","") | |
51 | KEYBOARD_PATHS += $(KEYBOARD_PATH_5) | |
52 | include $(KEYBOARD_PATH_5)/rules.mk | |
53 | endif | |
54 | ifneq ("$(wildcard $(KEYBOARD_PATH_4)/rules.mk)","") | |
55 | KEYBOARD_PATHS += $(KEYBOARD_PATH_4) | |
56 | include $(KEYBOARD_PATH_4)/rules.mk | |
57 | endif | |
58 | ifneq ("$(wildcard $(KEYBOARD_PATH_3)/rules.mk)","") | |
59 | KEYBOARD_PATHS += $(KEYBOARD_PATH_3) | |
60 | include $(KEYBOARD_PATH_3)/rules.mk | |
67b294ca | 61 | endif |
800ec55d JH |
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 | |
67b294ca | 78 | |
800ec55d JH |
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 | ||
ec3e065f JH |
97 | |
98 | ifneq ("$(wildcard $(KEYBOARD_PATH_1)/$(KEYBOARD_FOLDER_1).h)","") | |
99 | QMK_KEYBOARD_H = $(KEYBOARD_FOLDER_1).h | |
100 | endif | |
101 | ifneq ("$(wildcard $(KEYBOARD_PATH_2)/$(KEYBOARD_FOLDER_2).h)","") | |
102 | QMK_KEYBOARD_H = $(KEYBOARD_FOLDER_2).h | |
103 | endif | |
104 | ifneq ("$(wildcard $(KEYBOARD_PATH_3)/$(KEYBOARD_FOLDER_3).h)","") | |
105 | QMK_KEYBOARD_H = $(KEYBOARD_FOLDER_3).h | |
106 | endif | |
107 | ifneq ("$(wildcard $(KEYBOARD_PATH_4)/$(KEYBOARD_FOLDER_4).h)","") | |
108 | QMK_KEYBOARD_H = $(KEYBOARD_FOLDER_4).h | |
109 | endif | |
110 | ifneq ("$(wildcard $(KEYBOARD_PATH_5)/$(KEYBOARD_FOLDER_5).h)","") | |
111 | QMK_KEYBOARD_H = $(KEYBOARD_FOLDER_5).h | |
112 | endif | |
113 | ||
800ec55d | 114 | # We can assume a ChibiOS target When MCU_FAMILY is defined , since it's not used for LUFA |
33fbd3be | 115 | ifdef MCU_FAMILY |
9bfaf667 | 116 | FIRMWARE_FORMAT=bin |
1d5567a3 | 117 | PLATFORM=CHIBIOS |
33fbd3be | 118 | else |
1d5567a3 | 119 | PLATFORM=AVR |
9bfaf667 | 120 | FIRMWARE_FORMAT=hex |
33fbd3be FS |
121 | endif |
122 | ||
123 | ifeq ($(PLATFORM),CHIBIOS) | |
1d5567a3 FS |
124 | include $(TMK_PATH)/chibios.mk |
125 | OPT_OS = chibios | |
800ec55d JH |
126 | ifneq ("$(wildcard $(KEYBOARD_PATH_5)/bootloader_defs.h)","") |
127 | OPT_DEFS += -include $(KEYBOARD_PATH_5)/bootloader_defs.h | |
128 | else ifneq ("$(wildcard $(KEYBOARD_PATH_5)/boards/$(BOARD)/bootloader_defs.h)","") | |
129 | OPT_DEFS += -include $(KEYBOARD_PATH_5)/boards/$(BOARD)/bootloader_defs.h | |
130 | else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/bootloader_defs.h)","") | |
131 | OPT_DEFS += -include $(KEYBOARD_PATH_4)/bootloader_defs.h | |
132 | else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/boards/$(BOARD)/bootloader_defs.h)","") | |
133 | OPT_DEFS += -include $(KEYBOARD_PATH_4)/boards/$(BOARD)/bootloader_defs.h | |
134 | else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/bootloader_defs.h)","") | |
135 | OPT_DEFS += -include $(KEYBOARD_PATH_3)/bootloader_defs.h | |
136 | else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/boards/$(BOARD)/bootloader_defs.h)","") | |
137 | OPT_DEFS += -include $(KEYBOARD_PATH_3)/boards/$(BOARD)/bootloader_defs.h | |
138 | else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/bootloader_defs.h)","") | |
139 | OPT_DEFS += -include $(KEYBOARD_PATH_2)/bootloader_defs.h | |
140 | else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/boards/$(BOARD)/bootloader_defs.h)","") | |
141 | OPT_DEFS += -include $(KEYBOARD_PATH_2)/boards/$(BOARD)/bootloader_defs.h | |
142 | else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/bootloader_defs.h)","") | |
143 | OPT_DEFS += -include $(KEYBOARD_PATH_1)/bootloader_defs.h | |
144 | else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/boards/$(BOARD)/bootloader_defs.h)","") | |
145 | OPT_DEFS += -include $(KEYBOARD_PATH_1)/boards/$(BOARD)/bootloader_defs.h | |
f6b3c676 KE |
146 | else ifneq ("$(wildcard $(TOP_DIR)/drivers/boards/$(BOARD)/bootloader_defs.h)","") |
147 | OPT_DEFS += -include $(TOP_DIR)/drivers/boards/$(BOARD)/bootloader_defs.h | |
1d5567a3 | 148 | endif |
33fbd3be FS |
149 | endif |
150 | ||
800ec55d JH |
151 | CONFIG_H := |
152 | ifneq ("$(wildcard $(KEYBOARD_PATH_5)/config.h)","") | |
153 | CONFIG_H += $(KEYBOARD_PATH_5)/config.h | |
154 | endif | |
155 | ifneq ("$(wildcard $(KEYBOARD_PATH_4)/config.h)","") | |
156 | CONFIG_H += $(KEYBOARD_PATH_4)/config.h | |
157 | endif | |
158 | ifneq ("$(wildcard $(KEYBOARD_PATH_3)/config.h)","") | |
159 | CONFIG_H += $(KEYBOARD_PATH_3)/config.h | |
160 | endif | |
161 | ifneq ("$(wildcard $(KEYBOARD_PATH_2)/config.h)","") | |
162 | CONFIG_H += $(KEYBOARD_PATH_2)/config.h | |
163 | endif | |
164 | ifneq ("$(wildcard $(KEYBOARD_PATH_1)/config.h)","") | |
165 | CONFIG_H += $(KEYBOARD_PATH_1)/config.h | |
9028a412 FS |
166 | endif |
167 | ||
b911e196 | 168 | # Save the defines and includes here, so we don't include any keymap specific ones |
3aac4e95 | 169 | PROJECT_DEFS := $(OPT_DEFS) |
800ec55d | 170 | PROJECT_INC := $(VPATH) $(EXTRAINCDIRS) $(KEYBOARD_PATHS) |
9028a412 | 171 | PROJECT_CONFIG := $(CONFIG_H) |
3aac4e95 | 172 | |
800ec55d JH |
173 | MAIN_KEYMAP_PATH_1 := $(KEYBOARD_PATH_1)/keymaps/$(KEYMAP) |
174 | MAIN_KEYMAP_PATH_2 := $(KEYBOARD_PATH_2)/keymaps/$(KEYMAP) | |
175 | MAIN_KEYMAP_PATH_3 := $(KEYBOARD_PATH_3)/keymaps/$(KEYMAP) | |
176 | MAIN_KEYMAP_PATH_4 := $(KEYBOARD_PATH_4)/keymaps/$(KEYMAP) | |
177 | MAIN_KEYMAP_PATH_5 := $(KEYBOARD_PATH_5)/keymaps/$(KEYMAP) | |
178 | ||
179 | ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_5)/keymap.c)","") | |
180 | -include $(MAIN_KEYMAP_PATH_5)/rules.mk | |
181 | KEYMAP_C := $(MAIN_KEYMAP_PATH_5)/keymap.c | |
182 | KEYMAP_PATH := $(MAIN_KEYMAP_PATH_5) | |
183 | else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_4)/keymap.c)","") | |
184 | -include $(MAIN_KEYMAP_PATH_4)/rules.mk | |
185 | KEYMAP_C := $(MAIN_KEYMAP_PATH_4)/keymap.c | |
186 | KEYMAP_PATH := $(MAIN_KEYMAP_PATH_4) | |
187 | else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_3)/keymap.c)","") | |
188 | -include $(MAIN_KEYMAP_PATH_3)/rules.mk | |
189 | KEYMAP_C := $(MAIN_KEYMAP_PATH_3)/keymap.c | |
190 | KEYMAP_PATH := $(MAIN_KEYMAP_PATH_3) | |
191 | else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_2)/keymap.c)","") | |
192 | -include $(MAIN_KEYMAP_PATH_2)/rules.mk | |
193 | KEYMAP_C := $(MAIN_KEYMAP_PATH_2)/keymap.c | |
194 | KEYMAP_PATH := $(MAIN_KEYMAP_PATH_2) | |
195 | else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_1)/keymap.c)","") | |
196 | -include $(MAIN_KEYMAP_PATH_1)/rules.mk | |
197 | KEYMAP_C := $(MAIN_KEYMAP_PATH_1)/keymap.c | |
198 | KEYMAP_PATH := $(MAIN_KEYMAP_PATH_1) | |
d2ff66a9 JH |
199 | else ifneq ($(LAYOUTS),) |
200 | include build_layout.mk | |
53ff8a31 | 201 | else |
d2ff66a9 JH |
202 | $(error Could not find keymap) |
203 | # this state should never be reached | |
86706de0 FS |
204 | endif |
205 | ||
06f196c5 | 206 | # User space stuff |
5ca9aecf JW |
207 | ifeq ("$(USER_NAME)","") |
208 | USER_NAME := $(KEYMAP) | |
209 | endif | |
210 | USER_PATH := users/$(USER_NAME) | |
211 | ||
06f196c5 | 212 | -include $(USER_PATH)/rules.mk |
508801c9 W |
213 | ifneq ("$(wildcard $(USER_PATH)/config.h)","") |
214 | CONFIG_H += $(USER_PATH)/config.h | |
162a67cb DJ |
215 | endif |
216 | ||
06f196c5 | 217 | |
86706de0 FS |
218 | # Object files directory |
219 | # To put object files in current directory, use a dot (.), do NOT make | |
220 | # this an empty or blank macro! | |
3aac4e95 | 221 | KEYMAP_OUTPUT := $(BUILD_DIR)/obj_$(TARGET) |
86706de0 | 222 | |
86706de0 | 223 | ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","") |
800ec55d | 224 | CONFIG_H += $(KEYMAP_PATH)/config.h |
86706de0 FS |
225 | endif |
226 | ||
227 | # # project specific files | |
800ec55d | 228 | SRC += $(KEYBOARD_SRC) \ |
1d5567a3 | 229 | $(KEYMAP_C) \ |
1c0fe956 | 230 | $(QUANTUM_SRC) |
86706de0 | 231 | |
86706de0 FS |
232 | # Optimize size but this may cause error "relocation truncated to fit" |
233 | #EXTRALDFLAGS = -Wl,--relax | |
234 | ||
235 | # Search Path | |
236 | VPATH += $(KEYMAP_PATH) | |
800ec55d | 237 | VPATH += $(KEYBOARD_PATHS) |
c692fd1d | 238 | VPATH += $(COMMON_VPATH) |
06f196c5 | 239 | VPATH += $(USER_PATH) |
86706de0 | 240 | |
1c0fe956 | 241 | include common_features.mk |
3be13d1f | 242 | include $(TMK_PATH)/protocol.mk |
86706de0 | 243 | include $(TMK_PATH)/common.mk |
9fdc2762 | 244 | include bootloader.mk |
1c0fe956 | 245 | |
c692fd1d FS |
246 | SRC += $(TMK_COMMON_SRC) |
247 | OPT_DEFS += $(TMK_COMMON_DEFS) | |
248 | EXTRALDFLAGS += $(TMK_COMMON_LDFLAGS) | |
249 | ||
86706de0 | 250 | ifeq ($(PLATFORM),AVR) |
f7462aaa | 251 | ifeq ($(strip $(PROTOCOL)), VUSB) |
1d5567a3 | 252 | include $(TMK_PATH)/protocol/vusb.mk |
f7462aaa | 253 | else |
1d5567a3 | 254 | include $(TMK_PATH)/protocol/lufa.mk |
f7462aaa | 255 | endif |
1d5567a3 | 256 | include $(TMK_PATH)/avr.mk |
86706de0 FS |
257 | endif |
258 | ||
53ff8a31 | 259 | ifeq ($(PLATFORM),CHIBIOS) |
260 | include $(TMK_PATH)/protocol/chibios.mk | |
261 | endif | |
262 | ||
86706de0 | 263 | ifeq ($(strip $(VISUALIZER_ENABLE)), yes) |
1d5567a3 FS |
264 | VISUALIZER_DIR = $(QUANTUM_DIR)/visualizer |
265 | VISUALIZER_PATH = $(QUANTUM_PATH)/visualizer | |
266 | include $(VISUALIZER_PATH)/visualizer.mk | |
86706de0 FS |
267 | endif |
268 | ||
ec3e065f JH |
269 | ALL_CONFIGS := $(PROJECT_CONFIG) $(CONFIG_H) |
270 | ||
3aac4e95 FS |
271 | OUTPUTS := $(KEYMAP_OUTPUT) $(KEYBOARD_OUTPUT) |
272 | $(KEYMAP_OUTPUT)_SRC := $(SRC) | |
d2ff66a9 | 273 | $(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) $(GFXDEFS) \ |
ec3e065f | 274 | -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYBOARD_H=\"$(QMK_KEYBOARD_H)\" -DQMK_KEYBOARD_CONFIG_H=\"$(KEYBOARD_PATH_1)/config.h\" \ |
d2ff66a9 | 275 | -DQMK_KEYMAP=\"$(KEYMAP)\" -DQMK_KEYMAP_H=\"$(KEYMAP).h\" -DQMK_KEYMAP_CONFIG_H=\"$(KEYMAP_PATH)/config.h\" \ |
800ec55d | 276 | -DQMK_SUBPROJECT -DQMK_SUBPROJECT_H -DQMK_SUBPROJECT_CONFIG_H |
c692fd1d | 277 | $(KEYMAP_OUTPUT)_INC := $(VPATH) $(EXTRAINCDIRS) |
9028a412 | 278 | $(KEYMAP_OUTPUT)_CONFIG := $(CONFIG_H) |
f5c89416 FS |
279 | $(KEYBOARD_OUTPUT)_SRC := $(CHIBISRC) $(GFXSRC) |
280 | $(KEYBOARD_OUTPUT)_DEFS := $(PROJECT_DEFS) $(GFXDEFS) | |
281 | $(KEYBOARD_OUTPUT)_INC := $(PROJECT_INC) $(GFXINC) | |
800ec55d | 282 | $(KEYBOARD_OUTPUT)_CONFIG := $(PROJECT_CONFIG) |
3aac4e95 | 283 | |
8a9aac6e | 284 | # Default target. |
9fdc2762 | 285 | all: build check-size |
8a9aac6e FS |
286 | |
287 | # Change the build target to build a HEX file or a library. | |
9bfaf667 | 288 | build: elf cpfirmware |
8a9aac6e FS |
289 | #build: elf hex eep lss sym |
290 | #build: lib | |
291 | ||
3aac4e95 | 292 | |
86706de0 | 293 | include $(TMK_PATH)/rules.mk |