FinduGFX.cmake 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. SET(uGFX_COMPONENTS gfx gadc gaudio gdisp_mcufont gdisp_fonts
  2. gdisp_image gdriver gdisp gevent gfile ginput gmisc gos
  3. gdisp_pixmap gqueue gtimer gtrans gwin
  4. )
  5. SET(uGFX_GDISP_DRIVERS ED060SC4 AlteraFramereader framebuffer ED060SC4 Fb24bpp
  6. HX8347D ILI93xx ILI9320 ILI9325 ILI9341 ILI9481 LGDP4532 Nokia6610GE8
  7. Nokia6610GE12 PCD8544 PCF8812 R61505U RA8875 S6D1121 SPFD54124B SSD1289
  8. SSD1306 SSD1331 SSD1351 SSD1963 SSD2119 ST7565
  9. # STM32F429iDiscovery
  10. STM32LTDC TestStub TLS8204)
  11. SET(uGFX_REQUIRED_COMPONENTS gfx gos gdisp gdriver)
  12. LIST(APPEND uGFX_COMPONENTS ${uGFX_REQUIRED_COMPONENTS})
  13. LIST(APPEND uGFX_COMPONENTS ${uGFX_GDISP_DRIVERS})
  14. SET(uGFX_PREFIX gfx)
  15. SET(uGFX_HEADERS
  16. ${uGFX_PREFIX}.h
  17. ${uGFX_PREFIX}_options.h
  18. ${uGFX_PREFIX}_types.h
  19. ${uGFX_PREFIX}_compilers.h
  20. )
  21. SET(uGFX_SRCS
  22. ${uGFX_PREFIX}.c
  23. ${uGFX_PREFIX}_mk.c
  24. )
  25. if(NOT uGFX_LLD_CONFIG)
  26. MESSAGE("No uGFX_LLD_CONFIG given, this may result in an error")
  27. ELSE()
  28. LIST(APPEND uGFX_INCLUDE_DIRS ${uGFX_LLD_CONFIG})
  29. ENDIF()
  30. # Set defaults if no components given
  31. IF(NOT uGFX_FIND_COMPONENTS)
  32. SET(uGFX_FIND_COMPONENTS uGFX_COMPONENTS)
  33. MESSAGE(STATUS "No uGFX components specified, using all: ${uGFX_COMPONENTS}")
  34. ENDIF()
  35. # Required components
  36. FOREACH(cmp ${uGFX_REQUIRED_COMPONENTS})
  37. LIST(FIND uGFX_FIND_COMPONENTS ${cmp} uGFX_FOUND_INDEX)
  38. IF(${uGFX_FOUND_INDEX} LESS 0)
  39. LIST(APPEND uGFX_FIND_COMPONENTS ${cmp})
  40. ENDIF()
  41. ENDFOREACH()
  42. IF(NOT uGFX_DRIVERS)
  43. MESSAGE("No uGFX_DRIVERS set, available drivers: ${uGFX_GDISP_DRIVERS}")
  44. ELSE()
  45. FOREACH(driver ${uGFX_DRIVERS})
  46. LIST(FIND uGFX_GDISP_DRIVERS ${driver} DRIVER_INDEX)
  47. IF(${DRIVER_INDEX} LESS 0)
  48. LIST(APPEND uGFX_FIND_DRIVERS ${driver})
  49. ENDIF()
  50. ENDFOREACH()
  51. ENDIF()
  52. FOREACH(cmp ${uGFX_FIND_COMPONENTS})
  53. LIST(FIND uGFX_COMPONENTS ${cmp} uGFX_FOUND_INDEX)
  54. IF(${uGFX_FOUND_INDEX} LESS 0)
  55. MESSAGE(FATAL_ERROR "Unknown uGFX Module: ${cmp}. Available modules: ${uGFX_COMPONENTS}")
  56. ELSE()
  57. ENDIF()
  58. ENDFOREACH()
  59. LIST(REMOVE_DUPLICATES uGFX_FIND_COMPONENTS)
  60. INCLUDE(uGFX_GDISP)
  61. SET(uGFX_gfx_SEARCH_PATH ${uGFX_DIR} ${uGFX_DIR}/src)
  62. SET(uGFX_gfx_HEADERS gfx.h)
  63. SET(uGFX_gfx_SOURCES gfx.c)
  64. SET(uGFX_gadc_SEARCH_PATH ${uGFX_DIR}/src/gadc)
  65. SET(uGFX_gadc_HEADERS gadc_driver.h gadc.h gadc_options.h gadc_rules.h)
  66. SET(uGFX_gadc_SOURCES gadc.c)
  67. SET(uGFX_gaudio_SERCH_PATH ${uGFX_DIR}/src/gaudio)
  68. SET(uGFX_gaudio_HEADERS gadc_driver_record.h gaudio_driver_play.h
  69. gaudio.h gaudio_options.h gaudio_rules.h)
  70. SET(uGFX_gaudio_SOURCES gaudio.c)
  71. SET(uGFX_gdriver_SEARCH_PATH ${uGFX_DIR}/src/gdriver)
  72. SET(uGFX_gdriver_HEADERS gdriver_options.h gdriver_rules.h gdriver.h)
  73. SET(uGFX_gdriver_SOURCES gdriver.c)
  74. SET(uGFX_gevent_SEARCH_PATH ${uGFX_DIR}/src/gevent)
  75. SET(uGFX_gevent_HEADERS gevent.h gevent_options.h gevent_rules.h)
  76. SET(uGFX_gevent_SOURCES gevent.c)
  77. SET(uGFX_gfile_SEARCH_PATH ${uGFX_DIR}/src/gfile)
  78. SET(uGFX_gfile_HEADERS gfile_fatfs_wrapper.h gfile_fs.h gfile.h gfile_options.h
  79. gfile_petitfs_wrapper.h gfile_rules.h)
  80. SET(uGFX_gfile_SOURCES gfile.c gfile_fatfs_diskio_chibios.c gfile_fatfs_wrapper.c
  81. gfile_fs_chibios.c gfile_fs_fatfs.c gfile_fs_mem.c gfile_fs_native.c
  82. gfile_fs_petitfs.c gfile_fs_ram.c gfile_fs_rom.c gfile_fs_strings.c
  83. gfile_petitfs_diskio_chibios.c gfile_petitfs_wrapper.c gfile_printg.c
  84. gfile_scang.c gfile_stdio.c)
  85. SET(uGFX_ginput_SEARCH_PATH ${uGFX_DIR}/src/ginput)
  86. SET(uGFX_ginput_HEADERS ginput_dial.h ginput_driver_dial.h ginput_driver_keyboard.h
  87. ginput_driver_mouse.h ginput_driver_toggle.h ginput.h ginput_keyboard.h
  88. ginput_keyboard_microcode.h ginput_mouse.h ginput_options.h ginput_rules.h
  89. ginput_toggle.h)
  90. SET(uGFX_ginput_SOURCES ginput.c ginput_dial.c ginput_keyboard.c
  91. ginput_keyboard_microcode.c ginput_mouse.c ginput_toggle.c)
  92. SET(uGFX_gmisc_SEARCH_PATH ${uGFX_DIR}/src/gmisc)
  93. SET(uGFX_gmisc_HEADERS gmisc.h gmisc_options.h gmisc_rules.h)
  94. SET(uGFX_gmisc_SOURCES gmisc_arrayops.c gmisc.c gmisc_hittest.c gmisc_matrix2d.c
  95. gmisc_trig.c)
  96. SET(uGFX_gos_SEARCH_PATH ${uGFX_DIR}/src/gos)
  97. SET(uGFX_gos_HEADERS
  98. gos_arduino.h gos_chibios.h gos_cmsis2.h gos_cmsis.h gos_ecos.h
  99. gos_freertos.h gos.h gos_keil.h gos_linux.h gos_nios.h gos_options.h
  100. gos_osx.h gos_qt.h gos_raw32.h gos_rawrtos.h gos_rtx5.h gos_rules.h
  101. gos_win32.h gos_x_heap.h gos_x_threads_cortexm01.h gos_x_threads_cortexm347.h
  102. gos_x_threads_cortexm47fp.h gos_x_threads.h gos_zephyr.h
  103. )
  104. SET(uGFX_gos_SOURCES gos_arduino.c gos_chibios.c gos_cmsis2.c gos_cmsis.c
  105. gos_ecos.c gos_freertos.c gos_linux.c gos_nios.c gos_osx.c gos_raw32.c
  106. gos_rawrtos.c gos_win32.c gos_x_heap.c gos_x_threads.c gos_zephyr.c)
  107. SET(uGFX_gqueue_SEARCH_PATH ${uGFX_DIR}/src/gqueue)
  108. SET(uGFX_gqueue_HEADERS gqueue.h gqueue_options.h gqueue_rules.h)
  109. SET(uGFX_gqueue_SOURCES gqueue.c)
  110. SET(uGFX_gtimer_SEARCH_PATH ${uGFX_DIR}/src/gtimer)
  111. SET(uGFX_gtimer_HEADERS gtimer.h gtimer_options.h gtimer_rules.h)
  112. SET(uGFX_gtimer_SOURCES gtimer.c)
  113. SET(uGFX_gtrans_SEARCH_PATH ${uGFX_DIR}/src/gtrans)
  114. SET(uGFX_gtrans_HEADERS gtrans.h gtrans_options.h gtrans_rules.h)
  115. SET(uGFX_gtrans_SOURCES gtrans.c)
  116. SET(uGFX_gwin_SEARCH_PATH ${uGFX_DIR}/src/gwin)
  117. SET(uGFX_gwin_HEADERS gwin_button.h gwin_container.h gwin.h gwin_label.h gwin_radio.h
  118. gwin_textedit.h gwin_checkbox.h gwin_frame.h gwin_image.h gwin_list.h
  119. gwin_rules.h gwin_widget.h gwin_class.h gwin_gl3d.h gwin_keyboard.h gwin_options.h
  120. gwin_slider.h gwin_console.h gwin_graph.h gwin_keyboard_layout.h
  121. gwin_progressbar.h gwin_tabset.h
  122. )
  123. SET(uGFX_gwin_SOURCES gwin_button.c gwin_container.c gwin_image.c gwin_list.c
  124. gwin_slider.c gwin_wm.c gwin.c gwin_frame.c gwin_keyboard.c gwin_tabset.c
  125. gwin_checkbox.c gwin_gl3d.c gwin_keyboard_layout.c gwin_progressbar.c gwin_textedit.c
  126. gwin_console.c gwin_graph.c gwin_label.c gwin_radio.c gwin_widget.c)
  127. SET(uGFX_gdisp_fonts_SEARCH_PATH
  128. ${uGFX_DIR}/src/gdisp/fonts
  129. )
  130. SET(uGFX_gdisp_fonts_HEADERS
  131. fonts.h
  132. )
  133. SET(uGFX_gdisp_fonts_SOURCES
  134. DejaVuSans16_aa.c DejaVuSans24_aa.c DejaVuSansBold12_aa.c fixed_10x20.c
  135. fixed_7x14.c UI2.c DejaVuSans10.c DejaVuSans16.c DejaVuSans24.c DejaVuSansBold12.c
  136. DejaVuSans12_aa.c DejaVuSans20_aa.c DejaVuSans32_aa.c fixed_5x8.c
  137. LargeNumbers.c DejaVuSans12.c DejaVuSans20.c DejaVuSans32.c UI1.c
  138. )
  139. SET(uGFX_gdisp_mcufont_SEARCH_PATH
  140. ${uGFX_DIR}/src/gdisp
  141. ${uGFX_DIR}/src/gdisp/mcufont
  142. )
  143. SET(uGFX_gdisp_mcufont_HEADERS
  144. mcufont.h mf_bwfont.h mf_config.h mf_encoding.h mf_font.h mf_justify.h
  145. mf_kerning.h mf_rlefont.h mf_scaledfont.h mf_wordwrap.h)
  146. SET(uGFX_gdisp_mcufont_SOURCES
  147. mf_bwfont.c mf_encoding.c mf_font.c mf_justify.c mf_kerning.c mf_rlefont.c
  148. mf_scaledfont.c mf_wordwrap.c gdisp_fonts.c)
  149. SET(uGFX_gdisp_image_SEARCH_PATH ${uGFX_DIR}/src/gdisp)
  150. SET(uGFX_gdisp_image_HEADERS gdisp_image.h)
  151. SET(uGFX_gdisp_image_SOURCES
  152. gdisp_image_bmp.c gdisp_image_gif.c gdisp_image_gif.c gdisp_image_jpg.c
  153. gdisp_image_native.c gdisp_image_png.c gdisp_image.c)
  154. SET(uGFX_gdisp_pixmap_SEARCH_PATH ${uGFX_DIR}/src/gdisp)
  155. SET(uGFX_gdisp_pixmap_HEADERS gdisp_pixmap.h)
  156. SET(uGFX_gdisp_pixmap_SOURCES gdisp_pixmap.c)
  157. FOREACH(comp ${uGFX_FIND_COMPONENTS})
  158. LIST(FIND uGFX_COMPONENTS ${comp} INDEX)
  159. IF(INDEX EQUAL -1)
  160. MESSAGE(FATAL_ERROR "Unknown uGFX component: ${comp}\nSupported uGFX components: ${uGFX_COMPONENTS}")
  161. ENDIF()
  162. IF(uGFX_${comp}_SOURCES)
  163. FOREACH(source ${uGFX_${comp}_SOURCES})
  164. FIND_FILE(uGFX_${comp}_${source}
  165. NAMES ${source}
  166. PATHS ${uGFX_${comp}_SEARCH_PATH}
  167. NO_DEFAULT_PATH
  168. CMAKE_FIND_ROOT_PATH_BOTH
  169. )
  170. LIST(APPEND uGFX_SOURCES ${uGFX_${comp}_${source}})
  171. ENDFOREACH()
  172. ENDIF()
  173. IF(uGFX_${comp}_HEADERS)
  174. FOREACH(header ${uGFX_${comp}_HEADERS})
  175. FIND_PATH(uGFX_${comp}_${header}_INCLUDE_DIR
  176. NAMES ${header}
  177. PATHS ${uGFX_${comp}_SEARCH_PATH}
  178. NO_DEFAULT_PATH
  179. CMAKE_FIND_ROOT_PATH_BOTH
  180. )
  181. LIST(APPEND uGFX_INCLUDE_DIRS ${uGFX_${comp}_${header}_INCLUDE_DIR})
  182. ENDFOREACH()
  183. ENDIF()
  184. ENDFOREACH()
  185. LIST(REMOVE_DUPLICATES uGFX_INCLUDE_DIRS)
  186. LIST(REMOVE_DUPLICATES uGFX_SOURCES)
  187. INCLUDE(FindPackageHandleStandardArgs)
  188. FIND_PACKAGE_HANDLE_STANDARD_ARGS(uGFX DEFAULT_MSG uGFX_INCLUDE_DIRS uGFX_SOURCES)