rules.mk 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. # Quantum Painter Configurables
  2. QUANTUM_PAINTER_DRIVERS ?=
  3. QUANTUM_PAINTER_ANIMATIONS_ENABLE ?= yes
  4. # The list of permissible drivers that can be listed in QUANTUM_PAINTER_DRIVERS
  5. VALID_QUANTUM_PAINTER_DRIVERS := ili9163_spi ili9341_spi st7789_spi gc9a01_spi ssd1351_spi
  6. #-------------------------------------------------------------------------------
  7. OPT_DEFS += -DQUANTUM_PAINTER_ENABLE
  8. COMMON_VPATH += $(QUANTUM_DIR)/painter
  9. SRC += \
  10. $(QUANTUM_DIR)/utf8.c \
  11. $(QUANTUM_DIR)/color.c \
  12. $(QUANTUM_DIR)/painter/qp.c \
  13. $(QUANTUM_DIR)/painter/qp_stream.c \
  14. $(QUANTUM_DIR)/painter/qgf.c \
  15. $(QUANTUM_DIR)/painter/qff.c \
  16. $(QUANTUM_DIR)/painter/qp_draw_core.c \
  17. $(QUANTUM_DIR)/painter/qp_draw_codec.c \
  18. $(QUANTUM_DIR)/painter/qp_draw_circle.c \
  19. $(QUANTUM_DIR)/painter/qp_draw_ellipse.c \
  20. $(QUANTUM_DIR)/painter/qp_draw_image.c \
  21. $(QUANTUM_DIR)/painter/qp_draw_text.c
  22. # Check if people want animations... enable the defered exec if so.
  23. ifeq ($(strip $(QUANTUM_PAINTER_ANIMATIONS_ENABLE)), yes)
  24. DEFERRED_EXEC_ENABLE := yes
  25. OPT_DEFS += -DQUANTUM_PAINTER_ANIMATIONS_ENABLE
  26. endif
  27. # Comms flags
  28. QUANTUM_PAINTER_NEEDS_COMMS_SPI ?= no
  29. # Handler for each driver
  30. define handle_quantum_painter_driver
  31. CURRENT_PAINTER_DRIVER := $1
  32. ifeq ($$(filter $$(strip $$(CURRENT_PAINTER_DRIVER)),$$(VALID_QUANTUM_PAINTER_DRIVERS)),)
  33. $$(error "$$(CURRENT_PAINTER_DRIVER)" is not a valid Quantum Painter driver)
  34. else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),ili9163_spi)
  35. QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
  36. QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
  37. OPT_DEFS += -DQUANTUM_PAINTER_ILI9163_ENABLE -DQUANTUM_PAINTER_ILI9163_SPI_ENABLE
  38. COMMON_VPATH += \
  39. $(DRIVER_PATH)/painter/tft_panel \
  40. $(DRIVER_PATH)/painter/ili9xxx
  41. SRC += \
  42. $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
  43. $(DRIVER_PATH)/painter/ili9xxx/qp_ili9163.c \
  44. else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),ili9341_spi)
  45. QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
  46. QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
  47. OPT_DEFS += -DQUANTUM_PAINTER_ILI9341_ENABLE -DQUANTUM_PAINTER_ILI9341_SPI_ENABLE
  48. COMMON_VPATH += \
  49. $(DRIVER_PATH)/painter/tft_panel \
  50. $(DRIVER_PATH)/painter/ili9xxx
  51. SRC += \
  52. $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
  53. $(DRIVER_PATH)/painter/ili9xxx/qp_ili9341.c \
  54. else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),st7789_spi)
  55. QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
  56. QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
  57. OPT_DEFS += -DQUANTUM_PAINTER_ST7789_ENABLE -DQUANTUM_PAINTER_ST7789_SPI_ENABLE
  58. COMMON_VPATH += \
  59. $(DRIVER_PATH)/painter/tft_panel \
  60. $(DRIVER_PATH)/painter/st77xx
  61. SRC += \
  62. $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
  63. $(DRIVER_PATH)/painter/st77xx/qp_st7789.c
  64. else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),gc9a01_spi)
  65. QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
  66. QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
  67. OPT_DEFS += -DQUANTUM_PAINTER_GC9A01_ENABLE -DQUANTUM_PAINTER_GC9A01_SPI_ENABLE
  68. COMMON_VPATH += \
  69. $(DRIVER_PATH)/painter/tft_panel \
  70. $(DRIVER_PATH)/painter/gc9a01
  71. SRC += \
  72. $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
  73. $(DRIVER_PATH)/painter/gc9a01/qp_gc9a01.c
  74. else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),ssd1351_spi)
  75. QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
  76. QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
  77. OPT_DEFS += -DQUANTUM_PAINTER_SSD1351_ENABLE -DQUANTUM_PAINTER_SSD1351_SPI_ENABLE
  78. COMMON_VPATH += \
  79. $(DRIVER_PATH)/painter/tft_panel \
  80. $(DRIVER_PATH)/painter/ssd1351
  81. SRC += \
  82. $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
  83. $(DRIVER_PATH)/painter/ssd1351/qp_ssd1351.c
  84. endif
  85. endef
  86. # Iterate through the listed drivers for the build, including what's necessary
  87. $(foreach qp_driver,$(QUANTUM_PAINTER_DRIVERS),$(eval $(call handle_quantum_painter_driver,$(qp_driver))))
  88. # If SPI comms is needed, set up the required files
  89. ifeq ($(strip $(QUANTUM_PAINTER_NEEDS_COMMS_SPI)), yes)
  90. OPT_DEFS += -DQUANTUM_PAINTER_SPI_ENABLE
  91. QUANTUM_LIB_SRC += spi_master.c
  92. VPATH += $(DRIVER_PATH)/painter/comms
  93. SRC += \
  94. $(QUANTUM_DIR)/painter/qp_comms.c \
  95. $(DRIVER_PATH)/painter/comms/qp_comms_spi.c
  96. ifeq ($(strip $(QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET)), yes)
  97. OPT_DEFS += -DQUANTUM_PAINTER_SPI_DC_RESET_ENABLE
  98. endif
  99. endif