quantum/debounce: rename debouncing algorithms according to Issue 8763
[jackhill/qmk/firmware.git] / common_features.mk
CommitLineData
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
1c0fe956 16SERIAL_PATH := $(QUANTUM_PATH)/serial_link
5f9f62fb
JC
17
18QUANTUM_SRC += \
19 $(QUANTUM_DIR)/quantum.c \
20 $(QUANTUM_DIR)/keymap_common.c \
21 $(QUANTUM_DIR)/keycode_config.c
1c0fe956
FS
22
23ifeq ($(strip $(API_SYSEX_ENABLE)), yes)
24 OPT_DEFS += -DAPI_SYSEX_ENABLE
1c0fe956 25 OPT_DEFS += -DAPI_ENABLE
1c0fe956 26 MIDI_ENABLE=yes
5f9f62fb
JC
27 SRC += $(QUANTUM_DIR)/api/api_sysex.c
28 SRC += $(QUANTUM_DIR)/api.c
1c0fe956
FS
29endif
30
1c0fe956
FS
31ifeq ($(strip $(AUDIO_ENABLE)), yes)
32 OPT_DEFS += -DAUDIO_ENABLE
5f9f62fb 33 MUSIC_ENABLE = yes
1c0fe956 34 SRC += $(QUANTUM_DIR)/process_keycode/process_audio.c
33fdd1d2 35 SRC += $(QUANTUM_DIR)/process_keycode/process_clicky.c
d96380e6 36 SRC += $(QUANTUM_DIR)/audio/audio_$(PLATFORM_KEY).c
1c0fe956
FS
37 SRC += $(QUANTUM_DIR)/audio/voices.c
38 SRC += $(QUANTUM_DIR)/audio/luts.c
39endif
40
41ifeq ($(strip $(MIDI_ENABLE)), yes)
42 OPT_DEFS += -DMIDI_ENABLE
5f9f62fb 43 MUSIC_ENABLE = yes
1c0fe956
FS
44 SRC += $(QUANTUM_DIR)/process_keycode/process_midi.c
45endif
46
5f9f62fb
JC
47MUSIC_ENABLE ?= no
48ifeq ($(MUSIC_ENABLE), yes)
1c0fe956
FS
49 SRC += $(QUANTUM_DIR)/process_keycode/process_music.c
50endif
51
5987f679
JW
52ifeq ($(strip $(STENO_ENABLE)), yes)
53 OPT_DEFS += -DSTENO_ENABLE
d11238f7 54 VIRTSER_ENABLE ?= yes
fdd0f915 55 SRC += $(QUANTUM_DIR)/process_keycode/process_steno.c
5987f679
JW
56endif
57
1c0fe956
FS
58ifeq ($(strip $(VIRTSER_ENABLE)), yes)
59 OPT_DEFS += -DVIRTSER_ENABLE
60endif
61
62ifeq ($(strip $(FAUXCLICKY_ENABLE)), yes)
63 OPT_DEFS += -DFAUXCLICKY_ENABLE
64 SRC += $(QUANTUM_DIR)/fauxclicky.c
65endif
66
ee132284 67ifeq ($(strip $(POINTING_DEVICE_ENABLE)), yes)
fdd0f915 68 OPT_DEFS += -DPOINTING_DEVICE_ENABLE
69 OPT_DEFS += -DMOUSE_ENABLE
70 SRC += $(QUANTUM_DIR)/pointing_device.c
ee132284
S
71endif
72
d13ada11
NB
73VALID_EEPROM_DRIVER_TYPES := vendor custom transient i2c
74EEPROM_DRIVER ?= vendor
75ifeq ($(filter $(EEPROM_DRIVER),$(VALID_EEPROM_DRIVER_TYPES)),)
76 $(error EEPROM_DRIVER="$(EEPROM_DRIVER)" is not a valid EEPROM driver)
77else
78 OPT_DEFS += -DEEPROM_ENABLE
79 ifeq ($(strip $(EEPROM_DRIVER)), custom)
80 OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_CUSTOM
81 COMMON_VPATH += $(DRIVER_PATH)/eeprom
82 SRC += eeprom_driver.c
83 else ifeq ($(strip $(EEPROM_DRIVER)), i2c)
84 OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_I2C
85 COMMON_VPATH += $(DRIVER_PATH)/eeprom
86 QUANTUM_LIB_SRC += i2c_master.c
87 SRC += eeprom_driver.c eeprom_i2c.c
88 else ifeq ($(strip $(EEPROM_DRIVER)), transient)
89 OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_TRANSIENT
90 COMMON_VPATH += $(DRIVER_PATH)/eeprom
91 SRC += eeprom_driver.c eeprom_transient.c
92 else ifeq ($(strip $(EEPROM_DRIVER)), vendor)
93 OPT_DEFS += -DEEPROM_VENDOR
94 ifeq ($(PLATFORM),AVR)
95 # Automatically provided by avr-libc, nothing required
96 else ifeq ($(PLATFORM),CHIBIOS)
97 ifeq ($(MCU_SERIES), STM32F3xx)
98 SRC += $(PLATFORM_COMMON_DIR)/eeprom_stm32.c
99 SRC += $(PLATFORM_COMMON_DIR)/flash_stm32.c
100 OPT_DEFS += -DEEPROM_EMU_STM32F303xC
101 OPT_DEFS += -DSTM32_EEPROM_ENABLE
102 else ifeq ($(MCU_SERIES), STM32F1xx)
103 SRC += $(PLATFORM_COMMON_DIR)/eeprom_stm32.c
104 SRC += $(PLATFORM_COMMON_DIR)/flash_stm32.c
105 OPT_DEFS += -DEEPROM_EMU_STM32F103xB
106 OPT_DEFS += -DSTM32_EEPROM_ENABLE
107 else ifeq ($(MCU_SERIES)_$(MCU_LDSCRIPT), STM32F0xx_STM32F072xB)
108 SRC += $(PLATFORM_COMMON_DIR)/eeprom_stm32.c
109 SRC += $(PLATFORM_COMMON_DIR)/flash_stm32.c
110 OPT_DEFS += -DEEPROM_EMU_STM32F072xB
111 OPT_DEFS += -DSTM32_EEPROM_ENABLE
f2f2afe1
NB
112 else ifneq ($(filter $(MCU_SERIES),STM32L0xx STM32L1xx),)
113 OPT_DEFS += -DEEPROM_DRIVER
114 COMMON_VPATH += $(DRIVER_PATH)/eeprom
115 SRC += eeprom_driver.c eeprom_stm32_L0_L1.c
d13ada11
NB
116 else
117 # This will effectively work the same as "transient" if not supported by the chip
118 SRC += $(PLATFORM_COMMON_DIR)/eeprom_teensy.c
119 endif
120 else ifeq ($(PLATFORM),ARM_ATSAM)
121 SRC += $(PLATFORM_COMMON_DIR)/eeprom.c
122 else ifeq ($(PLATFORM),TEST)
123 SRC += $(PLATFORM_COMMON_DIR)/eeprom.c
124 endif
125 endif
126endif
127
1c0fe956 128ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
7e67bd79 129 POST_CONFIG_H += $(QUANTUM_DIR)/rgblight_post_config.h
1c0fe956 130 OPT_DEFS += -DRGBLIGHT_ENABLE
22ba36a4 131 SRC += $(QUANTUM_DIR)/color.c
024f0455 132 SRC += $(QUANTUM_DIR)/rgblight.c
320822d7 133 CIE1931_CURVE := yes
320822d7 134 RGB_KEYCODES_ENABLE := yes
d5486265
LR
135 ifeq ($(strip $(RGBLIGHT_CUSTOM_DRIVER)), yes)
136 OPT_DEFS += -DRGBLIGHT_CUSTOM_DRIVER
137 else
320822d7 138 WS2812_DRIVER_REQUIRED := yes
d5486265 139 endif
1c0fe956
FS
140endif
141
5fcd744d 142VALID_MATRIX_TYPES := yes IS31FL3731 IS31FL3733 IS31FL3737 WS2812 custom
fd698c43 143
144LED_MATRIX_ENABLE ?= no
145ifneq ($(strip $(LED_MATRIX_ENABLE)), no)
cc738e32 146 ifeq ($(filter $(LED_MATRIX_ENABLE),$(VALID_MATRIX_TYPES)),)
147 $(error LED_MATRIX_ENABLE="$(LED_MATRIX_ENABLE)" is not a valid matrix type)
148 else
9a0245b7
JC
149 BACKLIGHT_ENABLE = yes
150 BACKLIGHT_DRIVER = custom
151 OPT_DEFS += -DLED_MATRIX_ENABLE
cc738e32 152 SRC += $(QUANTUM_DIR)/led_matrix.c
153 SRC += $(QUANTUM_DIR)/led_matrix_drivers.c
154 endif
fd698c43 155endif
156
157ifeq ($(strip $(LED_MATRIX_ENABLE)), IS31FL3731)
158 OPT_DEFS += -DIS31FL3731
159 COMMON_VPATH += $(DRIVER_PATH)/issi
160 SRC += is31fl3731-simple.c
6cccc22b 161 QUANTUM_LIB_SRC += i2c_master.c
fd698c43 162endif
163
164RGB_MATRIX_ENABLE ?= no
fa4052c2 165
f70f45ee
JLW
166ifneq ($(strip $(RGB_MATRIX_ENABLE)), no)
167ifeq ($(filter $(RGB_MATRIX_ENABLE),$(VALID_MATRIX_TYPES)),)
168 $(error RGB_MATRIX_ENABLE="$(RGB_MATRIX_ENABLE)" is not a valid matrix type)
169endif
14b7602a 170 OPT_DEFS += -DRGB_MATRIX_ENABLE
14b7602a
JH
171 SRC += $(QUANTUM_DIR)/color.c
172 SRC += $(QUANTUM_DIR)/rgb_matrix.c
f70f45ee 173 SRC += $(QUANTUM_DIR)/rgb_matrix_drivers.c
320822d7
W
174 CIE1931_CURVE := yes
175 RGB_KEYCODES_ENABLE := yes
14b7602a
JH
176endif
177
f70f45ee 178ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
320822d7 179 RGB_MATRIX_ENABLE := IS31FL3731
f70f45ee
JLW
180endif
181
fdd0f915 182ifeq ($(strip $(RGB_MATRIX_ENABLE)), IS31FL3731)
fa4052c2 183 OPT_DEFS += -DIS31FL3731 -DSTM32_I2C -DHAL_USE_I2C=TRUE
fdd0f915 184 COMMON_VPATH += $(DRIVER_PATH)/issi
185 SRC += is31fl3731.c
6cccc22b 186 QUANTUM_LIB_SRC += i2c_master.c
fdd0f915 187endif
188
189ifeq ($(strip $(RGB_MATRIX_ENABLE)), IS31FL3733)
fa4052c2 190 OPT_DEFS += -DIS31FL3733 -DSTM32_I2C -DHAL_USE_I2C=TRUE
fdd0f915 191 COMMON_VPATH += $(DRIVER_PATH)/issi
192 SRC += is31fl3733.c
6cccc22b 193 QUANTUM_LIB_SRC += i2c_master.c
fdd0f915 194endif
195
fa4052c2
JH
196ifeq ($(strip $(RGB_MATRIX_ENABLE)), IS31FL3737)
197 OPT_DEFS += -DIS31FL3737 -DSTM32_I2C -DHAL_USE_I2C=TRUE
198 COMMON_VPATH += $(DRIVER_PATH)/issi
199 SRC += is31fl3737.c
6cccc22b 200 QUANTUM_LIB_SRC += i2c_master.c
fa4052c2
JH
201endif
202
5fcd744d
X
203ifeq ($(strip $(RGB_MATRIX_ENABLE)), WS2812)
204 OPT_DEFS += -DWS2812
320822d7 205 WS2812_DRIVER_REQUIRED := yes
5fcd744d
X
206endif
207
1d784f0f
DP
208ifeq ($(strip $(RGB_MATRIX_CUSTOM_KB)), yes)
209 OPT_DEFS += -DRGB_MATRIX_CUSTOM_KB
210endif
211
212ifeq ($(strip $(RGB_MATRIX_CUSTOM_USER)), yes)
213 OPT_DEFS += -DRGB_MATRIX_CUSTOM_USER
214endif
215
ae40fc49
JC
216ifeq ($(strip $(RGB_KEYCODES_ENABLE)), yes)
217 SRC += $(QUANTUM_DIR)/process_keycode/process_rgb.c
218endif
219
1c0fe956
FS
220ifeq ($(strip $(PRINTING_ENABLE)), yes)
221 OPT_DEFS += -DPRINTING_ENABLE
222 SRC += $(QUANTUM_DIR)/process_keycode/process_printer.c
223 SRC += $(TMK_DIR)/protocol/serial_uart.c
224endif
225
226ifeq ($(strip $(SERIAL_LINK_ENABLE)), yes)
5f9f62fb
JC
227 SERIAL_SRC := $(wildcard $(SERIAL_PATH)/protocol/*.c)
228 SERIAL_SRC += $(wildcard $(SERIAL_PATH)/system/*.c)
229 SERIAL_DEFS += -DSERIAL_LINK_ENABLE
230 COMMON_VPATH += $(SERIAL_PATH)
231
1c0fe956
FS
232 SRC += $(patsubst $(QUANTUM_PATH)/%,%,$(SERIAL_SRC))
233 OPT_DEFS += $(SERIAL_DEFS)
234 VAPTH += $(SERIAL_PATH)
235endif
236
237ifneq ($(strip $(VARIABLE_TRACE)),)
238 SRC += $(QUANTUM_DIR)/variable_trace.c
239 OPT_DEFS += -DNUM_TRACED_VARIABLES=$(strip $(VARIABLE_TRACE))
240ifneq ($(strip $(MAX_VARIABLE_TRACE_SIZE)),)
241 OPT_DEFS += -DMAX_VARIABLE_TRACE_SIZE=$(strip $(MAX_VARIABLE_TRACE_SIZE))
242endif
243endif
244
245ifeq ($(strip $(LCD_ENABLE)), yes)
320822d7 246 CIE1931_CURVE := yes
1c0fe956
FS
247endif
248
38aefaf7
JC
249# backward compat
250ifeq ($(strip $(BACKLIGHT_CUSTOM_DRIVER)), yes)
320822d7 251 BACKLIGHT_DRIVER := custom
38aefaf7
JC
252endif
253
d4c23d88 254VALID_BACKLIGHT_TYPES := pwm software custom
38aefaf7
JC
255
256BACKLIGHT_ENABLE ?= no
d4c23d88 257BACKLIGHT_DRIVER ?= pwm
258ifeq ($(strip $(BACKLIGHT_ENABLE)), yes)
259 ifeq ($(filter $(BACKLIGHT_DRIVER),$(VALID_BACKLIGHT_TYPES)),)
260 $(error BACKLIGHT_DRIVER="$(BACKLIGHT_DRIVER)" is not a valid backlight type)
38aefaf7
JC
261 endif
262
abfd6ed9
JC
263 COMMON_VPATH += $(QUANTUM_DIR)/backlight
264 SRC += $(QUANTUM_DIR)/backlight/backlight.c
3a303bd2 265 SRC += $(QUANTUM_DIR)/process_keycode/process_backlight.c
abfd6ed9
JC
266 OPT_DEFS += -DBACKLIGHT_ENABLE
267
b89e35bd
JC
268 ifeq ($(strip $(BACKLIGHT_DRIVER)), custom)
269 OPT_DEFS += -DBACKLIGHT_CUSTOM_DRIVER
38aefaf7 270 else
3a303bd2
JC
271 SRC += $(QUANTUM_DIR)/backlight/backlight_driver_common.c
272 ifeq ($(strip $(BACKLIGHT_DRIVER)), pwm)
d96380e6 273 SRC += $(QUANTUM_DIR)/backlight/backlight_$(PLATFORM_KEY).c
4531cc87 274 else
3a303bd2 275 SRC += $(QUANTUM_DIR)/backlight/backlight_$(strip $(BACKLIGHT_DRIVER)).c
4531cc87 276 endif
38aefaf7 277 endif
1c0fe956
FS
278endif
279
64b7cfe7
JC
280VALID_WS2812_DRIVER_TYPES := bitbang pwm spi i2c
281
282WS2812_DRIVER ?= bitbang
283ifeq ($(strip $(WS2812_DRIVER_REQUIRED)), yes)
284 ifeq ($(filter $(WS2812_DRIVER),$(VALID_WS2812_DRIVER_TYPES)),)
285 $(error WS2812_DRIVER="$(WS2812_DRIVER)" is not a valid WS2812 driver)
286 endif
287
61cd1801
JC
288 OPT_DEFS += -DWS2812_DRIVER_$(strip $(shell echo $(WS2812_DRIVER) | tr '[:lower:]' '[:upper:]'))
289
64b7cfe7
JC
290 ifeq ($(strip $(WS2812_DRIVER)), bitbang)
291 SRC += ws2812.c
292 else
293 SRC += ws2812_$(strip $(WS2812_DRIVER)).c
294 endif
295
296 # add extra deps
297 ifeq ($(strip $(WS2812_DRIVER)), i2c)
298 QUANTUM_LIB_SRC += i2c_master.c
299 endif
300endif
301
9a0245b7
JC
302ifeq ($(strip $(VISUALIZER_ENABLE)), yes)
303 CIE1931_CURVE := yes
304endif
305
1c0fe956
FS
306ifeq ($(strip $(CIE1931_CURVE)), yes)
307 OPT_DEFS += -DUSE_CIE1931_CURVE
320822d7 308 LED_TABLES := yes
1c0fe956
FS
309endif
310
1c0fe956
FS
311ifeq ($(strip $(LED_TABLES)), yes)
312 SRC += $(QUANTUM_DIR)/led_tables.c
313endif
314
7ad924ba
JH
315ifeq ($(strip $(TERMINAL_ENABLE)), yes)
316 SRC += $(QUANTUM_DIR)/process_keycode/process_terminal.c
317 OPT_DEFS += -DTERMINAL_ENABLE
40313cfa 318 OPT_DEFS += -DUSER_PRINT
7ad924ba
JH
319endif
320
800ec55d
JH
321ifeq ($(strip $(USB_HID_ENABLE)), yes)
322 include $(TMK_DIR)/protocol/usb_hid.mk
323endif
324
bfb2f8e0 325ifeq ($(strip $(WPM_ENABLE)), yes)
326 SRC += $(QUANTUM_DIR)/wpm.c
327 OPT_DEFS += -DWPM_ENABLE
328endif
329
85688e5b
JH
330ifeq ($(strip $(ENCODER_ENABLE)), yes)
331 SRC += $(QUANTUM_DIR)/encoder.c
332 OPT_DEFS += -DENCODER_ENABLE
333endif
334
c1c5922a
CL
335ifeq ($(strip $(VELOCIKEY_ENABLE)), yes)
336 OPT_DEFS += -DVELOCIKEY_ENABLE
337 SRC += $(QUANTUM_DIR)/velocikey.c
338endif
339
320822d7
W
340ifeq ($(strip $(VIA_ENABLE)), yes)
341 DYNAMIC_KEYMAP_ENABLE := yes
342 RAW_ENABLE := yes
343 BOOTMAGIC_ENABLE := lite
344 SRC += $(QUANTUM_DIR)/via.c
345 OPT_DEFS += -DVIA_ENABLE
346endif
347
48a992f1
W
348ifeq ($(strip $(DYNAMIC_KEYMAP_ENABLE)), yes)
349 OPT_DEFS += -DDYNAMIC_KEYMAP_ENABLE
350 SRC += $(QUANTUM_DIR)/dynamic_keymap.c
351endif
352
393937b4 353ifeq ($(strip $(DIP_SWITCH_ENABLE)), yes)
5f9f62fb
JC
354 OPT_DEFS += -DDIP_SWITCH_ENABLE
355 SRC += $(QUANTUM_DIR)/dip_switch.c
393937b4
JC
356endif
357
dcb7ca3f
JC
358VALID_CUSTOM_MATRIX_TYPES:= yes lite no
359
360CUSTOM_MATRIX ?= no
361
28929ad0 362ifneq ($(strip $(CUSTOM_MATRIX)), yes)
dcb7ca3f
JC
363 ifeq ($(filter $(CUSTOM_MATRIX),$(VALID_CUSTOM_MATRIX_TYPES)),)
364 $(error CUSTOM_MATRIX="$(CUSTOM_MATRIX)" is not a valid custom matrix type)
365 endif
366
367 # Include common stuff for all non custom matrix users
368 QUANTUM_SRC += $(QUANTUM_DIR)/matrix_common.c
369
370 # if 'lite' then skip the actual matrix implementation
371 ifneq ($(strip $(CUSTOM_MATRIX)), lite)
372 # Include the standard or split matrix code if needed
373 ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
374 QUANTUM_SRC += $(QUANTUM_DIR)/split_common/matrix.c
375 else
376 QUANTUM_SRC += $(QUANTUM_DIR)/matrix.c
377 endif
929065b1 378 endif
28929ad0
JC
379endif
380
d32edf80
PA
381# Support for translating old names to new names:
382ifeq ($(strip $(DEBOUNCE_TYPE)),sym_g)
383 DEBOUNCE_TYPE:=sym_defer_g
384else ifeq ($(strip $(DEBOUNCE_TYPE)),eager_pk)
385 DEBOUNCE_TYPE:=sym_eager_pk
386else ifeq ($(strip $(DEBOUNCE_TYPE)),sym_pk)
387 DEBOUNCE_TYPE:=sym_defer_pk
388else ifeq ($(strip $(DEBOUNCE_TYPE)),eager_pr)
389 DEBOUNCE_TYPE:=sym_eager_pr
390endif
391
d0b691df 392DEBOUNCE_DIR:= $(QUANTUM_DIR)/debounce
c7c4937e 393# Debounce Modules. Set DEBOUNCE_TYPE=custom if including one manually.
d32edf80 394DEBOUNCE_TYPE?= sym_defer_g
c7c4937e
JC
395ifneq ($(strip $(DEBOUNCE_TYPE)), custom)
396 QUANTUM_SRC += $(DEBOUNCE_DIR)/$(strip $(DEBOUNCE_TYPE)).c
28929ad0
JC
397endif
398
399ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
7e67bd79 400 POST_CONFIG_H += $(QUANTUM_DIR)/split_common/post_config.h
0fab3bbd 401 OPT_DEFS += -DSPLIT_KEYBOARD
28929ad0
JC
402
403 # Include files used by all split keyboards
37932c29 404 QUANTUM_SRC += $(QUANTUM_DIR)/split_common/split_util.c
28929ad0
JC
405
406 # Determine which (if any) transport files are required
407 ifneq ($(strip $(SPLIT_TRANSPORT)), custom)
408 QUANTUM_SRC += $(QUANTUM_DIR)/split_common/transport.c
409 # Functions added via QUANTUM_LIB_SRC are only included in the final binary if they're called.
37932c29 410 # Unused functions are pruned away, which is why we can add multiple drivers here without bloat.
6efcfaa2 411 ifeq ($(PLATFORM),AVR)
412 QUANTUM_LIB_SRC += i2c_master.c \
413 i2c_slave.c
414 endif
e4a0f841
JC
415
416 SERIAL_DRIVER ?= bitbang
417 ifeq ($(strip $(SERIAL_DRIVER)), bitbang)
418 QUANTUM_LIB_SRC += serial.c
419 else
420 QUANTUM_LIB_SRC += serial_$(strip $(SERIAL_DRIVER)).c
421 endif
28929ad0 422 endif
7f0def77 423 COMMON_VPATH += $(QUANTUM_PATH)/split_common
8e1be7c7 424endif
0a645225 425
5f9f62fb
JC
426HAPTIC_ENABLE ?= no
427ifneq ($(strip $(HAPTIC_ENABLE)),no)
428 COMMON_VPATH += $(DRIVER_PATH)/haptic
429 SRC += haptic.c
430 OPT_DEFS += -DHAPTIC_ENABLE
431endif
432
433ifneq ($(filter DRV2605L, $(HAPTIC_ENABLE)), )
434 SRC += DRV2605L.c
435 QUANTUM_LIB_SRC += i2c_master.c
436 OPT_DEFS += -DDRV2605L
437endif
438
439ifneq ($(filter SOLENOID, $(HAPTIC_ENABLE)), )
440 SRC += solenoid.c
441 OPT_DEFS += -DSOLENOID_ENABLE
442endif
443
444ifeq ($(strip $(HD44780_ENABLE)), yes)
445 SRC += drivers/avr/hd44780.c
446 OPT_DEFS += -DHD44780_ENABLE
447endif
448
0a645225
RC
449ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes)
450 OPT_DEFS += -DOLED_DRIVER_ENABLE
451 COMMON_VPATH += $(DRIVER_PATH)/oled
452 QUANTUM_LIB_SRC += i2c_master.c
453 SRC += oled_driver.c
454endif
c745d9b8 455
5f9f62fb
JC
456include $(DRIVER_PATH)/qwiic/qwiic.mk
457
458ifeq ($(strip $(UCIS_ENABLE)), yes)
459 OPT_DEFS += -DUCIS_ENABLE
460 UNICODE_COMMON := yes
461 SRC += $(QUANTUM_DIR)/process_keycode/process_ucis.c
462endif
463
464ifeq ($(strip $(UNICODEMAP_ENABLE)), yes)
465 OPT_DEFS += -DUNICODEMAP_ENABLE
466 UNICODE_COMMON := yes
467 SRC += $(QUANTUM_DIR)/process_keycode/process_unicodemap.c
468endif
469
470ifeq ($(strip $(UNICODE_ENABLE)), yes)
471 OPT_DEFS += -DUNICODE_ENABLE
472 UNICODE_COMMON := yes
473 SRC += $(QUANTUM_DIR)/process_keycode/process_unicode.c
474endif
475
476ifeq ($(strip $(UNICODE_COMMON)), yes)
477 SRC += $(QUANTUM_DIR)/process_keycode/process_unicode_common.c
478endif
479
c745d9b8
X
480SPACE_CADET_ENABLE ?= yes
481ifeq ($(strip $(SPACE_CADET_ENABLE)), yes)
5f9f62fb
JC
482 SRC += $(QUANTUM_DIR)/process_keycode/process_space_cadet.c
483 OPT_DEFS += -DSPACE_CADET_ENABLE
c745d9b8 484endif
dab4967f 485
d598f01c
JC
486MAGIC_ENABLE ?= yes
487ifeq ($(strip $(MAGIC_ENABLE)), yes)
488 SRC += $(QUANTUM_DIR)/process_keycode/process_magic.c
489 OPT_DEFS += -DMAGIC_KEYCODE_ENABLE
dab4967f 490endif
542cb0a8 491
393937b4
JC
492GRAVE_ESC_ENABLE ?= yes
493ifeq ($(strip $(GRAVE_ESC_ENABLE)), yes)
494 SRC += $(QUANTUM_DIR)/process_keycode/process_grave_esc.c
495 OPT_DEFS += -DGRAVE_ESC_ENABLE
496endif
497
542cb0a8
DJ
498ifeq ($(strip $(DYNAMIC_MACRO_ENABLE)), yes)
499 SRC += $(QUANTUM_DIR)/process_keycode/process_dynamic_macro.c
500 OPT_DEFS += -DDYNAMIC_MACRO_ENABLE
501endif
5f9f62fb
JC
502
503ifeq ($(strip $(COMBO_ENABLE)), yes)
504 SRC += $(QUANTUM_DIR)/process_keycode/process_combo.c
505 OPT_DEFS += -DCOMBO_ENABLE
506endif
507
508ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
509 SRC += $(QUANTUM_DIR)/process_keycode/process_tap_dance.c
510 OPT_DEFS += -DTAP_DANCE_ENABLE
511endif
512
513ifeq ($(strip $(KEY_LOCK_ENABLE)), yes)
514 SRC += $(QUANTUM_DIR)/process_keycode/process_key_lock.c
515 OPT_DEFS += -DKEY_LOCK_ENABLE
516endif
517
518ifeq ($(strip $(LEADER_ENABLE)), yes)
519 SRC += $(QUANTUM_DIR)/process_keycode/process_leader.c
520 OPT_DEFS += -DLEADER_ENABLE
521endif
522
523ifeq ($(strip $(AUTO_SHIFT_ENABLE)), yes)
524 SRC += $(QUANTUM_DIR)/process_keycode/process_auto_shift.c
525 OPT_DEFS += -DAUTO_SHIFT_ENABLE
526 ifeq ($(strip $(AUTO_SHIFT_MODIFIERS)), yes)
527 OPT_DEFS += -DAUTO_SHIFT_MODIFIERS
528 endif
529endif