- QUANTUM_SRC += $(QUANTUM_DIR)/split_common/split_flags.c \
- $(QUANTUM_DIR)/split_common/split_util.c \
- $(QUANTUM_DIR)/split_common/i2c.c \
- $(QUANTUM_DIR)/split_common/serial.c
+
+ # Include files used by all split keyboards
+ QUANTUM_SRC += $(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 multiple drivers here without bloat.
+ QUANTUM_LIB_SRC += $(QUANTUM_DIR)/split_common/serial.c \
+ i2c_master.c \
+ i2c_slave.c
+ endif
+ COMMON_VPATH += $(QUANTUM_PATH)/split_common
+endif
+
+ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes)
+ OPT_DEFS += -DOLED_DRIVER_ENABLE
+ COMMON_VPATH += $(DRIVER_PATH)/oled
+ QUANTUM_LIB_SRC += i2c_master.c
+ SRC += oled_driver.c
+endif
+
+SPACE_CADET_ENABLE ?= yes
+ifeq ($(strip $(SPACE_CADET_ENABLE)), yes)
+ SRC += $(QUANTUM_DIR)/process_keycode/process_space_cadet.c
+ OPT_DEFS += -DSPACE_CADET_ENABLE