FindFreeRTOS.cmake 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. IF(STM32_FAMILY STREQUAL "F0")
  2. SET(PORT_GCC_DIR_SUFFIX "CM0")
  3. ELSEIF(STM32_FAMILY STREQUAL "F1")
  4. SET(PORT_GCC_DIR_SUFFIX "CM3")
  5. ELSEIF(STM32_FAMILY STREQUAL "F2")
  6. SET(PORT_GCC_DIR_SUFFIX "CM3")
  7. ELSEIF(STM32_FAMILY STREQUAL "F3")
  8. SET(PORT_GCC_DIR_SUFFIX "CM4F")
  9. ELSEIF(STM32_FAMILY STREQUAL "F4")
  10. SET(PORT_GCC_DIR_SUFFIX "CM4F")
  11. ELSEIF(STM32_FAMILY STREQUAL "F7")
  12. SET(PORT_GCC_DIR_SUFFIX "CM7")
  13. ELSEIF(STM32_FAMILY STREQUAL "L0")
  14. SET(PORT_GCC_DIR_SUFFIX "CM0")
  15. ELSEIF(STM32_FAMILY STREQUAL "L1")
  16. SET(PORT_GCC_DIR_SUFFIX "CM4F")
  17. ENDIF()
  18. SET(FREERTOS_SRC_FILES
  19. croutine.c
  20. event_groups.c
  21. list.c
  22. queue.c
  23. tasks.c
  24. timers.c
  25. )
  26. SET(FREERTOS_HEADERS
  27. croutine.h
  28. deprecated_definitions.h
  29. event_groups.h
  30. FreeRTOS.h
  31. list.h
  32. mpu_prototypes.h
  33. mpu_wrappers.h
  34. portable.h
  35. projdefs.h
  36. queue.h
  37. semphr.h
  38. StackMacros.h
  39. task.h
  40. timers.h
  41. )
  42. SET(CMSIS_OS_SRC_FILE cmsis_os.c)
  43. SET(CMSIS_OS_INC_FILE cmsis_os.h)
  44. SET(PORT_ARM_SRC_FILE port.c)
  45. SET(PORTMACRO_ARM_HEADER portmacro.h)
  46. IF(NOT FREERTOS_HEAP_IMPL)
  47. MESSAGE(FATAL_ERROR "FREERTOS_HEAP_IMPL not defined. Define it to include proper heap implementation file.")
  48. ELSE()
  49. SET(HEAP_IMP_FILE heap_${FREERTOS_HEAP_IMPL}.c)
  50. ENDIF()
  51. FIND_PATH(FREERTOS_COMMON_INC_DIR ${FREERTOS_HEADERS}
  52. PATH_SUFFIXES include
  53. HINTS ${STM32Cube_DIR}/Middlewares/Third_Party/FreeRTOS/Source
  54. CMAKE_FIND_ROOT_PATH_BOTH
  55. )
  56. FIND_PATH(CMSIS_OS_INC_DIR ${CMSIS_OS_INC_FILE}
  57. PATH_SUFFIXES CMSIS_RTOS
  58. HINTS ${STM32Cube_DIR}/Middlewares/Third_Party/FreeRTOS/Source
  59. CMAKE_FIND_ROOT_PATH_BOTH
  60. )
  61. FIND_PATH(PORTMACRO_INC_DIR ${PORTMACRO_ARM_HEADER}
  62. PATH_SUFFIXES ARM_${PORT_GCC_DIR_SUFFIX}
  63. HINTS ${STM32Cube_DIR}/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC
  64. CMAKE_FIND_ROOT_PATH_BOTH
  65. )
  66. FOREACH(SRC ${FREERTOS_SRC_FILES})
  67. STRING(MAKE_C_IDENTIFIER "${SRC}" SRC_CLEAN)
  68. SET(FREERTOS_${SRC_CLEAN}_FILE FREERTOS_SRC_FILE-NOTFOUND)
  69. FIND_FILE(FREERTOS_${SRC_CLEAN}_FILE ${SRC}
  70. HINTS ${STM32Cube_DIR}/Middlewares/Third_Party/FreeRTOS/Source
  71. CMAKE_FIND_ROOT_PATH_BOTH
  72. )
  73. LIST(APPEND FREERTOS_SOURCES ${FREERTOS_${SRC_CLEAN}_FILE})
  74. ENDFOREACH()
  75. FIND_FILE(CMSIS_OS_SOURCE ${CMSIS_OS_SRC_FILE}
  76. PATH_SUFFIXES CMSIS_RTOS
  77. HINTS ${STM32Cube_DIR}/Middlewares/Third_Party/FreeRTOS/Source
  78. CMAKE_FIND_ROOT_PATH_BOTH
  79. )
  80. FIND_FILE(PORT_ARM_SOURCE ${PORT_ARM_SRC_FILE}
  81. PATH_SUFFIXES ARM_${PORT_GCC_DIR_SUFFIX}
  82. HINTS ${STM32Cube_DIR}/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC
  83. CMAKE_FIND_ROOT_PATH_BOTH
  84. )
  85. FIND_FILE(HEAP_IMP_SOURCE ${HEAP_IMP_FILE}
  86. PATH_SUFFIXES MemMang
  87. HINTS ${STM32Cube_DIR}/Middlewares/Third_Party/FreeRTOS/Source/portable
  88. CMAKE_FIND_ROOT_PATH_BOTH
  89. )
  90. SET(FreeRTOS_INCLUDE_DIRS
  91. ${FREERTOS_COMMON_INC_DIR}
  92. ${CMSIS_OS_INC_DIR}
  93. ${PORTMACRO_INC_DIR}
  94. )
  95. SET(FreeRTOS_SOURCES
  96. ${FREERTOS_SOURCES}
  97. ${CMSIS_OS_SOURCE}
  98. ${PORT_ARM_SOURCE}
  99. ${HEAP_IMP_SOURCE}
  100. )
  101. INCLUDE(FindPackageHandleStandardArgs)
  102. FIND_PACKAGE_HANDLE_STANDARD_ARGS(FreeRTOS DEFAULT_MSG FreeRTOS_INCLUDE_DIRS FreeRTOS_SOURCES)