1
0

rules.mk 8.8 KB

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