| 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 |
| 21 | COMMON_VPATH += $(SERIAL_PATH) |
| 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 |
| 37 | SRC += $(QUANTUM_DIR)/process_keycode/process_clicky.c |
| 38 | ifeq ($(PLATFORM),AVR) |
| 39 | SRC += $(QUANTUM_DIR)/audio/audio.c |
| 40 | else |
| 41 | SRC += $(QUANTUM_DIR)/audio/audio_arm.c |
| 42 | endif |
| 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 | |
| 62 | ifeq ($(strip $(STENO_ENABLE)), yes) |
| 63 | OPT_DEFS += -DSTENO_ENABLE |
| 64 | VIRTSER_ENABLE ?= yes |
| 65 | SRC += $(QUANTUM_DIR)/process_keycode/process_steno.c |
| 66 | endif |
| 67 | |
| 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 | |
| 77 | ifeq ($(strip $(POINTING_DEVICE_ENABLE)), yes) |
| 78 | OPT_DEFS += -DPOINTING_DEVICE_ENABLE |
| 79 | OPT_DEFS += -DMOUSE_ENABLE |
| 80 | SRC += $(QUANTUM_DIR)/pointing_device.c |
| 81 | endif |
| 82 | |
| 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 | VALID_EEPROM_DRIVER_TYPES := vendor custom transient i2c |
| 106 | EEPROM_DRIVER ?= vendor |
| 107 | ifeq ($(filter $(EEPROM_DRIVER),$(VALID_EEPROM_DRIVER_TYPES)),) |
| 108 | $(error EEPROM_DRIVER="$(EEPROM_DRIVER)" is not a valid EEPROM driver) |
| 109 | else |
| 110 | OPT_DEFS += -DEEPROM_ENABLE |
| 111 | ifeq ($(strip $(EEPROM_DRIVER)), custom) |
| 112 | OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_CUSTOM |
| 113 | COMMON_VPATH += $(DRIVER_PATH)/eeprom |
| 114 | SRC += eeprom_driver.c |
| 115 | else ifeq ($(strip $(EEPROM_DRIVER)), i2c) |
| 116 | OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_I2C |
| 117 | COMMON_VPATH += $(DRIVER_PATH)/eeprom |
| 118 | QUANTUM_LIB_SRC += i2c_master.c |
| 119 | SRC += eeprom_driver.c eeprom_i2c.c |
| 120 | else ifeq ($(strip $(EEPROM_DRIVER)), transient) |
| 121 | OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_TRANSIENT |
| 122 | COMMON_VPATH += $(DRIVER_PATH)/eeprom |
| 123 | SRC += eeprom_driver.c eeprom_transient.c |
| 124 | else ifeq ($(strip $(EEPROM_DRIVER)), vendor) |
| 125 | OPT_DEFS += -DEEPROM_VENDOR |
| 126 | ifeq ($(PLATFORM),AVR) |
| 127 | # Automatically provided by avr-libc, nothing required |
| 128 | else ifeq ($(PLATFORM),CHIBIOS) |
| 129 | ifeq ($(MCU_SERIES), STM32F3xx) |
| 130 | SRC += $(PLATFORM_COMMON_DIR)/eeprom_stm32.c |
| 131 | SRC += $(PLATFORM_COMMON_DIR)/flash_stm32.c |
| 132 | OPT_DEFS += -DEEPROM_EMU_STM32F303xC |
| 133 | OPT_DEFS += -DSTM32_EEPROM_ENABLE |
| 134 | else ifeq ($(MCU_SERIES), STM32F1xx) |
| 135 | SRC += $(PLATFORM_COMMON_DIR)/eeprom_stm32.c |
| 136 | SRC += $(PLATFORM_COMMON_DIR)/flash_stm32.c |
| 137 | OPT_DEFS += -DEEPROM_EMU_STM32F103xB |
| 138 | OPT_DEFS += -DSTM32_EEPROM_ENABLE |
| 139 | else ifeq ($(MCU_SERIES)_$(MCU_LDSCRIPT), STM32F0xx_STM32F072xB) |
| 140 | SRC += $(PLATFORM_COMMON_DIR)/eeprom_stm32.c |
| 141 | SRC += $(PLATFORM_COMMON_DIR)/flash_stm32.c |
| 142 | OPT_DEFS += -DEEPROM_EMU_STM32F072xB |
| 143 | OPT_DEFS += -DSTM32_EEPROM_ENABLE |
| 144 | else ifneq ($(filter $(MCU_SERIES),STM32L0xx STM32L1xx),) |
| 145 | OPT_DEFS += -DEEPROM_DRIVER |
| 146 | COMMON_VPATH += $(DRIVER_PATH)/eeprom |
| 147 | SRC += eeprom_driver.c eeprom_stm32_L0_L1.c |
| 148 | else |
| 149 | # This will effectively work the same as "transient" if not supported by the chip |
| 150 | SRC += $(PLATFORM_COMMON_DIR)/eeprom_teensy.c |
| 151 | endif |
| 152 | else ifeq ($(PLATFORM),ARM_ATSAM) |
| 153 | SRC += $(PLATFORM_COMMON_DIR)/eeprom.c |
| 154 | else ifeq ($(PLATFORM),TEST) |
| 155 | SRC += $(PLATFORM_COMMON_DIR)/eeprom.c |
| 156 | endif |
| 157 | endif |
| 158 | endif |
| 159 | |
| 160 | ifeq ($(strip $(RGBLIGHT_ENABLE)), yes) |
| 161 | POST_CONFIG_H += $(QUANTUM_DIR)/rgblight_post_config.h |
| 162 | OPT_DEFS += -DRGBLIGHT_ENABLE |
| 163 | SRC += $(QUANTUM_DIR)/color.c |
| 164 | SRC += $(QUANTUM_DIR)/rgblight.c |
| 165 | CIE1931_CURVE := yes |
| 166 | RGB_KEYCODES_ENABLE := yes |
| 167 | ifeq ($(strip $(RGBLIGHT_CUSTOM_DRIVER)), yes) |
| 168 | OPT_DEFS += -DRGBLIGHT_CUSTOM_DRIVER |
| 169 | else |
| 170 | WS2812_DRIVER_REQUIRED := yes |
| 171 | endif |
| 172 | endif |
| 173 | |
| 174 | VALID_MATRIX_TYPES := yes IS31FL3731 IS31FL3733 IS31FL3737 WS2812 custom |
| 175 | |
| 176 | LED_MATRIX_ENABLE ?= no |
| 177 | ifneq ($(strip $(LED_MATRIX_ENABLE)), no) |
| 178 | ifeq ($(filter $(LED_MATRIX_ENABLE),$(VALID_MATRIX_TYPES)),) |
| 179 | $(error LED_MATRIX_ENABLE="$(LED_MATRIX_ENABLE)" is not a valid matrix type) |
| 180 | else |
| 181 | BACKLIGHT_ENABLE = yes |
| 182 | BACKLIGHT_DRIVER = custom |
| 183 | OPT_DEFS += -DLED_MATRIX_ENABLE |
| 184 | SRC += $(QUANTUM_DIR)/led_matrix.c |
| 185 | SRC += $(QUANTUM_DIR)/led_matrix_drivers.c |
| 186 | endif |
| 187 | endif |
| 188 | |
| 189 | ifeq ($(strip $(LED_MATRIX_ENABLE)), IS31FL3731) |
| 190 | OPT_DEFS += -DIS31FL3731 |
| 191 | COMMON_VPATH += $(DRIVER_PATH)/issi |
| 192 | SRC += is31fl3731-simple.c |
| 193 | QUANTUM_LIB_SRC += i2c_master.c |
| 194 | endif |
| 195 | |
| 196 | RGB_MATRIX_ENABLE ?= no |
| 197 | |
| 198 | ifneq ($(strip $(RGB_MATRIX_ENABLE)), no) |
| 199 | ifeq ($(filter $(RGB_MATRIX_ENABLE),$(VALID_MATRIX_TYPES)),) |
| 200 | $(error RGB_MATRIX_ENABLE="$(RGB_MATRIX_ENABLE)" is not a valid matrix type) |
| 201 | endif |
| 202 | OPT_DEFS += -DRGB_MATRIX_ENABLE |
| 203 | SRC += $(QUANTUM_DIR)/color.c |
| 204 | SRC += $(QUANTUM_DIR)/rgb_matrix.c |
| 205 | SRC += $(QUANTUM_DIR)/rgb_matrix_drivers.c |
| 206 | CIE1931_CURVE := yes |
| 207 | RGB_KEYCODES_ENABLE := yes |
| 208 | endif |
| 209 | |
| 210 | ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes) |
| 211 | RGB_MATRIX_ENABLE := IS31FL3731 |
| 212 | endif |
| 213 | |
| 214 | ifeq ($(strip $(RGB_MATRIX_ENABLE)), IS31FL3731) |
| 215 | OPT_DEFS += -DIS31FL3731 -DSTM32_I2C -DHAL_USE_I2C=TRUE |
| 216 | COMMON_VPATH += $(DRIVER_PATH)/issi |
| 217 | SRC += is31fl3731.c |
| 218 | QUANTUM_LIB_SRC += i2c_master.c |
| 219 | endif |
| 220 | |
| 221 | ifeq ($(strip $(RGB_MATRIX_ENABLE)), IS31FL3733) |
| 222 | OPT_DEFS += -DIS31FL3733 -DSTM32_I2C -DHAL_USE_I2C=TRUE |
| 223 | COMMON_VPATH += $(DRIVER_PATH)/issi |
| 224 | SRC += is31fl3733.c |
| 225 | QUANTUM_LIB_SRC += i2c_master.c |
| 226 | endif |
| 227 | |
| 228 | ifeq ($(strip $(RGB_MATRIX_ENABLE)), IS31FL3737) |
| 229 | OPT_DEFS += -DIS31FL3737 -DSTM32_I2C -DHAL_USE_I2C=TRUE |
| 230 | COMMON_VPATH += $(DRIVER_PATH)/issi |
| 231 | SRC += is31fl3737.c |
| 232 | QUANTUM_LIB_SRC += i2c_master.c |
| 233 | endif |
| 234 | |
| 235 | ifeq ($(strip $(RGB_MATRIX_ENABLE)), WS2812) |
| 236 | OPT_DEFS += -DWS2812 |
| 237 | WS2812_DRIVER_REQUIRED := yes |
| 238 | endif |
| 239 | |
| 240 | ifeq ($(strip $(RGB_MATRIX_CUSTOM_KB)), yes) |
| 241 | OPT_DEFS += -DRGB_MATRIX_CUSTOM_KB |
| 242 | endif |
| 243 | |
| 244 | ifeq ($(strip $(RGB_MATRIX_CUSTOM_USER)), yes) |
| 245 | OPT_DEFS += -DRGB_MATRIX_CUSTOM_USER |
| 246 | endif |
| 247 | |
| 248 | ifeq ($(strip $(RGB_KEYCODES_ENABLE)), yes) |
| 249 | SRC += $(QUANTUM_DIR)/process_keycode/process_rgb.c |
| 250 | endif |
| 251 | |
| 252 | ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) |
| 253 | OPT_DEFS += -DTAP_DANCE_ENABLE |
| 254 | SRC += $(QUANTUM_DIR)/process_keycode/process_tap_dance.c |
| 255 | endif |
| 256 | |
| 257 | ifeq ($(strip $(KEY_LOCK_ENABLE)), yes) |
| 258 | OPT_DEFS += -DKEY_LOCK_ENABLE |
| 259 | SRC += $(QUANTUM_DIR)/process_keycode/process_key_lock.c |
| 260 | endif |
| 261 | |
| 262 | ifeq ($(strip $(PRINTING_ENABLE)), yes) |
| 263 | OPT_DEFS += -DPRINTING_ENABLE |
| 264 | SRC += $(QUANTUM_DIR)/process_keycode/process_printer.c |
| 265 | SRC += $(TMK_DIR)/protocol/serial_uart.c |
| 266 | endif |
| 267 | |
| 268 | ifeq ($(strip $(AUTO_SHIFT_ENABLE)), yes) |
| 269 | OPT_DEFS += -DAUTO_SHIFT_ENABLE |
| 270 | SRC += $(QUANTUM_DIR)/process_keycode/process_auto_shift.c |
| 271 | ifeq ($(strip $(AUTO_SHIFT_MODIFIERS)), yes) |
| 272 | OPT_DEFS += -DAUTO_SHIFT_MODIFIERS |
| 273 | endif |
| 274 | endif |
| 275 | |
| 276 | ifeq ($(strip $(SERIAL_LINK_ENABLE)), yes) |
| 277 | SRC += $(patsubst $(QUANTUM_PATH)/%,%,$(SERIAL_SRC)) |
| 278 | OPT_DEFS += $(SERIAL_DEFS) |
| 279 | VAPTH += $(SERIAL_PATH) |
| 280 | endif |
| 281 | |
| 282 | ifneq ($(strip $(VARIABLE_TRACE)),) |
| 283 | SRC += $(QUANTUM_DIR)/variable_trace.c |
| 284 | OPT_DEFS += -DNUM_TRACED_VARIABLES=$(strip $(VARIABLE_TRACE)) |
| 285 | ifneq ($(strip $(MAX_VARIABLE_TRACE_SIZE)),) |
| 286 | OPT_DEFS += -DMAX_VARIABLE_TRACE_SIZE=$(strip $(MAX_VARIABLE_TRACE_SIZE)) |
| 287 | endif |
| 288 | endif |
| 289 | |
| 290 | ifeq ($(strip $(LCD_ENABLE)), yes) |
| 291 | CIE1931_CURVE := yes |
| 292 | endif |
| 293 | |
| 294 | # backward compat |
| 295 | ifeq ($(strip $(BACKLIGHT_CUSTOM_DRIVER)), yes) |
| 296 | BACKLIGHT_DRIVER := custom |
| 297 | endif |
| 298 | |
| 299 | VALID_BACKLIGHT_TYPES := pwm software custom |
| 300 | |
| 301 | BACKLIGHT_ENABLE ?= no |
| 302 | BACKLIGHT_DRIVER ?= pwm |
| 303 | ifeq ($(strip $(BACKLIGHT_ENABLE)), yes) |
| 304 | ifeq ($(filter $(BACKLIGHT_DRIVER),$(VALID_BACKLIGHT_TYPES)),) |
| 305 | $(error BACKLIGHT_DRIVER="$(BACKLIGHT_DRIVER)" is not a valid backlight type) |
| 306 | endif |
| 307 | |
| 308 | COMMON_VPATH += $(QUANTUM_DIR)/backlight |
| 309 | SRC += $(QUANTUM_DIR)/backlight/backlight.c |
| 310 | SRC += $(QUANTUM_DIR)/process_keycode/process_backlight.c |
| 311 | OPT_DEFS += -DBACKLIGHT_ENABLE |
| 312 | |
| 313 | ifeq ($(strip $(BACKLIGHT_DRIVER)), custom) |
| 314 | OPT_DEFS += -DBACKLIGHT_CUSTOM_DRIVER |
| 315 | else |
| 316 | SRC += $(QUANTUM_DIR)/backlight/backlight_driver_common.c |
| 317 | ifeq ($(strip $(BACKLIGHT_DRIVER)), pwm) |
| 318 | ifeq ($(PLATFORM),AVR) |
| 319 | SRC += $(QUANTUM_DIR)/backlight/backlight_avr.c |
| 320 | else |
| 321 | SRC += $(QUANTUM_DIR)/backlight/backlight_arm.c |
| 322 | endif |
| 323 | else |
| 324 | SRC += $(QUANTUM_DIR)/backlight/backlight_$(strip $(BACKLIGHT_DRIVER)).c |
| 325 | endif |
| 326 | endif |
| 327 | endif |
| 328 | |
| 329 | VALID_WS2812_DRIVER_TYPES := bitbang pwm spi i2c |
| 330 | |
| 331 | WS2812_DRIVER ?= bitbang |
| 332 | ifeq ($(strip $(WS2812_DRIVER_REQUIRED)), yes) |
| 333 | ifeq ($(filter $(WS2812_DRIVER),$(VALID_WS2812_DRIVER_TYPES)),) |
| 334 | $(error WS2812_DRIVER="$(WS2812_DRIVER)" is not a valid WS2812 driver) |
| 335 | endif |
| 336 | |
| 337 | OPT_DEFS += -DWS2812_DRIVER_$(strip $(shell echo $(WS2812_DRIVER) | tr '[:lower:]' '[:upper:]')) |
| 338 | |
| 339 | ifeq ($(strip $(WS2812_DRIVER)), bitbang) |
| 340 | SRC += ws2812.c |
| 341 | else |
| 342 | SRC += ws2812_$(strip $(WS2812_DRIVER)).c |
| 343 | endif |
| 344 | |
| 345 | # add extra deps |
| 346 | ifeq ($(strip $(WS2812_DRIVER)), i2c) |
| 347 | QUANTUM_LIB_SRC += i2c_master.c |
| 348 | endif |
| 349 | endif |
| 350 | |
| 351 | ifeq ($(strip $(VISUALIZER_ENABLE)), yes) |
| 352 | CIE1931_CURVE := yes |
| 353 | endif |
| 354 | |
| 355 | ifeq ($(strip $(CIE1931_CURVE)), yes) |
| 356 | OPT_DEFS += -DUSE_CIE1931_CURVE |
| 357 | LED_TABLES := yes |
| 358 | endif |
| 359 | |
| 360 | ifeq ($(strip $(LED_TABLES)), yes) |
| 361 | SRC += $(QUANTUM_DIR)/led_tables.c |
| 362 | endif |
| 363 | |
| 364 | ifeq ($(strip $(TERMINAL_ENABLE)), yes) |
| 365 | SRC += $(QUANTUM_DIR)/process_keycode/process_terminal.c |
| 366 | OPT_DEFS += -DTERMINAL_ENABLE |
| 367 | OPT_DEFS += -DUSER_PRINT |
| 368 | endif |
| 369 | |
| 370 | ifeq ($(strip $(USB_HID_ENABLE)), yes) |
| 371 | include $(TMK_DIR)/protocol/usb_hid.mk |
| 372 | endif |
| 373 | |
| 374 | ifeq ($(strip $(ENCODER_ENABLE)), yes) |
| 375 | SRC += $(QUANTUM_DIR)/encoder.c |
| 376 | OPT_DEFS += -DENCODER_ENABLE |
| 377 | endif |
| 378 | |
| 379 | HAPTIC_ENABLE ?= no |
| 380 | ifneq ($(strip $(HAPTIC_ENABLE)),no) |
| 381 | COMMON_VPATH += $(DRIVER_PATH)/haptic |
| 382 | SRC += haptic.c |
| 383 | OPT_DEFS += -DHAPTIC_ENABLE |
| 384 | endif |
| 385 | |
| 386 | ifneq ($(filter DRV2605L, $(HAPTIC_ENABLE)), ) |
| 387 | SRC += DRV2605L.c |
| 388 | QUANTUM_LIB_SRC += i2c_master.c |
| 389 | OPT_DEFS += -DDRV2605L |
| 390 | endif |
| 391 | |
| 392 | ifneq ($(filter SOLENOID, $(HAPTIC_ENABLE)), ) |
| 393 | SRC += solenoid.c |
| 394 | OPT_DEFS += -DSOLENOID_ENABLE |
| 395 | endif |
| 396 | |
| 397 | ifeq ($(strip $(HD44780_ENABLE)), yes) |
| 398 | SRC += drivers/avr/hd44780.c |
| 399 | OPT_DEFS += -DHD44780_ENABLE |
| 400 | endif |
| 401 | |
| 402 | ifeq ($(strip $(VELOCIKEY_ENABLE)), yes) |
| 403 | OPT_DEFS += -DVELOCIKEY_ENABLE |
| 404 | SRC += $(QUANTUM_DIR)/velocikey.c |
| 405 | endif |
| 406 | |
| 407 | ifeq ($(strip $(VIA_ENABLE)), yes) |
| 408 | DYNAMIC_KEYMAP_ENABLE := yes |
| 409 | RAW_ENABLE := yes |
| 410 | BOOTMAGIC_ENABLE := lite |
| 411 | SRC += $(QUANTUM_DIR)/via.c |
| 412 | OPT_DEFS += -DVIA_ENABLE |
| 413 | endif |
| 414 | |
| 415 | ifeq ($(strip $(DYNAMIC_KEYMAP_ENABLE)), yes) |
| 416 | OPT_DEFS += -DDYNAMIC_KEYMAP_ENABLE |
| 417 | SRC += $(QUANTUM_DIR)/dynamic_keymap.c |
| 418 | endif |
| 419 | |
| 420 | ifeq ($(strip $(LEADER_ENABLE)), yes) |
| 421 | SRC += $(QUANTUM_DIR)/process_keycode/process_leader.c |
| 422 | OPT_DEFS += -DLEADER_ENABLE |
| 423 | endif |
| 424 | |
| 425 | |
| 426 | ifeq ($(strip $(DIP_SWITCH_ENABLE)), yes) |
| 427 | SRC += $(QUANTUM_DIR)/dip_switch.c |
| 428 | OPT_DEFS += -DDIP_SWITCH_ENABLE |
| 429 | endif |
| 430 | |
| 431 | include $(DRIVER_PATH)/qwiic/qwiic.mk |
| 432 | |
| 433 | QUANTUM_SRC:= \ |
| 434 | $(QUANTUM_DIR)/quantum.c \ |
| 435 | $(QUANTUM_DIR)/keymap_common.c \ |
| 436 | $(QUANTUM_DIR)/keycode_config.c |
| 437 | |
| 438 | |
| 439 | |
| 440 | VALID_CUSTOM_MATRIX_TYPES:= yes lite no |
| 441 | |
| 442 | CUSTOM_MATRIX ?= no |
| 443 | |
| 444 | ifneq ($(strip $(CUSTOM_MATRIX)), yes) |
| 445 | ifeq ($(filter $(CUSTOM_MATRIX),$(VALID_CUSTOM_MATRIX_TYPES)),) |
| 446 | $(error CUSTOM_MATRIX="$(CUSTOM_MATRIX)" is not a valid custom matrix type) |
| 447 | endif |
| 448 | |
| 449 | # Include common stuff for all non custom matrix users |
| 450 | QUANTUM_SRC += $(QUANTUM_DIR)/matrix_common.c |
| 451 | |
| 452 | # if 'lite' then skip the actual matrix implementation |
| 453 | ifneq ($(strip $(CUSTOM_MATRIX)), lite) |
| 454 | # Include the standard or split matrix code if needed |
| 455 | ifeq ($(strip $(SPLIT_KEYBOARD)), yes) |
| 456 | QUANTUM_SRC += $(QUANTUM_DIR)/split_common/matrix.c |
| 457 | else |
| 458 | QUANTUM_SRC += $(QUANTUM_DIR)/matrix.c |
| 459 | endif |
| 460 | endif |
| 461 | endif |
| 462 | |
| 463 | DEBOUNCE_DIR:= $(QUANTUM_DIR)/debounce |
| 464 | # Debounce Modules. Set DEBOUNCE_TYPE=custom if including one manually. |
| 465 | DEBOUNCE_TYPE?= sym_g |
| 466 | ifneq ($(strip $(DEBOUNCE_TYPE)), custom) |
| 467 | QUANTUM_SRC += $(DEBOUNCE_DIR)/$(strip $(DEBOUNCE_TYPE)).c |
| 468 | endif |
| 469 | |
| 470 | ifeq ($(strip $(SPLIT_KEYBOARD)), yes) |
| 471 | POST_CONFIG_H += $(QUANTUM_DIR)/split_common/post_config.h |
| 472 | OPT_DEFS += -DSPLIT_KEYBOARD |
| 473 | |
| 474 | # Include files used by all split keyboards |
| 475 | QUANTUM_SRC += $(QUANTUM_DIR)/split_common/split_util.c |
| 476 | |
| 477 | # Determine which (if any) transport files are required |
| 478 | ifneq ($(strip $(SPLIT_TRANSPORT)), custom) |
| 479 | QUANTUM_SRC += $(QUANTUM_DIR)/split_common/transport.c |
| 480 | # Functions added via QUANTUM_LIB_SRC are only included in the final binary if they're called. |
| 481 | # Unused functions are pruned away, which is why we can add multiple drivers here without bloat. |
| 482 | ifeq ($(PLATFORM),AVR) |
| 483 | QUANTUM_LIB_SRC += i2c_master.c \ |
| 484 | i2c_slave.c |
| 485 | endif |
| 486 | |
| 487 | SERIAL_DRIVER ?= bitbang |
| 488 | ifeq ($(strip $(SERIAL_DRIVER)), bitbang) |
| 489 | QUANTUM_LIB_SRC += serial.c |
| 490 | else |
| 491 | QUANTUM_LIB_SRC += serial_$(strip $(SERIAL_DRIVER)).c |
| 492 | endif |
| 493 | endif |
| 494 | COMMON_VPATH += $(QUANTUM_PATH)/split_common |
| 495 | endif |
| 496 | |
| 497 | ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes) |
| 498 | OPT_DEFS += -DOLED_DRIVER_ENABLE |
| 499 | COMMON_VPATH += $(DRIVER_PATH)/oled |
| 500 | QUANTUM_LIB_SRC += i2c_master.c |
| 501 | SRC += oled_driver.c |
| 502 | endif |
| 503 | |
| 504 | SPACE_CADET_ENABLE ?= yes |
| 505 | ifeq ($(strip $(SPACE_CADET_ENABLE)), yes) |
| 506 | SRC += $(QUANTUM_DIR)/process_keycode/process_space_cadet.c |
| 507 | OPT_DEFS += -DSPACE_CADET_ENABLE |
| 508 | endif |
| 509 | |
| 510 | MAGIC_ENABLE ?= yes |
| 511 | ifeq ($(strip $(MAGIC_ENABLE)), yes) |
| 512 | SRC += $(QUANTUM_DIR)/process_keycode/process_magic.c |
| 513 | OPT_DEFS += -DMAGIC_KEYCODE_ENABLE |
| 514 | endif |
| 515 | |
| 516 | GRAVE_ESC_ENABLE ?= yes |
| 517 | ifeq ($(strip $(GRAVE_ESC_ENABLE)), yes) |
| 518 | SRC += $(QUANTUM_DIR)/process_keycode/process_grave_esc.c |
| 519 | OPT_DEFS += -DGRAVE_ESC_ENABLE |
| 520 | endif |
| 521 | |
| 522 | ifeq ($(strip $(DYNAMIC_MACRO_ENABLE)), yes) |
| 523 | SRC += $(QUANTUM_DIR)/process_keycode/process_dynamic_macro.c |
| 524 | OPT_DEFS += -DDYNAMIC_MACRO_ENABLE |
| 525 | endif |