rules.mk 9.3 KB

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