Commit | Line | Data |
---|---|---|
1c0fe956 FS |
1 | # Copyright 2017 Fred Sundvik |
2 | # | |
3 | # This program is free software: you can redistribute it and/or modify | |
4 | # it under the terms of the GNU General Public License as published by | |
5 | # the Free Software Foundation, either version 2 of the License, or | |
6 | # (at your option) any later version. | |
7 | # | |
8 | # This program is distributed in the hope that it will be useful, | |
9 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
10 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
11 | # GNU General Public License for more details. | |
12 | # | |
13 | # You should have received a copy of the GNU General Public License | |
14 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
15 | ||
16 | SERIAL_DIR := $(QUANTUM_DIR)/serial_link | |
17 | SERIAL_PATH := $(QUANTUM_PATH)/serial_link | |
18 | SERIAL_SRC := $(wildcard $(SERIAL_PATH)/protocol/*.c) | |
19 | SERIAL_SRC += $(wildcard $(SERIAL_PATH)/system/*.c) | |
20 | SERIAL_DEFS += -DSERIAL_LINK_ENABLE | |
1aa0be4c | 21 | COMMON_VPATH += $(SERIAL_PATH) |
1c0fe956 FS |
22 | |
23 | ifeq ($(strip $(API_SYSEX_ENABLE)), yes) | |
24 | OPT_DEFS += -DAPI_SYSEX_ENABLE | |
25 | SRC += $(QUANTUM_DIR)/api/api_sysex.c | |
26 | OPT_DEFS += -DAPI_ENABLE | |
27 | SRC += $(QUANTUM_DIR)/api.c | |
28 | MIDI_ENABLE=yes | |
29 | endif | |
30 | ||
31 | MUSIC_ENABLE := 0 | |
32 | ||
33 | ifeq ($(strip $(AUDIO_ENABLE)), yes) | |
34 | OPT_DEFS += -DAUDIO_ENABLE | |
35 | MUSIC_ENABLE := 1 | |
36 | SRC += $(QUANTUM_DIR)/process_keycode/process_audio.c | |
33fdd1d2 | 37 | SRC += $(QUANTUM_DIR)/process_keycode/process_clicky.c |
5836d1a0 | 38 | ifeq ($(PLATFORM),AVR) |
39 | SRC += $(QUANTUM_DIR)/audio/audio.c | |
40 | else | |
41 | SRC += $(QUANTUM_DIR)/audio/audio_arm.c | |
42 | endif | |
1c0fe956 FS |
43 | SRC += $(QUANTUM_DIR)/audio/voices.c |
44 | SRC += $(QUANTUM_DIR)/audio/luts.c | |
45 | endif | |
46 | ||
47 | ifeq ($(strip $(MIDI_ENABLE)), yes) | |
48 | OPT_DEFS += -DMIDI_ENABLE | |
49 | MUSIC_ENABLE := 1 | |
50 | SRC += $(QUANTUM_DIR)/process_keycode/process_midi.c | |
51 | endif | |
52 | ||
53 | ifeq ($(MUSIC_ENABLE), 1) | |
54 | SRC += $(QUANTUM_DIR)/process_keycode/process_music.c | |
55 | endif | |
56 | ||
57 | ifeq ($(strip $(COMBO_ENABLE)), yes) | |
58 | OPT_DEFS += -DCOMBO_ENABLE | |
59 | SRC += $(QUANTUM_DIR)/process_keycode/process_combo.c | |
60 | endif | |
61 | ||
5987f679 JW |
62 | ifeq ($(strip $(STENO_ENABLE)), yes) |
63 | OPT_DEFS += -DSTENO_ENABLE | |
fdd0f915 | 64 | VIRTSER_ENABLE := yes |
65 | SRC += $(QUANTUM_DIR)/process_keycode/process_steno.c | |
5987f679 JW |
66 | endif |
67 | ||
1c0fe956 FS |
68 | ifeq ($(strip $(VIRTSER_ENABLE)), yes) |
69 | OPT_DEFS += -DVIRTSER_ENABLE | |
70 | endif | |
71 | ||
72 | ifeq ($(strip $(FAUXCLICKY_ENABLE)), yes) | |
73 | OPT_DEFS += -DFAUXCLICKY_ENABLE | |
74 | SRC += $(QUANTUM_DIR)/fauxclicky.c | |
75 | endif | |
76 | ||
ee132284 | 77 | ifeq ($(strip $(POINTING_DEVICE_ENABLE)), yes) |
fdd0f915 | 78 | OPT_DEFS += -DPOINTING_DEVICE_ENABLE |
79 | OPT_DEFS += -DMOUSE_ENABLE | |
80 | SRC += $(QUANTUM_DIR)/pointing_device.c | |
ee132284 S |
81 | endif |
82 | ||
1c0fe956 FS |
83 | ifeq ($(strip $(UCIS_ENABLE)), yes) |
84 | OPT_DEFS += -DUCIS_ENABLE | |
85 | UNICODE_COMMON = yes | |
86 | SRC += $(QUANTUM_DIR)/process_keycode/process_ucis.c | |
87 | endif | |
88 | ||
89 | ifeq ($(strip $(UNICODEMAP_ENABLE)), yes) | |
90 | OPT_DEFS += -DUNICODEMAP_ENABLE | |
91 | UNICODE_COMMON = yes | |
92 | SRC += $(QUANTUM_DIR)/process_keycode/process_unicodemap.c | |
93 | endif | |
94 | ||
95 | ifeq ($(strip $(UNICODE_ENABLE)), yes) | |
96 | OPT_DEFS += -DUNICODE_ENABLE | |
97 | UNICODE_COMMON = yes | |
98 | SRC += $(QUANTUM_DIR)/process_keycode/process_unicode.c | |
99 | endif | |
100 | ||
101 | ifeq ($(strip $(UNICODE_COMMON)), yes) | |
102 | SRC += $(QUANTUM_DIR)/process_keycode/process_unicode_common.c | |
103 | endif | |
104 | ||
105 | ifeq ($(strip $(RGBLIGHT_ENABLE)), yes) | |
7e67bd79 | 106 | POST_CONFIG_H += $(QUANTUM_DIR)/rgblight_post_config.h |
1c0fe956 | 107 | OPT_DEFS += -DRGBLIGHT_ENABLE |
22ba36a4 | 108 | SRC += $(QUANTUM_DIR)/color.c |
024f0455 | 109 | SRC += $(QUANTUM_DIR)/rgblight.c |
1c0fe956 FS |
110 | CIE1931_CURVE = yes |
111 | LED_BREATHING_TABLE = yes | |
d5486265 LR |
112 | ifeq ($(strip $(RGBLIGHT_CUSTOM_DRIVER)), yes) |
113 | OPT_DEFS += -DRGBLIGHT_CUSTOM_DRIVER | |
114 | else | |
fdd0f915 | 115 | SRC += ws2812.c |
d5486265 | 116 | endif |
1c0fe956 FS |
117 | endif |
118 | ||
5fcd744d | 119 | VALID_MATRIX_TYPES := yes IS31FL3731 IS31FL3733 IS31FL3737 WS2812 custom |
fd698c43 | 120 | |
121 | LED_MATRIX_ENABLE ?= no | |
122 | ifneq ($(strip $(LED_MATRIX_ENABLE)), no) | |
cc738e32 | 123 | ifeq ($(filter $(LED_MATRIX_ENABLE),$(VALID_MATRIX_TYPES)),) |
124 | $(error LED_MATRIX_ENABLE="$(LED_MATRIX_ENABLE)" is not a valid matrix type) | |
125 | else | |
126 | OPT_DEFS += -DLED_MATRIX_ENABLE -DBACKLIGHT_ENABLE -DBACKLIGHT_CUSTOM_DRIVER | |
127 | SRC += $(QUANTUM_DIR)/led_matrix.c | |
128 | SRC += $(QUANTUM_DIR)/led_matrix_drivers.c | |
129 | endif | |
fd698c43 | 130 | endif |
131 | ||
132 | ifeq ($(strip $(LED_MATRIX_ENABLE)), IS31FL3731) | |
133 | OPT_DEFS += -DIS31FL3731 | |
134 | COMMON_VPATH += $(DRIVER_PATH)/issi | |
135 | SRC += is31fl3731-simple.c | |
6cccc22b | 136 | QUANTUM_LIB_SRC += i2c_master.c |
fd698c43 | 137 | endif |
138 | ||
139 | RGB_MATRIX_ENABLE ?= no | |
fa4052c2 | 140 | |
f70f45ee JLW |
141 | ifneq ($(strip $(RGB_MATRIX_ENABLE)), no) |
142 | ifeq ($(filter $(RGB_MATRIX_ENABLE),$(VALID_MATRIX_TYPES)),) | |
143 | $(error RGB_MATRIX_ENABLE="$(RGB_MATRIX_ENABLE)" is not a valid matrix type) | |
144 | endif | |
14b7602a | 145 | OPT_DEFS += -DRGB_MATRIX_ENABLE |
14b7602a JH |
146 | SRC += $(QUANTUM_DIR)/color.c |
147 | SRC += $(QUANTUM_DIR)/rgb_matrix.c | |
f70f45ee | 148 | SRC += $(QUANTUM_DIR)/rgb_matrix_drivers.c |
14b7602a JH |
149 | CIE1931_CURVE = yes |
150 | endif | |
151 | ||
f70f45ee JLW |
152 | ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes) |
153 | RGB_MATRIX_ENABLE = IS31FL3731 | |
154 | endif | |
155 | ||
fdd0f915 | 156 | ifeq ($(strip $(RGB_MATRIX_ENABLE)), IS31FL3731) |
fa4052c2 | 157 | OPT_DEFS += -DIS31FL3731 -DSTM32_I2C -DHAL_USE_I2C=TRUE |
fdd0f915 | 158 | COMMON_VPATH += $(DRIVER_PATH)/issi |
159 | SRC += is31fl3731.c | |
6cccc22b | 160 | QUANTUM_LIB_SRC += i2c_master.c |
fdd0f915 | 161 | endif |
162 | ||
163 | ifeq ($(strip $(RGB_MATRIX_ENABLE)), IS31FL3733) | |
fa4052c2 | 164 | OPT_DEFS += -DIS31FL3733 -DSTM32_I2C -DHAL_USE_I2C=TRUE |
fdd0f915 | 165 | COMMON_VPATH += $(DRIVER_PATH)/issi |
166 | SRC += is31fl3733.c | |
6cccc22b | 167 | QUANTUM_LIB_SRC += i2c_master.c |
fdd0f915 | 168 | endif |
169 | ||
fa4052c2 JH |
170 | ifeq ($(strip $(RGB_MATRIX_ENABLE)), IS31FL3737) |
171 | OPT_DEFS += -DIS31FL3737 -DSTM32_I2C -DHAL_USE_I2C=TRUE | |
172 | COMMON_VPATH += $(DRIVER_PATH)/issi | |
173 | SRC += is31fl3737.c | |
6cccc22b | 174 | QUANTUM_LIB_SRC += i2c_master.c |
fa4052c2 JH |
175 | endif |
176 | ||
5fcd744d X |
177 | ifeq ($(strip $(RGB_MATRIX_ENABLE)), WS2812) |
178 | OPT_DEFS += -DWS2812 | |
179 | SRC += ws2812.c | |
180 | endif | |
181 | ||
1d784f0f DP |
182 | ifeq ($(strip $(RGB_MATRIX_CUSTOM_KB)), yes) |
183 | OPT_DEFS += -DRGB_MATRIX_CUSTOM_KB | |
184 | endif | |
185 | ||
186 | ifeq ($(strip $(RGB_MATRIX_CUSTOM_USER)), yes) | |
187 | OPT_DEFS += -DRGB_MATRIX_CUSTOM_USER | |
188 | endif | |
189 | ||
1c0fe956 FS |
190 | ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) |
191 | OPT_DEFS += -DTAP_DANCE_ENABLE | |
192 | SRC += $(QUANTUM_DIR)/process_keycode/process_tap_dance.c | |
193 | endif | |
194 | ||
8e1be7c7 FS |
195 | ifeq ($(strip $(KEY_LOCK_ENABLE)), yes) |
196 | OPT_DEFS += -DKEY_LOCK_ENABLE | |
197 | SRC += $(QUANTUM_DIR)/process_keycode/process_key_lock.c | |
198 | endif | |
199 | ||
1c0fe956 FS |
200 | ifeq ($(strip $(PRINTING_ENABLE)), yes) |
201 | OPT_DEFS += -DPRINTING_ENABLE | |
202 | SRC += $(QUANTUM_DIR)/process_keycode/process_printer.c | |
203 | SRC += $(TMK_DIR)/protocol/serial_uart.c | |
204 | endif | |
205 | ||
abba393f JC |
206 | ifeq ($(strip $(AUTO_SHIFT_ENABLE)), yes) |
207 | OPT_DEFS += -DAUTO_SHIFT_ENABLE | |
208 | SRC += $(QUANTUM_DIR)/process_keycode/process_auto_shift.c | |
00b4dce6 JS |
209 | ifeq ($(strip $(AUTO_SHIFT_MODIFIERS)), yes) |
210 | OPT_DEFS += -DAUTO_SHIFT_MODIFIERS | |
211 | endif | |
abba393f JC |
212 | endif |
213 | ||
1c0fe956 FS |
214 | ifeq ($(strip $(SERIAL_LINK_ENABLE)), yes) |
215 | SRC += $(patsubst $(QUANTUM_PATH)/%,%,$(SERIAL_SRC)) | |
216 | OPT_DEFS += $(SERIAL_DEFS) | |
217 | VAPTH += $(SERIAL_PATH) | |
218 | endif | |
219 | ||
220 | ifneq ($(strip $(VARIABLE_TRACE)),) | |
221 | SRC += $(QUANTUM_DIR)/variable_trace.c | |
222 | OPT_DEFS += -DNUM_TRACED_VARIABLES=$(strip $(VARIABLE_TRACE)) | |
223 | ifneq ($(strip $(MAX_VARIABLE_TRACE_SIZE)),) | |
224 | OPT_DEFS += -DMAX_VARIABLE_TRACE_SIZE=$(strip $(MAX_VARIABLE_TRACE_SIZE)) | |
225 | endif | |
226 | endif | |
227 | ||
228 | ifeq ($(strip $(LCD_ENABLE)), yes) | |
229 | CIE1931_CURVE = yes | |
230 | endif | |
231 | ||
38aefaf7 JC |
232 | # backward compat |
233 | ifeq ($(strip $(BACKLIGHT_CUSTOM_DRIVER)), yes) | |
234 | BACKLIGHT_ENABLE = custom | |
235 | endif | |
236 | ||
237 | VALID_BACKLIGHT_TYPES := yes custom | |
238 | ||
239 | BACKLIGHT_ENABLE ?= no | |
240 | ifneq ($(strip $(BACKLIGHT_ENABLE)), no) | |
241 | ifeq ($(filter $(BACKLIGHT_ENABLE),$(VALID_BACKLIGHT_TYPES)),) | |
242 | $(error BACKLIGHT_ENABLE="$(BACKLIGHT_ENABLE)" is not a valid backlight type) | |
243 | endif | |
244 | ||
1c0fe956 FS |
245 | ifeq ($(strip $(VISUALIZER_ENABLE)), yes) |
246 | CIE1931_CURVE = yes | |
365b8635 | 247 | endif |
38aefaf7 JC |
248 | |
249 | ifeq ($(strip $(BACKLIGHT_ENABLE)), custom) | |
6b74dd6d | 250 | OPT_DEFS += -DBACKLIGHT_CUSTOM_DRIVER |
251 | endif | |
38aefaf7 JC |
252 | |
253 | ifeq ($(PLATFORM),AVR) | |
254 | SRC += $(QUANTUM_DIR)/backlight/backlight_avr.c | |
255 | else | |
256 | SRC += $(QUANTUM_DIR)/backlight/backlight_arm.c | |
257 | endif | |
1c0fe956 FS |
258 | endif |
259 | ||
260 | ifeq ($(strip $(CIE1931_CURVE)), yes) | |
261 | OPT_DEFS += -DUSE_CIE1931_CURVE | |
262 | LED_TABLES = yes | |
263 | endif | |
264 | ||
265 | ifeq ($(strip $(LED_BREATHING_TABLE)), yes) | |
266 | OPT_DEFS += -DUSE_LED_BREATHING_TABLE | |
267 | LED_TABLES = yes | |
268 | endif | |
269 | ||
270 | ifeq ($(strip $(LED_TABLES)), yes) | |
271 | SRC += $(QUANTUM_DIR)/led_tables.c | |
272 | endif | |
273 | ||
7ad924ba JH |
274 | ifeq ($(strip $(TERMINAL_ENABLE)), yes) |
275 | SRC += $(QUANTUM_DIR)/process_keycode/process_terminal.c | |
276 | OPT_DEFS += -DTERMINAL_ENABLE | |
40313cfa | 277 | OPT_DEFS += -DUSER_PRINT |
7ad924ba JH |
278 | endif |
279 | ||
800ec55d JH |
280 | ifeq ($(strip $(USB_HID_ENABLE)), yes) |
281 | include $(TMK_DIR)/protocol/usb_hid.mk | |
282 | endif | |
283 | ||
85688e5b JH |
284 | ifeq ($(strip $(ENCODER_ENABLE)), yes) |
285 | SRC += $(QUANTUM_DIR)/encoder.c | |
286 | OPT_DEFS += -DENCODER_ENABLE | |
287 | endif | |
288 | ||
265d8abe DJ |
289 | HAPTIC_ENABLE ?= no |
290 | ifneq ($(strip $(HAPTIC_ENABLE)),no) | |
291 | COMMON_VPATH += $(DRIVER_PATH)/haptic | |
292 | SRC += haptic.c | |
293 | OPT_DEFS += -DHAPTIC_ENABLE | |
294 | endif | |
295 | ||
296 | ifneq ($(filter DRV2605L, $(HAPTIC_ENABLE)), ) | |
4099536c | 297 | SRC += DRV2605L.c |
6cccc22b | 298 | QUANTUM_LIB_SRC += i2c_master.c |
4099536c | 299 | OPT_DEFS += -DDRV2605L |
300 | endif | |
301 | ||
265d8abe | 302 | ifneq ($(filter SOLENOID, $(HAPTIC_ENABLE)), ) |
2cee371b | 303 | SRC += solenoid.c |
2cee371b | 304 | OPT_DEFS += -DSOLENOID_ENABLE |
305 | endif | |
306 | ||
bbea9dad MA |
307 | ifeq ($(strip $(HD44780_ENABLE)), yes) |
308 | SRC += drivers/avr/hd44780.c | |
fdd0f915 | 309 | OPT_DEFS += -DHD44780_ENABLE |
bbea9dad MA |
310 | endif |
311 | ||
c1c5922a CL |
312 | ifeq ($(strip $(VELOCIKEY_ENABLE)), yes) |
313 | OPT_DEFS += -DVELOCIKEY_ENABLE | |
314 | SRC += $(QUANTUM_DIR)/velocikey.c | |
315 | endif | |
316 | ||
48a992f1 W |
317 | ifeq ($(strip $(DYNAMIC_KEYMAP_ENABLE)), yes) |
318 | OPT_DEFS += -DDYNAMIC_KEYMAP_ENABLE | |
319 | SRC += $(QUANTUM_DIR)/dynamic_keymap.c | |
320 | endif | |
321 | ||
74344947 JW |
322 | ifeq ($(strip $(LEADER_ENABLE)), yes) |
323 | SRC += $(QUANTUM_DIR)/process_keycode/process_leader.c | |
324 | OPT_DEFS += -DLEADER_ENABLE | |
325 | endif | |
326 | ||
4099536c | 327 | include $(DRIVER_PATH)/qwiic/qwiic.mk |
328 | ||
1c0fe956 FS |
329 | QUANTUM_SRC:= \ |
330 | $(QUANTUM_DIR)/quantum.c \ | |
331 | $(QUANTUM_DIR)/keymap_common.c \ | |
74344947 | 332 | $(QUANTUM_DIR)/keycode_config.c |
1c0fe956 | 333 | |
28929ad0 JC |
334 | # Include the standard or split matrix code if needed |
335 | ifneq ($(strip $(CUSTOM_MATRIX)), yes) | |
336 | ifeq ($(strip $(SPLIT_KEYBOARD)), yes) | |
337 | QUANTUM_SRC += $(QUANTUM_DIR)/split_common/matrix.c | |
338 | else | |
339 | QUANTUM_SRC += $(QUANTUM_DIR)/matrix.c | |
929065b1 | 340 | endif |
28929ad0 JC |
341 | endif |
342 | ||
d0b691df | 343 | DEBOUNCE_DIR:= $(QUANTUM_DIR)/debounce |
c7c4937e | 344 | # Debounce Modules. Set DEBOUNCE_TYPE=custom if including one manually. |
7d8c6299 | 345 | DEBOUNCE_TYPE?= sym_g |
c7c4937e JC |
346 | ifneq ($(strip $(DEBOUNCE_TYPE)), custom) |
347 | QUANTUM_SRC += $(DEBOUNCE_DIR)/$(strip $(DEBOUNCE_TYPE)).c | |
28929ad0 JC |
348 | endif |
349 | ||
350 | ifeq ($(strip $(SPLIT_KEYBOARD)), yes) | |
7e67bd79 | 351 | POST_CONFIG_H += $(QUANTUM_DIR)/split_common/post_config.h |
0fab3bbd | 352 | OPT_DEFS += -DSPLIT_KEYBOARD |
28929ad0 JC |
353 | |
354 | # Include files used by all split keyboards | |
37932c29 | 355 | QUANTUM_SRC += $(QUANTUM_DIR)/split_common/split_util.c |
28929ad0 JC |
356 | |
357 | # Determine which (if any) transport files are required | |
358 | ifneq ($(strip $(SPLIT_TRANSPORT)), custom) | |
359 | QUANTUM_SRC += $(QUANTUM_DIR)/split_common/transport.c | |
360 | # Functions added via QUANTUM_LIB_SRC are only included in the final binary if they're called. | |
37932c29 JC |
361 | # Unused functions are pruned away, which is why we can add multiple drivers here without bloat. |
362 | QUANTUM_LIB_SRC += $(QUANTUM_DIR)/split_common/serial.c \ | |
363 | i2c_master.c \ | |
364 | i2c_slave.c | |
28929ad0 | 365 | endif |
7f0def77 | 366 | COMMON_VPATH += $(QUANTUM_PATH)/split_common |
8e1be7c7 | 367 | endif |
0a645225 RC |
368 | |
369 | ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes) | |
370 | OPT_DEFS += -DOLED_DRIVER_ENABLE | |
371 | COMMON_VPATH += $(DRIVER_PATH)/oled | |
372 | QUANTUM_LIB_SRC += i2c_master.c | |
373 | SRC += oled_driver.c | |
374 | endif | |
c745d9b8 X |
375 | |
376 | SPACE_CADET_ENABLE ?= yes | |
377 | ifeq ($(strip $(SPACE_CADET_ENABLE)), yes) | |
378 | SRC += $(QUANTUM_DIR)/process_keycode/process_space_cadet.c | |
379 | OPT_DEFS += -DSPACE_CADET_ENABLE | |
380 | endif | |
dab4967f DJ |
381 | |
382 | ||
383 | ifeq ($(strip $(DIP_SWITCH_ENABLE)), yes) | |
384 | SRC += $(QUANTUM_DIR)/dip_switch.c | |
385 | OPT_DEFS += -DDIP_SWITCH_ENABLE | |
386 | endif |