rules.mk 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. # Quantum Painter Configurables
  2. QUANTUM_PAINTER_DRIVERS ?=
  3. QUANTUM_PAINTER_ANIMATIONS_ENABLE ?= yes
  4. QUANTUM_PAINTER_LVGL_INTEGRATION ?= no
  5. # The list of permissible drivers that can be listed in QUANTUM_PAINTER_DRIVERS
  6. VALID_QUANTUM_PAINTER_DRIVERS := \
  7. rgb565_surface \
  8. ili9163_spi \
  9. ili9341_spi \
  10. ili9488_spi \
  11. st7735_spi \
  12. st7789_spi \
  13. gc9a01_spi \
  14. ssd1351_spi
  15. #-------------------------------------------------------------------------------
  16. OPT_DEFS += -DQUANTUM_PAINTER_ENABLE
  17. COMMON_VPATH += $(QUANTUM_DIR)/painter \
  18. $(QUANTUM_DIR)/unicode
  19. SRC += \
  20. $(QUANTUM_DIR)/unicode/utf8.c \
  21. $(QUANTUM_DIR)/color.c \
  22. $(QUANTUM_DIR)/painter/qp.c \
  23. $(QUANTUM_DIR)/painter/qp_stream.c \
  24. $(QUANTUM_DIR)/painter/qgf.c \
  25. $(QUANTUM_DIR)/painter/qff.c \
  26. $(QUANTUM_DIR)/painter/qp_draw_core.c \
  27. $(QUANTUM_DIR)/painter/qp_draw_codec.c \
  28. $(QUANTUM_DIR)/painter/qp_draw_circle.c \
  29. $(QUANTUM_DIR)/painter/qp_draw_ellipse.c \
  30. $(QUANTUM_DIR)/painter/qp_draw_image.c \
  31. $(QUANTUM_DIR)/painter/qp_draw_text.c
  32. # Check if people want animations... enable the defered exec if so.
  33. ifeq ($(strip $(QUANTUM_PAINTER_ANIMATIONS_ENABLE)), yes)
  34. DEFERRED_EXEC_ENABLE := yes
  35. OPT_DEFS += -DQUANTUM_PAINTER_ANIMATIONS_ENABLE
  36. endif
  37. # Comms flags
  38. QUANTUM_PAINTER_NEEDS_COMMS_SPI ?= no
  39. # Handler for each driver
  40. define handle_quantum_painter_driver
  41. CURRENT_PAINTER_DRIVER := $1
  42. ifeq ($$(filter $$(strip $$(CURRENT_PAINTER_DRIVER)),$$(VALID_QUANTUM_PAINTER_DRIVERS)),)
  43. $$(error "$$(CURRENT_PAINTER_DRIVER)" is not a valid Quantum Painter driver)
  44. else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),rgb565_surface)
  45. OPT_DEFS += -DQUANTUM_PAINTER_RGB565_SURFACE_ENABLE
  46. COMMON_VPATH += \
  47. $(DRIVER_PATH)/painter/generic
  48. SRC += \
  49. $(DRIVER_PATH)/painter/generic/qp_rgb565_surface.c \
  50. else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),ili9163_spi)
  51. QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
  52. QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
  53. OPT_DEFS += -DQUANTUM_PAINTER_ILI9163_ENABLE -DQUANTUM_PAINTER_ILI9163_SPI_ENABLE
  54. COMMON_VPATH += \
  55. $(DRIVER_PATH)/painter/tft_panel \
  56. $(DRIVER_PATH)/painter/ili9xxx
  57. SRC += \
  58. $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
  59. $(DRIVER_PATH)/painter/ili9xxx/qp_ili9163.c \
  60. else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),ili9341_spi)
  61. QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
  62. QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
  63. OPT_DEFS += -DQUANTUM_PAINTER_ILI9341_ENABLE -DQUANTUM_PAINTER_ILI9341_SPI_ENABLE
  64. COMMON_VPATH += \
  65. $(DRIVER_PATH)/painter/tft_panel \
  66. $(DRIVER_PATH)/painter/ili9xxx
  67. SRC += \
  68. $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
  69. $(DRIVER_PATH)/painter/ili9xxx/qp_ili9341.c \
  70. else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),ili9488_spi)
  71. QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
  72. QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
  73. OPT_DEFS += -DQUANTUM_PAINTER_ILI9488_ENABLE -DQUANTUM_PAINTER_ILI9488_SPI_ENABLE
  74. COMMON_VPATH += \
  75. $(DRIVER_PATH)/painter/tft_panel \
  76. $(DRIVER_PATH)/painter/ili9xxx
  77. SRC += \
  78. $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
  79. $(DRIVER_PATH)/painter/ili9xxx/qp_ili9488.c \
  80. else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),st7735_spi)
  81. QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
  82. QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
  83. OPT_DEFS += -DQUANTUM_PAINTER_ST7735_ENABLE -DQUANTUM_PAINTER_ST7735_SPI_ENABLE
  84. COMMON_VPATH += \
  85. $(DRIVER_PATH)/painter/tft_panel \
  86. $(DRIVER_PATH)/painter/st77xx
  87. SRC += \
  88. $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
  89. $(DRIVER_PATH)/painter/st77xx/qp_st7735.c
  90. else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),st7789_spi)
  91. QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
  92. QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
  93. OPT_DEFS += -DQUANTUM_PAINTER_ST7789_ENABLE -DQUANTUM_PAINTER_ST7789_SPI_ENABLE
  94. COMMON_VPATH += \
  95. $(DRIVER_PATH)/painter/tft_panel \
  96. $(DRIVER_PATH)/painter/st77xx
  97. SRC += \
  98. $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
  99. $(DRIVER_PATH)/painter/st77xx/qp_st7789.c
  100. else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),gc9a01_spi)
  101. QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
  102. QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
  103. OPT_DEFS += -DQUANTUM_PAINTER_GC9A01_ENABLE -DQUANTUM_PAINTER_GC9A01_SPI_ENABLE
  104. COMMON_VPATH += \
  105. $(DRIVER_PATH)/painter/tft_panel \
  106. $(DRIVER_PATH)/painter/gc9a01
  107. SRC += \
  108. $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
  109. $(DRIVER_PATH)/painter/gc9a01/qp_gc9a01.c
  110. else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),ssd1351_spi)
  111. QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
  112. QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
  113. OPT_DEFS += -DQUANTUM_PAINTER_SSD1351_ENABLE -DQUANTUM_PAINTER_SSD1351_SPI_ENABLE
  114. COMMON_VPATH += \
  115. $(DRIVER_PATH)/painter/tft_panel \
  116. $(DRIVER_PATH)/painter/ssd1351
  117. SRC += \
  118. $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
  119. $(DRIVER_PATH)/painter/ssd1351/qp_ssd1351.c
  120. endif
  121. endef
  122. # Iterate through the listed drivers for the build, including what's necessary
  123. $(foreach qp_driver,$(QUANTUM_PAINTER_DRIVERS),$(eval $(call handle_quantum_painter_driver,$(qp_driver))))
  124. # If SPI comms is needed, set up the required files
  125. ifeq ($(strip $(QUANTUM_PAINTER_NEEDS_COMMS_SPI)), yes)
  126. OPT_DEFS += -DQUANTUM_PAINTER_SPI_ENABLE
  127. QUANTUM_LIB_SRC += spi_master.c
  128. VPATH += $(DRIVER_PATH)/painter/comms
  129. SRC += \
  130. $(QUANTUM_DIR)/painter/qp_comms.c \
  131. $(DRIVER_PATH)/painter/comms/qp_comms_spi.c
  132. ifeq ($(strip $(QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET)), yes)
  133. OPT_DEFS += -DQUANTUM_PAINTER_SPI_DC_RESET_ENABLE
  134. endif
  135. endif
  136. # Check if LVGL needs to be enabled
  137. ifeq ($(strip $(QUANTUM_PAINTER_LVGL_INTEGRATION)), yes)
  138. include $(QUANTUM_DIR)/painter/lvgl/rules.mk
  139. endif