+# Include the standard or split matrix code if needed
+ifneq ($(strip $(CUSTOM_MATRIX)), yes)
+ ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
+ QUANTUM_SRC += $(QUANTUM_DIR)/split_common/matrix.c
+ else
+ QUANTUM_SRC += $(QUANTUM_DIR)/matrix.c
+ endif
+endif
+
+DEBOUNCE_DIR:= $(QUANTUM_DIR)/debounce
+# Debounce Modules. If implemented in matrix.c, don't use these.
+DEBOUNCE_TYPE?= sym_g
+VALID_DEBOUNCE_TYPES := sym_g eager_pk custom
+ifeq ($(filter $(DEBOUNCE_TYPE),$(VALID_DEBOUNCE_TYPES)),)
+ $(error DEBOUNCE_TYPE="$(DEBOUNCE_TYPE)" is not a valid debounce algorithm)
+endif
+ifeq ($(strip $(DEBOUNCE_TYPE)), sym_g)
+ QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_sym_g.c
+else ifeq ($(strip $(DEBOUNCE_TYPE)), eager_pk)
+ QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_eager_pk.c
+endif
+
+
+
+ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
+ OPT_DEFS += -DSPLIT_KEYBOARD
+
+ # Include files used by all split keyboards
+ QUANTUM_SRC += $(QUANTUM_DIR)/split_common/split_flags.c \
+ $(QUANTUM_DIR)/split_common/split_util.c
+
+ # Determine which (if any) transport files are required
+ ifneq ($(strip $(SPLIT_TRANSPORT)), custom)
+ QUANTUM_SRC += $(QUANTUM_DIR)/split_common/transport.c
+ # Functions added via QUANTUM_LIB_SRC are only included in the final binary if they're called.
+ # Unused functions are pruned away, which is why we can add both drivers here without bloat.
+ QUANTUM_LIB_SRC += $(QUANTUM_DIR)/split_common/i2c.c \
+ $(QUANTUM_DIR)/split_common/serial.c
+ endif
+ COMMON_VPATH += $(QUANTUM_PATH)/split_common