FindFATFS.cmake 3.0 KB

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