rules.mk 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  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. surface \
  8. ili9163_spi \
  9. ili9341_spi \
  10. ili9488_spi \
  11. st7735_spi \
  12. st7789_spi \
  13. gc9a01_spi \
  14. ssd1351_spi \
  15. sh1106_i2c \
  16. sh1106_spi
  17. #-------------------------------------------------------------------------------
  18. OPT_DEFS += -DQUANTUM_PAINTER_ENABLE
  19. COMMON_VPATH += $(QUANTUM_DIR)/painter \
  20. $(QUANTUM_DIR)/unicode
  21. SRC += \
  22. $(QUANTUM_DIR)/unicode/utf8.c \
  23. $(QUANTUM_DIR)/color.c \
  24. $(QUANTUM_DIR)/painter/qp.c \
  25. $(QUANTUM_DIR)/painter/qp_internal.c \
  26. $(QUANTUM_DIR)/painter/qp_stream.c \
  27. $(QUANTUM_DIR)/painter/qgf.c \
  28. $(QUANTUM_DIR)/painter/qff.c \
  29. $(QUANTUM_DIR)/painter/qp_draw_core.c \
  30. $(QUANTUM_DIR)/painter/qp_draw_codec.c \
  31. $(QUANTUM_DIR)/painter/qp_draw_circle.c \
  32. $(QUANTUM_DIR)/painter/qp_draw_ellipse.c \
  33. $(QUANTUM_DIR)/painter/qp_draw_image.c \
  34. $(QUANTUM_DIR)/painter/qp_draw_text.c
  35. # Check if people want animations... enable the defered exec if so.
  36. ifeq ($(strip $(QUANTUM_PAINTER_ANIMATIONS_ENABLE)), yes)
  37. DEFERRED_EXEC_ENABLE := yes
  38. OPT_DEFS += -DQUANTUM_PAINTER_ANIMATIONS_ENABLE
  39. endif
  40. # Comms flags
  41. QUANTUM_PAINTER_NEEDS_COMMS_DUMMY ?= no
  42. QUANTUM_PAINTER_NEEDS_COMMS_SPI ?= no
  43. QUANTUM_PAINTER_NEEDS_COMMS_I2C ?= no
  44. # Handler for each driver
  45. define handle_quantum_painter_driver
  46. CURRENT_PAINTER_DRIVER := $1
  47. ifeq ($$(filter $$(strip $$(CURRENT_PAINTER_DRIVER)),$$(VALID_QUANTUM_PAINTER_DRIVERS)),)
  48. $$(error "$$(CURRENT_PAINTER_DRIVER)" is not a valid Quantum Painter driver)
  49. else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),surface)
  50. QUANTUM_PAINTER_NEEDS_SURFACE := yes
  51. else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),ili9163_spi)
  52. QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
  53. QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
  54. OPT_DEFS += -DQUANTUM_PAINTER_ILI9163_ENABLE -DQUANTUM_PAINTER_ILI9163_SPI_ENABLE
  55. COMMON_VPATH += \
  56. $(DRIVER_PATH)/painter/tft_panel \
  57. $(DRIVER_PATH)/painter/ili9xxx
  58. SRC += \
  59. $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
  60. $(DRIVER_PATH)/painter/ili9xxx/qp_ili9163.c \
  61. else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),ili9341_spi)
  62. QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
  63. QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
  64. OPT_DEFS += -DQUANTUM_PAINTER_ILI9341_ENABLE -DQUANTUM_PAINTER_ILI9341_SPI_ENABLE
  65. COMMON_VPATH += \
  66. $(DRIVER_PATH)/painter/tft_panel \
  67. $(DRIVER_PATH)/painter/ili9xxx
  68. SRC += \
  69. $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
  70. $(DRIVER_PATH)/painter/ili9xxx/qp_ili9341.c \
  71. else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),ili9488_spi)
  72. QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
  73. QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
  74. OPT_DEFS += -DQUANTUM_PAINTER_ILI9488_ENABLE -DQUANTUM_PAINTER_ILI9488_SPI_ENABLE
  75. COMMON_VPATH += \
  76. $(DRIVER_PATH)/painter/tft_panel \
  77. $(DRIVER_PATH)/painter/ili9xxx
  78. SRC += \
  79. $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
  80. $(DRIVER_PATH)/painter/ili9xxx/qp_ili9488.c \
  81. else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),st7735_spi)
  82. QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
  83. QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
  84. OPT_DEFS += -DQUANTUM_PAINTER_ST7735_ENABLE -DQUANTUM_PAINTER_ST7735_SPI_ENABLE
  85. COMMON_VPATH += \
  86. $(DRIVER_PATH)/painter/tft_panel \
  87. $(DRIVER_PATH)/painter/st77xx
  88. SRC += \
  89. $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
  90. $(DRIVER_PATH)/painter/st77xx/qp_st7735.c
  91. else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),st7789_spi)
  92. QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
  93. QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
  94. OPT_DEFS += -DQUANTUM_PAINTER_ST7789_ENABLE -DQUANTUM_PAINTER_ST7789_SPI_ENABLE
  95. COMMON_VPATH += \
  96. $(DRIVER_PATH)/painter/tft_panel \
  97. $(DRIVER_PATH)/painter/st77xx
  98. SRC += \
  99. $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
  100. $(DRIVER_PATH)/painter/st77xx/qp_st7789.c
  101. else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),gc9a01_spi)
  102. QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
  103. QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
  104. OPT_DEFS += -DQUANTUM_PAINTER_GC9A01_ENABLE -DQUANTUM_PAINTER_GC9A01_SPI_ENABLE
  105. COMMON_VPATH += \
  106. $(DRIVER_PATH)/painter/tft_panel \
  107. $(DRIVER_PATH)/painter/gc9a01
  108. SRC += \
  109. $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
  110. $(DRIVER_PATH)/painter/gc9a01/qp_gc9a01.c
  111. else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),ssd1351_spi)
  112. QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
  113. QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
  114. OPT_DEFS += -DQUANTUM_PAINTER_SSD1351_ENABLE -DQUANTUM_PAINTER_SSD1351_SPI_ENABLE
  115. COMMON_VPATH += \
  116. $(DRIVER_PATH)/painter/tft_panel \
  117. $(DRIVER_PATH)/painter/ssd1351
  118. SRC += \
  119. $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
  120. $(DRIVER_PATH)/painter/ssd1351/qp_ssd1351.c
  121. else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),sh1106_spi)
  122. QUANTUM_PAINTER_NEEDS_SURFACE := yes
  123. QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
  124. QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
  125. OPT_DEFS += -DQUANTUM_PAINTER_SH1106_ENABLE -DQUANTUM_PAINTER_SH1106_SPI_ENABLE
  126. COMMON_VPATH += \
  127. $(DRIVER_PATH)/painter/oled_panel \
  128. $(DRIVER_PATH)/painter/sh1106
  129. SRC += \
  130. $(DRIVER_PATH)/painter/oled_panel/qp_oled_panel.c \
  131. $(DRIVER_PATH)/painter/sh1106/qp_sh1106.c
  132. else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),sh1106_i2c)
  133. QUANTUM_PAINTER_NEEDS_SURFACE := yes
  134. QUANTUM_PAINTER_NEEDS_COMMS_I2C := yes
  135. OPT_DEFS += -DQUANTUM_PAINTER_SH1106_ENABLE -DQUANTUM_PAINTER_SH1106_I2C_ENABLE
  136. COMMON_VPATH += \
  137. $(DRIVER_PATH)/painter/oled_panel \
  138. $(DRIVER_PATH)/painter/sh1106
  139. SRC += \
  140. $(DRIVER_PATH)/painter/oled_panel/qp_oled_panel.c \
  141. $(DRIVER_PATH)/painter/sh1106/qp_sh1106.c
  142. endif
  143. endef
  144. # Iterate through the listed drivers for the build, including what's necessary
  145. $(foreach qp_driver,$(QUANTUM_PAINTER_DRIVERS),$(eval $(call handle_quantum_painter_driver,$(qp_driver))))
  146. # If a surface is needed, set up the required files
  147. ifeq ($(strip $(QUANTUM_PAINTER_NEEDS_SURFACE)), yes)
  148. QUANTUM_PAINTER_NEEDS_COMMS_DUMMY := yes
  149. OPT_DEFS += -DQUANTUM_PAINTER_SURFACE_ENABLE
  150. COMMON_VPATH += \
  151. $(DRIVER_PATH)/painter/generic
  152. SRC += \
  153. $(DRIVER_PATH)/painter/generic/qp_surface_common.c \
  154. $(DRIVER_PATH)/painter/generic/qp_surface_mono1bpp.c \
  155. $(DRIVER_PATH)/painter/generic/qp_surface_rgb565.c
  156. endif
  157. # If dummy comms is needed, set up the required files
  158. ifeq ($(strip $(QUANTUM_PAINTER_NEEDS_COMMS_DUMMY)), yes)
  159. OPT_DEFS += -DQUANTUM_PAINTER_DUMMY_COMMS_ENABLE
  160. VPATH += $(DRIVER_PATH)/painter/comms
  161. SRC += \
  162. $(QUANTUM_DIR)/painter/qp_comms.c \
  163. $(DRIVER_PATH)/painter/comms/qp_comms_dummy.c
  164. endif
  165. # If SPI comms is needed, set up the required files
  166. ifeq ($(strip $(QUANTUM_PAINTER_NEEDS_COMMS_SPI)), yes)
  167. OPT_DEFS += -DQUANTUM_PAINTER_SPI_ENABLE
  168. SPI_DRIVER_REQUIRED = yes
  169. VPATH += $(DRIVER_PATH)/painter/comms
  170. SRC += \
  171. $(QUANTUM_DIR)/painter/qp_comms.c \
  172. $(DRIVER_PATH)/painter/comms/qp_comms_spi.c
  173. ifeq ($(strip $(QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET)), yes)
  174. OPT_DEFS += -DQUANTUM_PAINTER_SPI_DC_RESET_ENABLE
  175. endif
  176. endif
  177. # If I2C comms is needed, set up the required files
  178. ifeq ($(strip $(QUANTUM_PAINTER_NEEDS_COMMS_I2C)), yes)
  179. OPT_DEFS += -DQUANTUM_PAINTER_I2C_ENABLE
  180. I2C_DRIVER_REQUIRED = yes
  181. VPATH += $(DRIVER_PATH)/painter/comms
  182. SRC += \
  183. $(QUANTUM_DIR)/painter/qp_comms.c \
  184. $(DRIVER_PATH)/painter/comms/qp_comms_i2c.c
  185. endif
  186. # Check if LVGL needs to be enabled
  187. ifeq ($(strip $(QUANTUM_PAINTER_LVGL_INTEGRATION)), yes)
  188. include $(QUANTUM_DIR)/painter/lvgl/rules.mk
  189. endif