Просмотр исходного кода

Merge pull request #114 from alxhoff/improved_findugfx

Increased find uGFX abilities
Konstantin Oblaukhov 5 лет назад
Родитель
Сommit
985cce2f45
2 измененных файлов с 203 добавлено и 31 удалено
  1. 196 9
      cmake/FinduGFX.cmake
  2. 7 22
      cmake/uGFX_GDISP.cmake

+ 196 - 9
cmake/FinduGFX.cmake

@@ -1,22 +1,192 @@
-IF(NOT uGFX_FIND_COMPONENTS) 
-    SET(uGFX_FIND_COMPONENTS gos gos_chibios)
-    MESSAGE(STATUS "No uGFX components specified, using default: ${uGFX_FIND_COMPONENTS}")
+SET(uGFX_COMPONENTS gfx gadc gaudio gdisp_mcufont gdisp_fonts
+    gdisp_image gdriver gdisp gevent gfile ginput gmisc gos
+    gdisp_pixmap gqueue gtimer gtrans gwin
+    )
+
+SET(uGFX_GDISP_DRIVERS ED060SC4  AlteraFramereader framebuffer ED060SC4 Fb24bpp
+    HX8347D ILI93xx ILI9320 ILI9325 ILI9341 ILI9481 LGDP4532 Nokia6610GE8
+    Nokia6610GE12 PCD8544 PCF8812 R61505U RA8875 S6D1121 SPFD54124B SSD1289
+    SSD1306 SSD1331 SSD1351 SSD1963 SSD2119 ST7565
+    # STM32F429iDiscovery
+    STM32LTDC TestStub TLS8204)
+
+SET(uGFX_REQUIRED_COMPONENTS gfx gos gdisp gdriver)
+LIST(APPEND uGFX_COMPONENTS ${uGFX_REQUIRED_COMPONENTS})
+LIST(APPEND uGFX_COMPONENTS ${uGFX_GDISP_DRIVERS})
+
+SET(uGFX_PREFIX gfx)
+
+SET(uGFX_HEADERS
+    ${uGFX_PREFIX}.h
+    ${uGFX_PREFIX}_options.h
+    ${uGFX_PREFIX}_types.h
+    ${uGFX_PREFIX}_compilers.h
+    )
+
+SET(uGFX_SRCS
+    ${uGFX_PREFIX}.c
+    ${uGFX_PREFIX}_mk.c
+    )
+
+if(NOT uGFX_LLD_CONFIG)
+    MESSAGE("No uGFX_LLD_CONFIG given, this may result in an error")
+ELSE()
+    LIST(APPEND uGFX_INCLUDE_DIRS ${uGFX_LLD_CONFIG})
+ENDIF()
+
+# Set defaults if no components given
+IF(NOT uGFX_FIND_COMPONENTS)
+    SET(uGFX_FIND_COMPONENTS uGFX_COMPONENTS)
+    MESSAGE(STATUS "No uGFX components specified, using all: ${uGFX_COMPONENTS}")
+ENDIF()
+
+
+# Required components
+FOREACH(cmp ${uGFX_REQUIRED_COMPONENTS})
+    LIST(FIND uGFX_FIND_COMPONENTS ${cmp} uGFX_FOUND_INDEX)
+    IF(${uGFX_FOUND_INDEX} LESS 0)
+        LIST(APPEND uGFX_FIND_COMPONENTS ${cmp})
+    ENDIF()
+ENDFOREACH()
+
+IF(NOT uGFX_DRIVERS)
+    MESSAGE("No uGFX_DRIVERS set, available drivers: ${uGFX_GDISP_DRIVERS}")
+ELSE()
+    FOREACH(driver ${uGFX_DRIVERS})
+        LIST(FIND uGFX_GDISP_DRIVERS ${driver} DRIVER_INDEX)
+        IF(${DRIVER_INDEX} LESS 0)
+            LIST(APPEND uGFX_FIND_DRIVERS ${driver})
+        ENDIF()
+    ENDFOREACH()
 ENDIF()
 ENDIF()
 
 
-LIST(APPEND uGFX_FIND_COMPONENTS gfx gdriver)
+FOREACH(cmp ${uGFX_FIND_COMPONENTS})
+    LIST(FIND uGFX_COMPONENTS ${cmp} uGFX_FOUND_INDEX)
+    IF(${uGFX_FOUND_INDEX} LESS 0)
+        MESSAGE(FATAL_ERROR "Unknown uGFX Module: ${cmp}. Available modules: ${uGFX_COMPONENTS}")
+    ELSE()
+    ENDIF()
+ENDFOREACH()
+
+LIST(REMOVE_DUPLICATES uGFX_FIND_COMPONENTS)
+
+INCLUDE(uGFX_GDISP)
 
 
 SET(uGFX_gfx_SEARCH_PATH ${uGFX_DIR} ${uGFX_DIR}/src)
 SET(uGFX_gfx_SEARCH_PATH ${uGFX_DIR} ${uGFX_DIR}/src)
 SET(uGFX_gfx_HEADERS gfx.h)
 SET(uGFX_gfx_HEADERS gfx.h)
 SET(uGFX_gfx_SOURCES gfx.c)
 SET(uGFX_gfx_SOURCES gfx.c)
 
 
+SET(uGFX_gadc_SEARCH_PATH ${uGFX_DIR}/src/gadc)
+SET(uGFX_gadc_HEADERS gadc_driver.h gadc.h gadc_options.h gadc_rules.h)
+SET(uGFX_gadc_SOURCES gadc.c)
+
+SET(uGFX_gaudio_SERCH_PATH ${uGFX_DIR}/src/gaudio)
+SET(uGFX_gaudio_HEADERS gadc_driver_record.h gaudio_driver_play.h
+    gaudio.h gaudio_options.h gaudio_rules.h)
+SET(uGFX_gaudio_SOURCES gaudio.c)
+
 SET(uGFX_gdriver_SEARCH_PATH ${uGFX_DIR}/src/gdriver)
 SET(uGFX_gdriver_SEARCH_PATH ${uGFX_DIR}/src/gdriver)
 SET(uGFX_gdriver_HEADERS gdriver_options.h gdriver_rules.h gdriver.h)
 SET(uGFX_gdriver_HEADERS gdriver_options.h gdriver_rules.h gdriver.h)
 SET(uGFX_gdriver_SOURCES gdriver.c)
 SET(uGFX_gdriver_SOURCES gdriver.c)
 
 
-INCLUDE(uGFX_GOS)
-INCLUDE(uGFX_GDISP)
+SET(uGFX_gevent_SEARCH_PATH ${uGFX_DIR}/src/gevent)
+SET(uGFX_gevent_HEADERS gevent.h gevent_options.h gevent_rules.h)
+SET(uGFX_gevent_SOURCES gevent.c)
+
+SET(uGFX_gfile_SEARCH_PATH ${uGFX_DIR}/src/gfile)
+SET(uGFX_gfile_HEADERS gfile_fatfs_wrapper.h gfile_fs.h gfile.h gfile_options.h
+    gfile_petitfs_wrapper.h gfile_rules.h)
+SET(uGFX_gfile_SOURCES gfile.c gfile_fatfs_diskio_chibios.c gfile_fatfs_wrapper.c
+    gfile_fs_chibios.c gfile_fs_fatfs.c gfile_fs_mem.c gfile_fs_native.c
+    gfile_fs_petitfs.c gfile_fs_ram.c gfile_fs_rom.c gfile_fs_strings.c
+    gfile_petitfs_diskio_chibios.c gfile_petitfs_wrapper.c gfile_printg.c
+    gfile_scang.c gfile_stdio.c)
+
+SET(uGFX_ginput_SEARCH_PATH ${uGFX_DIR}/src/ginput)
+SET(uGFX_ginput_HEADERS ginput_dial.h ginput_driver_dial.h ginput_driver_keyboard.h
+    ginput_driver_mouse.h ginput_driver_toggle.h ginput.h ginput_keyboard.h
+    ginput_keyboard_microcode.h ginput_mouse.h ginput_options.h ginput_rules.h
+    ginput_toggle.h)
+SET(uGFX_ginput_SOURCES ginput.c ginput_dial.c ginput_keyboard.c
+    ginput_keyboard_microcode.c ginput_mouse.c ginput_toggle.c)
+
+SET(uGFX_gmisc_SEARCH_PATH ${uGFX_DIR}/src/gmisc)
+SET(uGFX_gmisc_HEADERS gmisc.h gmisc_options.h gmisc_rules.h)
+SET(uGFX_gmisc_SOURCES gmisc_arrayops.c gmisc.c gmisc_hittest.c gmisc_matrix2d.c
+    gmisc_trig.c)
+
+SET(uGFX_gos_SEARCH_PATH ${uGFX_DIR}/src/gos)
+SET(uGFX_gos_HEADERS
+    gos_arduino.h gos_chibios.h gos_cmsis2.h gos_cmsis.h gos_ecos.h
+    gos_freertos.h gos.h gos_keil.h gos_linux.h gos_nios.h gos_options.h
+    gos_osx.h gos_qt.h gos_raw32.h gos_rawrtos.h gos_rtx5.h gos_rules.h
+    gos_win32.h gos_x_heap.h gos_x_threads_cortexm01.h gos_x_threads_cortexm347.h
+    gos_x_threads_cortexm47fp.h gos_x_threads.h gos_zephyr.h
+    )
+SET(uGFX_gos_SOURCES gos_arduino.c gos_chibios.c gos_cmsis2.c gos_cmsis.c
+    gos_ecos.c gos_freertos.c gos_linux.c gos_nios.c gos_osx.c gos_raw32.c
+    gos_rawrtos.c gos_win32.c gos_x_heap.c gos_x_threads.c gos_zephyr.c)
+
+SET(uGFX_gqueue_SEARCH_PATH ${uGFX_DIR}/src/gqueue)
+SET(uGFX_gqueue_HEADERS gqueue.h gqueue_options.h gqueue_rules.h)
+SET(uGFX_gqueue_SOURCES gqueue.c)
+
+SET(uGFX_gtimer_SEARCH_PATH ${uGFX_DIR}/src/gtimer)
+SET(uGFX_gtimer_HEADERS gtimer.h gtimer_options.h gtimer_rules.h)
+SET(uGFX_gtimer_SOURCES gtimer.c)
+
+SET(uGFX_gtrans_SEARCH_PATH ${uGFX_DIR}/src/gtrans)
+SET(uGFX_gtrans_HEADERS gtrans.h gtrans_options.h gtrans_rules.h)
+SET(uGFX_gtrans_SOURCES gtrans.c)
+
+SET(uGFX_gwin_SEARCH_PATH ${uGFX_DIR}/src/gwin)
+SET(uGFX_gwin_HEADERS gwin_button.h gwin_container.h gwin.h gwin_label.h gwin_radio.h
+    gwin_textedit.h gwin_checkbox.h gwin_frame.h gwin_image.h gwin_list.h
+    gwin_rules.h gwin_widget.h gwin_class.h gwin_gl3d.h gwin_keyboard.h gwin_options.h
+    gwin_slider.h gwin_console.h gwin_graph.h gwin_keyboard_layout.h
+    gwin_progressbar.h gwin_tabset.h
+    )
+SET(uGFX_gwin_SOURCES gwin_button.c gwin_container.c gwin_image.c gwin_list.c
+    gwin_slider.c gwin_wm.c gwin.c gwin_frame.c gwin_keyboard.c gwin_tabset.c
+    gwin_checkbox.c gwin_gl3d.c gwin_keyboard_layout.c gwin_progressbar.c gwin_textedit.c
+    gwin_console.c gwin_graph.c gwin_label.c gwin_radio.c gwin_widget.c)
+
+SET(uGFX_gdisp_fonts_SEARCH_PATH
+    ${uGFX_DIR}/src/gdisp/fonts
+    )
+
+SET(uGFX_gdisp_fonts_HEADERS
+    fonts.h
+    )
+SET(uGFX_gdisp_fonts_SOURCES
+    DejaVuSans16_aa.c DejaVuSans24_aa.c DejaVuSansBold12_aa.c fixed_10x20.c
+    fixed_7x14.c UI2.c DejaVuSans10.c DejaVuSans16.c DejaVuSans24.c DejaVuSansBold12.c
+    DejaVuSans12_aa.c  DejaVuSans20_aa.c  DejaVuSans32_aa.c  fixed_5x8.c
+    LargeNumbers.c DejaVuSans12.c DejaVuSans20.c DejaVuSans32.c UI1.c
+    )
+
+SET(uGFX_gdisp_mcufont_SEARCH_PATH
+    ${uGFX_DIR}/src/gdisp
+    ${uGFX_DIR}/src/gdisp/mcufont
+    )
+SET(uGFX_gdisp_mcufont_HEADERS
+    mcufont.h mf_bwfont.h mf_config.h mf_encoding.h mf_font.h mf_justify.h
+    mf_kerning.h mf_rlefont.h mf_scaledfont.h mf_wordwrap.h)
+SET(uGFX_gdisp_mcufont_SOURCES
+    mf_bwfont.c mf_encoding.c mf_font.c mf_justify.c mf_kerning.c mf_rlefont.c
+    mf_scaledfont.c mf_wordwrap.c gdisp_fonts.c)
+
+SET(uGFX_gdisp_image_SEARCH_PATH ${uGFX_DIR}/src/gdisp)
+SET(uGFX_gdisp_image_HEADERS gdisp_image.h)
+SET(uGFX_gdisp_image_SOURCES
+    gdisp_image_bmp.c gdisp_image_gif.c gdisp_image_gif.c gdisp_image_jpg.c
+    gdisp_image_native.c gdisp_image_png.c gdisp_image.c)
+
+SET(uGFX_gdisp_pixmap_SEARCH_PATH ${uGFX_DIR}/src/gdisp)
+SET(uGFX_gdisp_pixmap_HEADERS gdisp_pixmap.h)
+SET(uGFX_gdisp_pixmap_SOURCES gdisp_pixmap.c)
+
 
 
-SET(uGFX_COMPONENTS gfx gdriver gos ${uGFX_GOS_MODULES} gdisp ${uGFX_GDISP_MODULES})
 
 
 FOREACH(comp ${uGFX_FIND_COMPONENTS})
 FOREACH(comp ${uGFX_FIND_COMPONENTS})
     LIST(FIND uGFX_COMPONENTS ${comp} INDEX)
     LIST(FIND uGFX_COMPONENTS ${comp} INDEX)
@@ -25,14 +195,31 @@ FOREACH(comp ${uGFX_FIND_COMPONENTS})
     ENDIF()
     ENDIF()
     IF(uGFX_${comp}_SOURCES)
     IF(uGFX_${comp}_SOURCES)
         FOREACH(source ${uGFX_${comp}_SOURCES})
         FOREACH(source ${uGFX_${comp}_SOURCES})
-            FIND_FILE(uGFX_${comp}_${source} NAMES ${source} PATHS ${uGFX_${comp}_SEARCH_PATH} NO_DEFAULT_PATH CMAKE_FIND_ROOT_PATH_BOTH)
+            FIND_FILE(uGFX_${comp}_${source}
+                NAMES ${source}
+                PATHS ${uGFX_${comp}_SEARCH_PATH}
+                NO_DEFAULT_PATH
+                CMAKE_FIND_ROOT_PATH_BOTH
+                )
             LIST(APPEND uGFX_SOURCES ${uGFX_${comp}_${source}})
             LIST(APPEND uGFX_SOURCES ${uGFX_${comp}_${source}})
         ENDFOREACH()
         ENDFOREACH()
     ENDIF()
     ENDIF()
     IF(uGFX_${comp}_HEADERS)
     IF(uGFX_${comp}_HEADERS)
         FOREACH(header ${uGFX_${comp}_HEADERS})
         FOREACH(header ${uGFX_${comp}_HEADERS})
-            FIND_PATH(uGFX_${comp}_${header}_INCLUDE_DIR NAMES ${header} PATHS ${uGFX_${comp}_SEARCH_PATH} NO_DEFAULT_PATH CMAKE_FIND_ROOT_PATH_BOTH)
+            FIND_PATH(uGFX_${comp}_${header}_INCLUDE_DIR
+                NAMES ${header}
+                PATHS ${uGFX_${comp}_SEARCH_PATH}
+                NO_DEFAULT_PATH
+                CMAKE_FIND_ROOT_PATH_BOTH
+                )
             LIST(APPEND uGFX_INCLUDE_DIRS ${uGFX_${comp}_${header}_INCLUDE_DIR})
             LIST(APPEND uGFX_INCLUDE_DIRS ${uGFX_${comp}_${header}_INCLUDE_DIR})
         ENDFOREACH()
         ENDFOREACH()
     ENDIF()
     ENDIF()
 ENDFOREACH()
 ENDFOREACH()
+
+LIST(REMOVE_DUPLICATES uGFX_INCLUDE_DIRS)
+LIST(REMOVE_DUPLICATES uGFX_SOURCES)
+
+INCLUDE(FindPackageHandleStandardArgs)
+
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(uGFX DEFAULT_MSG uGFX_INCLUDE_DIRS uGFX_SOURCES)

+ 7 - 22
cmake/uGFX_GDISP.cmake

@@ -1,28 +1,13 @@
-SET(uGFX_GDISP_MODULES gdisp_fonts gdisp_image gdisp_pixmap)
-
 SET(uGFX_gdisp_SEARCH_PATH ${uGFX_DIR}/src/gdisp)
 SET(uGFX_gdisp_SEARCH_PATH ${uGFX_DIR}/src/gdisp)
 SET(uGFX_gdisp_HEADERS gdisp_colors.h gdisp_options.h gdisp_rules.h)
 SET(uGFX_gdisp_HEADERS gdisp_colors.h gdisp_options.h gdisp_rules.h)
 SET(uGFX_gdisp_SOURCES gdisp.c)
 SET(uGFX_gdisp_SOURCES gdisp.c)
- 
-SET(uGFX_gdisp_fonts_SEARCH_PATH ${uGFX_DIR}/src/gdisp ${uGFX_DIR}/src/gdisp/mcufont)
-SET(uGFX_gdisp_fonts_HEADERS mcufont.h mf_bwfont.h mf_config.h mf_encoding.h mf_font.h mf_justify.h mf_kerning.h mf_rlefont.h mf_scaledfont.h mf_wordwrap.h)
-SET(uGFX_gdisp_fonts_SOURCES mf_bwfont.c mf_encoding.c mf_font.c mf_justify.c mf_kerning.c mf_rlefont.c mf_scaledfont.c mf_wordwrap.c gdisp_fonts.c)
-
-SET(uGFX_gdisp_image_SEARCH_PATH ${uGFX_DIR}/src/gdisp)
-SET(uGFX_gdisp_image_HEADERS gdisp_image.h)
-SET(uGFX_gdisp_image_SOURCES gdisp_image_bmp.c gdisp_image_gif.c gdisp_image_gif.c gdisp_image_jpg.c gdisp_image_native.c gdisp_image_png.c gdisp_image.c)
-
-SET(uGFX_gdisp_pixmap_SEARCH_PATH ${uGFX_DIR}/src/gdisp)
-SET(uGFX_gdisp_pixmap_HEADERS gdisp_pixmap.h)
-SET(uGFX_gdisp_pixmap_SOURCES gdisp_pixmap.c)
-
-SET(uGFX_GDISP_DRIVERS ED060SC4 framebuffer HX8347D ILI93xx ILI9320 ILI9325 ILI9341 ILI9481 LGDP4532 
-  Nokia6610GE8 Nokia6610GE12 PCD8544 PCF8812 R61505U RA8875 S6D1121 SPFD54124B SSD1289 SSD1306 SSD1331 
-  SSD1351 SSD1963 SSD2119 ST7565 STM32F429iDiscovery STM32LTDC TestStub TLS8204)
 
 
 FOREACH(driver ${uGFX_GDISP_DRIVERS})
 FOREACH(driver ${uGFX_GDISP_DRIVERS})
-  SET(uGFX_driver_${driver}_SEARCH_PATH ${uGFX_DIR}/drivers/gdisp/${driver})
-  SET(uGFX_driver_${driver}_SOURCES gdisp_lld_${driver}.c)
-  SET(uGFX_driver_${driver}_HEADERS gdisp_lld_config.h)
-  LIST(APPEND uGFX_GDISP_MODULES driver_${driver})
+    LIST(FIND uGFX_FIND_COMPONENTS ${driver} DRIVER_INDEX)
+    IF(NOT ${DRIVER_INDEX} LESS 0)
+        SET(uGFX_${driver}_SEARCH_PATH ${uGFX_DIR}/drivers/gdisp/${driver})
+        SET(uGFX_${driver}_SOURCES gdisp_lld_${driver}.c)
+        SET(uGFX_${driver}_HEADERS gdisp_lld_config.h)
+        LIST(APPEND uGFX_GDISP_MODULES ${driver})
+    ENDIF()
 ENDFOREACH()
 ENDFOREACH()