qmk_firmware

QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)
Log | Files | Refs | Submodules | LICENSE

rules.mk (11732B)


      1 # Quantum Painter Configurables
      2 QUANTUM_PAINTER_DRIVERS ?=
      3 QUANTUM_PAINTER_ANIMATIONS_ENABLE ?= yes
      4 
      5 QUANTUM_PAINTER_LVGL_INTEGRATION ?= no
      6 
      7 # The list of permissible drivers that can be listed in QUANTUM_PAINTER_DRIVERS
      8 VALID_QUANTUM_PAINTER_DRIVERS := \
      9     surface \
     10     ili9163_spi \
     11     ili9341_spi \
     12     ili9486_spi \
     13     ili9488_spi \
     14     st7735_spi \
     15     st7789_spi \
     16     gc9a01_spi \
     17     gc9107_spi \
     18     ssd1351_spi \
     19     sh1106_i2c \
     20     sh1106_spi \
     21     sh1107_i2c \
     22     sh1107_spi \
     23     ld7032_i2c \
     24     ld7032_spi
     25 
     26 #-------------------------------------------------------------------------------
     27 
     28 OPT_DEFS += -DQUANTUM_PAINTER_ENABLE
     29 COMMON_VPATH += $(QUANTUM_DIR)/painter \
     30                 $(QUANTUM_DIR)/unicode
     31 SRC += \
     32     $(QUANTUM_DIR)/unicode/utf8.c \
     33     $(QUANTUM_DIR)/color.c \
     34     $(QUANTUM_DIR)/painter/qp.c \
     35     $(QUANTUM_DIR)/painter/qp_internal.c \
     36     $(QUANTUM_DIR)/painter/qp_stream.c \
     37     $(QUANTUM_DIR)/painter/qgf.c \
     38     $(QUANTUM_DIR)/painter/qff.c \
     39     $(QUANTUM_DIR)/painter/qp_draw_core.c \
     40     $(QUANTUM_DIR)/painter/qp_draw_codec.c \
     41     $(QUANTUM_DIR)/painter/qp_draw_circle.c \
     42     $(QUANTUM_DIR)/painter/qp_draw_ellipse.c \
     43     $(QUANTUM_DIR)/painter/qp_draw_image.c \
     44     $(QUANTUM_DIR)/painter/qp_draw_text.c
     45 
     46 # Check if people want animations... enable the defered exec if so.
     47 ifeq ($(strip $(QUANTUM_PAINTER_ANIMATIONS_ENABLE)), yes)
     48     DEFERRED_EXEC_ENABLE := yes
     49     OPT_DEFS += -DQUANTUM_PAINTER_ANIMATIONS_ENABLE
     50 endif
     51 
     52 # Comms flags
     53 QUANTUM_PAINTER_NEEDS_COMMS_DUMMY ?= no
     54 QUANTUM_PAINTER_NEEDS_COMMS_SPI ?= no
     55 QUANTUM_PAINTER_NEEDS_COMMS_I2C ?= no
     56 
     57 # Handler for each driver
     58 define handle_quantum_painter_driver
     59     CURRENT_PAINTER_DRIVER := $1
     60 
     61     ifeq ($$(filter $$(strip $$(CURRENT_PAINTER_DRIVER)),$$(VALID_QUANTUM_PAINTER_DRIVERS)),)
     62         $$(error "$$(CURRENT_PAINTER_DRIVER)" is not a valid Quantum Painter driver)
     63 
     64     else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),surface)
     65         QUANTUM_PAINTER_NEEDS_SURFACE := yes
     66 
     67     else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),ili9163_spi)
     68         QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
     69         QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
     70         OPT_DEFS += -DQUANTUM_PAINTER_ILI9163_ENABLE -DQUANTUM_PAINTER_ILI9163_SPI_ENABLE
     71         COMMON_VPATH += \
     72             $(DRIVER_PATH)/painter/tft_panel \
     73             $(DRIVER_PATH)/painter/ili9xxx
     74         SRC += \
     75             $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
     76             $(DRIVER_PATH)/painter/ili9xxx/qp_ili9163.c \
     77 
     78     else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),ili9341_spi)
     79         QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
     80         QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
     81         OPT_DEFS += -DQUANTUM_PAINTER_ILI9341_ENABLE -DQUANTUM_PAINTER_ILI9341_SPI_ENABLE
     82         COMMON_VPATH += \
     83             $(DRIVER_PATH)/painter/tft_panel \
     84             $(DRIVER_PATH)/painter/ili9xxx
     85         SRC += \
     86             $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
     87             $(DRIVER_PATH)/painter/ili9xxx/qp_ili9341.c \
     88 
     89     else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),ili9486_spi)
     90         QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
     91         QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
     92         OPT_DEFS += -DQUANTUM_PAINTER_ILI9486_ENABLE -DQUANTUM_PAINTER_ILI9486_SPI_ENABLE
     93         COMMON_VPATH += \
     94             $(DRIVER_PATH)/painter/tft_panel \
     95             $(DRIVER_PATH)/painter/ili9xxx
     96         SRC += \
     97             $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
     98             $(DRIVER_PATH)/painter/ili9xxx/qp_ili9486.c \
     99 
    100     else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),ili9488_spi)
    101         QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
    102         QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
    103         OPT_DEFS += -DQUANTUM_PAINTER_ILI9488_ENABLE -DQUANTUM_PAINTER_ILI9488_SPI_ENABLE
    104         COMMON_VPATH += \
    105             $(DRIVER_PATH)/painter/tft_panel \
    106             $(DRIVER_PATH)/painter/ili9xxx
    107         SRC += \
    108             $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
    109             $(DRIVER_PATH)/painter/ili9xxx/qp_ili9488.c \
    110 
    111     else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),st7735_spi)
    112         QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
    113         QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
    114         OPT_DEFS += -DQUANTUM_PAINTER_ST7735_ENABLE -DQUANTUM_PAINTER_ST7735_SPI_ENABLE
    115         COMMON_VPATH += \
    116             $(DRIVER_PATH)/painter/tft_panel \
    117             $(DRIVER_PATH)/painter/st77xx
    118         SRC += \
    119             $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
    120             $(DRIVER_PATH)/painter/st77xx/qp_st7735.c
    121 
    122     else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),st7789_spi)
    123         QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
    124         QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
    125         OPT_DEFS += -DQUANTUM_PAINTER_ST7789_ENABLE -DQUANTUM_PAINTER_ST7789_SPI_ENABLE
    126         COMMON_VPATH += \
    127             $(DRIVER_PATH)/painter/tft_panel \
    128             $(DRIVER_PATH)/painter/st77xx
    129         SRC += \
    130             $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
    131             $(DRIVER_PATH)/painter/st77xx/qp_st7789.c
    132 
    133     else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),gc9a01_spi)
    134         QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
    135         QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
    136         OPT_DEFS += -DQUANTUM_PAINTER_GC9A01_ENABLE -DQUANTUM_PAINTER_GC9A01_SPI_ENABLE
    137         COMMON_VPATH += \
    138             $(DRIVER_PATH)/painter/tft_panel \
    139             $(DRIVER_PATH)/painter/gc9xxx
    140         SRC += \
    141             $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
    142             $(DRIVER_PATH)/painter/gc9xxx/qp_gc9a01.c
    143 
    144     else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),gc9107_spi)
    145         QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
    146         QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
    147         OPT_DEFS += -DQUANTUM_PAINTER_GC9107_ENABLE -DQUANTUM_PAINTER_GC9107_SPI_ENABLE
    148         COMMON_VPATH += \
    149             $(DRIVER_PATH)/painter/tft_panel \
    150             $(DRIVER_PATH)/painter/gc9xxx
    151         SRC += \
    152             $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
    153             $(DRIVER_PATH)/painter/gc9xxx/qp_gc9107.c
    154 
    155     else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),ssd1351_spi)
    156         QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
    157         QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
    158         OPT_DEFS += -DQUANTUM_PAINTER_SSD1351_ENABLE -DQUANTUM_PAINTER_SSD1351_SPI_ENABLE
    159         COMMON_VPATH += \
    160             $(DRIVER_PATH)/painter/tft_panel \
    161             $(DRIVER_PATH)/painter/ssd1351
    162         SRC += \
    163             $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
    164             $(DRIVER_PATH)/painter/ssd1351/qp_ssd1351.c
    165 
    166     else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),sh1106_spi)
    167         QUANTUM_PAINTER_NEEDS_SURFACE := yes
    168         QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
    169         QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
    170         OPT_DEFS += -DQUANTUM_PAINTER_SH1106_ENABLE -DQUANTUM_PAINTER_SH1106_SPI_ENABLE
    171         COMMON_VPATH += \
    172             $(DRIVER_PATH)/painter/oled_panel \
    173             $(DRIVER_PATH)/painter/sh1106
    174         SRC += \
    175             $(DRIVER_PATH)/painter/oled_panel/qp_oled_panel.c \
    176             $(DRIVER_PATH)/painter/sh1106/qp_sh1106.c
    177 
    178     else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),sh1106_i2c)
    179         QUANTUM_PAINTER_NEEDS_SURFACE := yes
    180         QUANTUM_PAINTER_NEEDS_COMMS_I2C := yes
    181         OPT_DEFS += -DQUANTUM_PAINTER_SH1106_ENABLE -DQUANTUM_PAINTER_SH1106_I2C_ENABLE
    182         COMMON_VPATH += \
    183             $(DRIVER_PATH)/painter/oled_panel \
    184             $(DRIVER_PATH)/painter/sh1106
    185         SRC += \
    186             $(DRIVER_PATH)/painter/oled_panel/qp_oled_panel.c \
    187             $(DRIVER_PATH)/painter/sh1106/qp_sh1106.c
    188 
    189     else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),sh1107_spi)
    190         QUANTUM_PAINTER_NEEDS_SURFACE := yes
    191         QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
    192         QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
    193         OPT_DEFS += -DQUANTUM_PAINTER_SH1107_ENABLE -DQUANTUM_PAINTER_SH1107_SPI_ENABLE
    194         COMMON_VPATH += \
    195             $(DRIVER_PATH)/painter/oled_panel \
    196             $(DRIVER_PATH)/painter/sh1107
    197         SRC += \
    198             $(DRIVER_PATH)/painter/oled_panel/qp_oled_panel.c \
    199             $(DRIVER_PATH)/painter/sh1107/qp_sh1107.c
    200 
    201     else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),sh1107_i2c)
    202         QUANTUM_PAINTER_NEEDS_SURFACE := yes
    203         QUANTUM_PAINTER_NEEDS_COMMS_I2C := yes
    204         OPT_DEFS += -DQUANTUM_PAINTER_SH1107_ENABLE -DQUANTUM_PAINTER_SH1107_I2C_ENABLE
    205         COMMON_VPATH += \
    206             $(DRIVER_PATH)/painter/oled_panel \
    207             $(DRIVER_PATH)/painter/sh1107
    208         SRC += \
    209             $(DRIVER_PATH)/painter/oled_panel/qp_oled_panel.c \
    210             $(DRIVER_PATH)/painter/sh1107/qp_sh1107.c
    211 
    212     else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),ld7032_spi)
    213         QUANTUM_PAINTER_NEEDS_SURFACE := yes
    214         QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
    215         QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
    216         OPT_DEFS += -DQUANTUM_PAINTER_LD7032_ENABLE -DQUANTUM_PAINTER_LD7032_SPI_ENABLE
    217         COMMON_VPATH += \
    218             $(DRIVER_PATH)/painter/oled_panel \
    219             $(DRIVER_PATH)/painter/ld7032
    220         SRC += \
    221             $(DRIVER_PATH)/painter/oled_panel/qp_oled_panel.c \
    222             $(DRIVER_PATH)/painter/ld7032/qp_ld7032.c
    223 
    224     else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),ld7032_i2c)
    225         QUANTUM_PAINTER_NEEDS_SURFACE := yes
    226         QUANTUM_PAINTER_NEEDS_COMMS_I2C := yes
    227         OPT_DEFS += -DQUANTUM_PAINTER_LD7032_ENABLE -DQUANTUM_PAINTER_LD7032_I2C_ENABLE
    228         COMMON_VPATH += \
    229             $(DRIVER_PATH)/painter/oled_panel \
    230             $(DRIVER_PATH)/painter/ld7032
    231         SRC += \
    232             $(DRIVER_PATH)/painter/oled_panel/qp_oled_panel.c \
    233             $(DRIVER_PATH)/painter/ld7032/qp_ld7032.c
    234 
    235     endif
    236 endef
    237 
    238 # Iterate through the listed drivers for the build, including what's necessary
    239 $(foreach qp_driver,$(QUANTUM_PAINTER_DRIVERS),$(eval $(call handle_quantum_painter_driver,$(qp_driver))))
    240 
    241 # If a surface is needed, set up the required files
    242 ifeq ($(strip $(QUANTUM_PAINTER_NEEDS_SURFACE)), yes)
    243     QUANTUM_PAINTER_NEEDS_COMMS_DUMMY := yes
    244     OPT_DEFS += -DQUANTUM_PAINTER_SURFACE_ENABLE
    245     COMMON_VPATH += \
    246         $(DRIVER_PATH)/painter/generic
    247     SRC += \
    248         $(DRIVER_PATH)/painter/generic/qp_surface_common.c \
    249         $(DRIVER_PATH)/painter/generic/qp_surface_mono1bpp.c \
    250         $(DRIVER_PATH)/painter/generic/qp_surface_rgb565.c \
    251         $(DRIVER_PATH)/painter/generic/qp_surface_rgb888.c
    252 endif
    253 
    254 # If dummy comms is needed, set up the required files
    255 ifeq ($(strip $(QUANTUM_PAINTER_NEEDS_COMMS_DUMMY)), yes)
    256     OPT_DEFS += -DQUANTUM_PAINTER_DUMMY_COMMS_ENABLE
    257     VPATH += $(DRIVER_PATH)/painter/comms
    258     SRC += \
    259         $(QUANTUM_DIR)/painter/qp_comms.c \
    260         $(DRIVER_PATH)/painter/comms/qp_comms_dummy.c
    261 endif
    262 
    263 # If SPI comms is needed, set up the required files
    264 ifeq ($(strip $(QUANTUM_PAINTER_NEEDS_COMMS_SPI)), yes)
    265     OPT_DEFS += -DQUANTUM_PAINTER_SPI_ENABLE
    266     SPI_DRIVER_REQUIRED = yes
    267     VPATH += $(DRIVER_PATH)/painter/comms
    268     SRC += \
    269         $(QUANTUM_DIR)/painter/qp_comms.c \
    270         $(DRIVER_PATH)/painter/comms/qp_comms_spi.c
    271 
    272     ifeq ($(strip $(QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET)), yes)
    273         OPT_DEFS += -DQUANTUM_PAINTER_SPI_DC_RESET_ENABLE
    274     endif
    275 endif
    276 
    277 # If I2C comms is needed, set up the required files
    278 ifeq ($(strip $(QUANTUM_PAINTER_NEEDS_COMMS_I2C)), yes)
    279     OPT_DEFS += -DQUANTUM_PAINTER_I2C_ENABLE
    280     I2C_DRIVER_REQUIRED = yes
    281     VPATH += $(DRIVER_PATH)/painter/comms
    282     SRC += \
    283         $(QUANTUM_DIR)/painter/qp_comms.c \
    284         $(DRIVER_PATH)/painter/comms/qp_comms_i2c.c
    285 endif
    286 
    287 # Check if LVGL needs to be enabled
    288 ifeq ($(strip $(QUANTUM_PAINTER_LVGL_INTEGRATION)), yes)
    289     include $(QUANTUM_DIR)/painter/lvgl/rules.mk
    290 endif