logo

qmk_firmware

custom branch of QMK firmware git clone https://anongit.hacktivis.me/git/qmk_firmware.git

rules.mk (11671B)


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