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 |
1d5567a3 | 116 | PLATFORM=CHIBIOS |
33fbd3be | 117 | else |
1d5567a3 | 118 | PLATFORM=AVR |
33fbd3be FS |
119 | endif |
120 | ||
121 | ifeq ($(PLATFORM),CHIBIOS) | |
1d5567a3 FS |
122 | include $(TMK_PATH)/protocol/chibios.mk |
123 | include $(TMK_PATH)/chibios.mk | |
124 | OPT_OS = chibios | |
800ec55d JH |
125 | ifneq ("$(wildcard $(KEYBOARD_PATH_5)/bootloader_defs.h)","") |
126 | OPT_DEFS += -include $(KEYBOARD_PATH_5)/bootloader_defs.h | |
127 | else ifneq ("$(wildcard $(KEYBOARD_PATH_5)/boards/$(BOARD)/bootloader_defs.h)","") | |
128 | OPT_DEFS += -include $(KEYBOARD_PATH_5)/boards/$(BOARD)/bootloader_defs.h | |
129 | else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/bootloader_defs.h)","") | |
130 | OPT_DEFS += -include $(KEYBOARD_PATH_4)/bootloader_defs.h | |
131 | else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/boards/$(BOARD)/bootloader_defs.h)","") | |
132 | OPT_DEFS += -include $(KEYBOARD_PATH_4)/boards/$(BOARD)/bootloader_defs.h | |
133 | else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/bootloader_defs.h)","") | |
134 | OPT_DEFS += -include $(KEYBOARD_PATH_3)/bootloader_defs.h | |
135 | else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/boards/$(BOARD)/bootloader_defs.h)","") | |
136 | OPT_DEFS += -include $(KEYBOARD_PATH_3)/boards/$(BOARD)/bootloader_defs.h | |
137 | else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/bootloader_defs.h)","") | |
138 | OPT_DEFS += -include $(KEYBOARD_PATH_2)/bootloader_defs.h | |
139 | else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/boards/$(BOARD)/bootloader_defs.h)","") | |
140 | OPT_DEFS += -include $(KEYBOARD_PATH_2)/boards/$(BOARD)/bootloader_defs.h | |
141 | else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/bootloader_defs.h)","") | |
142 | OPT_DEFS += -include $(KEYBOARD_PATH_1)/bootloader_defs.h | |
143 | else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/boards/$(BOARD)/bootloader_defs.h)","") | |
144 | OPT_DEFS += -include $(KEYBOARD_PATH_1)/boards/$(BOARD)/bootloader_defs.h | |
1d5567a3 | 145 | endif |
33fbd3be FS |
146 | endif |
147 | ||
800ec55d JH |
148 | CONFIG_H := |
149 | ifneq ("$(wildcard $(KEYBOARD_PATH_5)/config.h)","") | |
150 | CONFIG_H += $(KEYBOARD_PATH_5)/config.h | |
151 | endif | |
152 | ifneq ("$(wildcard $(KEYBOARD_PATH_4)/config.h)","") | |
153 | CONFIG_H += $(KEYBOARD_PATH_4)/config.h | |
154 | endif | |
155 | ifneq ("$(wildcard $(KEYBOARD_PATH_3)/config.h)","") | |
156 | CONFIG_H += $(KEYBOARD_PATH_3)/config.h | |
157 | endif | |
158 | ifneq ("$(wildcard $(KEYBOARD_PATH_2)/config.h)","") | |
159 | CONFIG_H += $(KEYBOARD_PATH_2)/config.h | |
160 | endif | |
161 | ifneq ("$(wildcard $(KEYBOARD_PATH_1)/config.h)","") | |
162 | CONFIG_H += $(KEYBOARD_PATH_1)/config.h | |
9028a412 FS |
163 | endif |
164 | ||
b911e196 | 165 | # Save the defines and includes here, so we don't include any keymap specific ones |
3aac4e95 | 166 | PROJECT_DEFS := $(OPT_DEFS) |
800ec55d | 167 | PROJECT_INC := $(VPATH) $(EXTRAINCDIRS) $(KEYBOARD_PATHS) |
9028a412 | 168 | PROJECT_CONFIG := $(CONFIG_H) |
3aac4e95 | 169 | |
800ec55d JH |
170 | MAIN_KEYMAP_PATH_1 := $(KEYBOARD_PATH_1)/keymaps/$(KEYMAP) |
171 | MAIN_KEYMAP_PATH_2 := $(KEYBOARD_PATH_2)/keymaps/$(KEYMAP) | |
172 | MAIN_KEYMAP_PATH_3 := $(KEYBOARD_PATH_3)/keymaps/$(KEYMAP) | |
173 | MAIN_KEYMAP_PATH_4 := $(KEYBOARD_PATH_4)/keymaps/$(KEYMAP) | |
174 | MAIN_KEYMAP_PATH_5 := $(KEYBOARD_PATH_5)/keymaps/$(KEYMAP) | |
175 | ||
176 | ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_5)/keymap.c)","") | |
177 | -include $(MAIN_KEYMAP_PATH_5)/rules.mk | |
178 | KEYMAP_C := $(MAIN_KEYMAP_PATH_5)/keymap.c | |
179 | KEYMAP_PATH := $(MAIN_KEYMAP_PATH_5) | |
180 | else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_4)/keymap.c)","") | |
181 | -include $(MAIN_KEYMAP_PATH_4)/rules.mk | |
182 | KEYMAP_C := $(MAIN_KEYMAP_PATH_4)/keymap.c | |
183 | KEYMAP_PATH := $(MAIN_KEYMAP_PATH_4) | |
184 | else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_3)/keymap.c)","") | |
185 | -include $(MAIN_KEYMAP_PATH_3)/rules.mk | |
186 | KEYMAP_C := $(MAIN_KEYMAP_PATH_3)/keymap.c | |
187 | KEYMAP_PATH := $(MAIN_KEYMAP_PATH_3) | |
188 | else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_2)/keymap.c)","") | |
189 | -include $(MAIN_KEYMAP_PATH_2)/rules.mk | |
190 | KEYMAP_C := $(MAIN_KEYMAP_PATH_2)/keymap.c | |
191 | KEYMAP_PATH := $(MAIN_KEYMAP_PATH_2) | |
192 | else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_1)/keymap.c)","") | |
193 | -include $(MAIN_KEYMAP_PATH_1)/rules.mk | |
194 | KEYMAP_C := $(MAIN_KEYMAP_PATH_1)/keymap.c | |
195 | KEYMAP_PATH := $(MAIN_KEYMAP_PATH_1) | |
d2ff66a9 JH |
196 | else ifneq ($(LAYOUTS),) |
197 | include build_layout.mk | |
800ec55d | 198 | else |
d2ff66a9 JH |
199 | $(error Could not find keymap) |
200 | # this state should never be reached | |
86706de0 FS |
201 | endif |
202 | ||
06f196c5 JH |
203 | # User space stuff |
204 | USER_PATH := users/$(KEYMAP) | |
205 | -include $(USER_PATH)/rules.mk | |
206 | ||
86706de0 FS |
207 | # Object files directory |
208 | # To put object files in current directory, use a dot (.), do NOT make | |
209 | # this an empty or blank macro! | |
3aac4e95 | 210 | KEYMAP_OUTPUT := $(BUILD_DIR)/obj_$(TARGET) |
86706de0 | 211 | |
86706de0 | 212 | ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","") |
800ec55d | 213 | CONFIG_H += $(KEYMAP_PATH)/config.h |
86706de0 FS |
214 | endif |
215 | ||
216 | # # project specific files | |
800ec55d | 217 | SRC += $(KEYBOARD_SRC) \ |
1d5567a3 | 218 | $(KEYMAP_C) \ |
1c0fe956 | 219 | $(QUANTUM_SRC) |
86706de0 | 220 | |
86706de0 FS |
221 | # Optimize size but this may cause error "relocation truncated to fit" |
222 | #EXTRALDFLAGS = -Wl,--relax | |
223 | ||
224 | # Search Path | |
225 | VPATH += $(KEYMAP_PATH) | |
800ec55d | 226 | VPATH += $(KEYBOARD_PATHS) |
c692fd1d | 227 | VPATH += $(COMMON_VPATH) |
06f196c5 | 228 | VPATH += $(USER_PATH) |
86706de0 | 229 | |
1c0fe956 | 230 | include common_features.mk |
3be13d1f | 231 | include $(TMK_PATH)/protocol.mk |
86706de0 | 232 | include $(TMK_PATH)/common.mk |
9fdc2762 | 233 | include bootloader.mk |
1c0fe956 | 234 | |
c692fd1d FS |
235 | SRC += $(TMK_COMMON_SRC) |
236 | OPT_DEFS += $(TMK_COMMON_DEFS) | |
237 | EXTRALDFLAGS += $(TMK_COMMON_LDFLAGS) | |
238 | ||
86706de0 | 239 | ifeq ($(PLATFORM),AVR) |
f7462aaa | 240 | ifeq ($(strip $(PROTOCOL)), VUSB) |
1d5567a3 | 241 | include $(TMK_PATH)/protocol/vusb.mk |
f7462aaa | 242 | else |
1d5567a3 | 243 | include $(TMK_PATH)/protocol/lufa.mk |
f7462aaa | 244 | endif |
1d5567a3 | 245 | include $(TMK_PATH)/avr.mk |
86706de0 FS |
246 | endif |
247 | ||
248 | ifeq ($(strip $(VISUALIZER_ENABLE)), yes) | |
1d5567a3 FS |
249 | VISUALIZER_DIR = $(QUANTUM_DIR)/visualizer |
250 | VISUALIZER_PATH = $(QUANTUM_PATH)/visualizer | |
251 | include $(VISUALIZER_PATH)/visualizer.mk | |
86706de0 FS |
252 | endif |
253 | ||
ec3e065f JH |
254 | ALL_CONFIGS := $(PROJECT_CONFIG) $(CONFIG_H) |
255 | ||
3aac4e95 FS |
256 | OUTPUTS := $(KEYMAP_OUTPUT) $(KEYBOARD_OUTPUT) |
257 | $(KEYMAP_OUTPUT)_SRC := $(SRC) | |
d2ff66a9 | 258 | $(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) $(GFXDEFS) \ |
ec3e065f | 259 | -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYBOARD_H=\"$(QMK_KEYBOARD_H)\" -DQMK_KEYBOARD_CONFIG_H=\"$(KEYBOARD_PATH_1)/config.h\" \ |
d2ff66a9 | 260 | -DQMK_KEYMAP=\"$(KEYMAP)\" -DQMK_KEYMAP_H=\"$(KEYMAP).h\" -DQMK_KEYMAP_CONFIG_H=\"$(KEYMAP_PATH)/config.h\" \ |
800ec55d | 261 | -DQMK_SUBPROJECT -DQMK_SUBPROJECT_H -DQMK_SUBPROJECT_CONFIG_H |
c692fd1d | 262 | $(KEYMAP_OUTPUT)_INC := $(VPATH) $(EXTRAINCDIRS) |
9028a412 | 263 | $(KEYMAP_OUTPUT)_CONFIG := $(CONFIG_H) |
f5c89416 FS |
264 | $(KEYBOARD_OUTPUT)_SRC := $(CHIBISRC) $(GFXSRC) |
265 | $(KEYBOARD_OUTPUT)_DEFS := $(PROJECT_DEFS) $(GFXDEFS) | |
266 | $(KEYBOARD_OUTPUT)_INC := $(PROJECT_INC) $(GFXINC) | |
800ec55d | 267 | $(KEYBOARD_OUTPUT)_CONFIG := $(PROJECT_CONFIG) |
3aac4e95 | 268 | |
8a9aac6e | 269 | # Default target. |
9fdc2762 | 270 | all: build check-size |
8a9aac6e FS |
271 | |
272 | # Change the build target to build a HEX file or a library. | |
9fdc2762 | 273 | build: elf cphex |
8a9aac6e FS |
274 | #build: elf hex eep lss sym |
275 | #build: lib | |
276 | ||
3aac4e95 | 277 | |
86706de0 | 278 | include $(TMK_PATH)/rules.mk |