FindFATFS.cmake 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. IF(NOT STM32Cube_DIR)
  2. SET(STM32Cube_DIR "/opt/STM32Cube_FW_F1_V1.2.0")
  3. MESSAGE(STATUS "No STM32Cube_DIR specified, using default: " ${STM32Cube_DIR})
  4. ENDIF()
  5. SET(FATFS_COMMON_SOURCES
  6. diskio.c
  7. ff.c
  8. ff_gen_drv.c
  9. )
  10. CMAKE_POLICY(SET CMP0057 NEW)
  11. IF(NOT STORAGE_DRIVER)
  12. MESSAGE(STATUS "No storage driver specified, please SET STORAGE_DRIVER to {SDCARD, SDRAM, SRAM, USBH}")
  13. else()
  14. if("SDCARD" IN_LIST STORAGE_DRIVER)
  15. LIST(APPEND FATFS_DRIVER_SOURCES sd_diskio.c)
  16. endif()
  17. if("SDRAM" IN_LIST STORAGE_DRIVER)
  18. LIST(APPEND FATFS_DRIVER_SOURCES sdram_diskio.c)
  19. endif()
  20. if("SRAM" IN_LIST STORAGE_DRIVER)
  21. LIST(APPEND FATFS_DRIVER_SOURCES sram_diskio.c)
  22. endif()
  23. if("USBH" IN_LIST STORAGE_DRIVER)
  24. LIST(APPEND FATFS_DRIVER_SOURCES usbh_diskio.c)
  25. endif()
  26. endif()
  27. SET(FATFS_OPTION_SOURCES syscall.c unicode.c)
  28. #if(CODE_PAGE EQUAL CP932)
  29. #list(APPEND FATFS_OPTION_SOURCES cc932.c)
  30. #( cc936.c
  31. # cc949.c
  32. # cc950.c
  33. # ccsbcs.c
  34. # unicode.c
  35. #)
  36. SET(FATFS_COMMON_HEADERS
  37. diskio.h
  38. ff.h
  39. ff_gen_drv.h
  40. ffconf_template.h
  41. integer.h
  42. )
  43. SET(FATFS_DRIVER_HEADERS
  44. sd_diskio.h
  45. sdram_diskio.h
  46. sram_diskio.h
  47. usbh_diskio.h
  48. )
  49. FIND_PATH(FATFS_COMMON_INCLUDE_DIR ${FATFS_COMMON_HEADERS}
  50. HINTS ${STM32Cube_DIR}/Middlewares/Third_Party/FatFs/src
  51. CMAKE_FIND_ROOT_PATH_BOTH
  52. )
  53. FIND_PATH(FATFS_DRIVER_INCLUDE_DIR ${FATFS_DRIVER_HEADERS}
  54. HINTS ${STM32Cube_DIR}/Middlewares/Third_Party/FatFs/src/drivers/
  55. CMAKE_FIND_ROOT_PATH_BOTH
  56. )
  57. IF(${FATFS_DRIVER_INCLUDE_DIR} STREQUAL FATFS_DRIVER_INCLUDE_DIR-NOTFOUND)
  58. MESSAGE("Driver header files not located in STM firemware, please manually include the appropriate X_diskio.h directory")
  59. SET(FATFS_INCLUDE_DIRS
  60. ${FATFS_COMMON_INCLUDE_DIR}
  61. )
  62. ELSE()
  63. SET(FATFS_INCLUDE_DIRS
  64. ${FATFS_COMMON_INCLUDE_DIR}
  65. ${FATFS_DRIVER_INCLUDE_DIR}
  66. )
  67. ENDIF()
  68. FOREACH(SRC ${FATFS_COMMON_SOURCES})
  69. SET(SRC_FILE SRC_FILE-NOTFOUND)
  70. FIND_FILE(SRC_FILE ${SRC}
  71. HINTS ${STM32Cube_DIR}/Middlewares/Third_Party/FatFs/src/
  72. CMAKE_FIND_ROOT_PATH_BOTH
  73. )
  74. LIST(APPEND FATFS_SOURCES ${SRC_FILE})
  75. ENDFOREACH()
  76. FOREACH(SRC ${FATFS_DRIVER_SOURCES})
  77. SET(SRC_FILE SRC_FILE-NOTFOUND)
  78. FIND_FILE(SRC_FILE ${SRC}
  79. HINTS ${STM32Cube_DIR}/Middlewares/Third_Party/FatFs/src/drivers/
  80. CMAKE_FIND_ROOT_PATH_BOTH
  81. )
  82. STRING(FIND ${SRC_FILE} "NOTFOUND" SRC_FILE_NOTFOUND)
  83. IF(NOT ${SRC_FILE_NOTFOUND} EQUAL -1)
  84. MESSAGE("Driver source files not located in STM firemware, please manually source the appropriate X_diskio.c files")
  85. ELSE()
  86. LIST(APPEND FATFS_SOURCES ${SRC_FILE})
  87. ENDIF()
  88. ENDFOREACH()
  89. FOREACH(SRC ${FATFS_OPTION_SOURCES})
  90. SET(SRC_FILE SRC_FILE-NOTFOUND)
  91. FIND_FILE(SRC_FILE ${SRC}
  92. HINTS ${STM32Cube_DIR}/Middlewares/Third_Party/FatFs/src/option/
  93. CMAKE_FIND_ROOT_PATH_BOTH
  94. )
  95. LIST(APPEND FATFS_SOURCES ${SRC_FILE})
  96. ENDFOREACH()
  97. message(STATUS "fatfs include " ${FATFS_INCLUDE_DIRS})
  98. message(STATUS "fatfs sources " ${FATFS_SOURCES})
  99. INCLUDE(FindPackageHandleStandardArgs)
  100. FIND_PACKAGE_HANDLE_STANDARD_ARGS(FATFS DEFAULT_MSG FATFS_INCLUDE_DIRS FATFS_SOURCES)