FindFreeRTOS.cmake 3.0 KB

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