FindFreeRTOS.cmake 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  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. IF(FREERTOS_CMSIS_V2)
  45. SET(CMSIS_OS_SRC_FILE cmsis_os1.c)
  46. ELSE()
  47. SET(CMSIS_OS_SRC_FILE cmsis_os.c)
  48. ENDIF()
  49. SET(CMSIS_OS_INC_FILE cmsis_os.h)
  50. SET(PORT_ARM_SRC_FILE port.c)
  51. SET(PORTMACRO_ARM_HEADER portmacro.h)
  52. IF(NOT FREERTOS_HEAP_IMPL)
  53. MESSAGE(FATAL_ERROR "FREERTOS_HEAP_IMPL not defined. Define it to include proper heap implementation file.")
  54. ELSE()
  55. SET(HEAP_IMP_FILE heap_${FREERTOS_HEAP_IMPL}.c)
  56. ENDIF()
  57. FIND_PATH(FREERTOS_COMMON_INC_DIR ${FREERTOS_HEADERS}
  58. PATH_SUFFIXES include
  59. HINTS ${STM32Cube_DIR}/Middlewares/Third_Party/FreeRTOS/Source
  60. CMAKE_FIND_ROOT_PATH_BOTH
  61. )
  62. SET(CMSIS_OS_INC_DIR CMSIS_OS_INC_DIR-NOTFOUND)
  63. IF(FREERTOS_CMSIS_V2)
  64. FIND_PATH(CMSIS_OS_INC_DIR ${CMSIS_OS_INC_FILE}
  65. PATH_SUFFIXES CMSIS_RTOS_V2
  66. HINTS ${STM32Cube_DIR}/Middlewares/Third_Party/FreeRTOS/Source
  67. CMAKE_FIND_ROOT_PATH_BOTH
  68. )
  69. ELSE()
  70. FIND_PATH(CMSIS_OS_INC_DIR ${CMSIS_OS_INC_FILE}
  71. PATH_SUFFIXES CMSIS_RTOS
  72. HINTS ${STM32Cube_DIR}/Middlewares/Third_Party/FreeRTOS/Source
  73. CMAKE_FIND_ROOT_PATH_BOTH
  74. )
  75. ENDIF()
  76. FIND_PATH(PORTMACRO_INC_DIR ${PORTMACRO_ARM_HEADER}
  77. PATH_SUFFIXES ARM_${PORT_GCC_DIR_SUFFIX}
  78. HINTS ${STM32Cube_DIR}/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC
  79. CMAKE_FIND_ROOT_PATH_BOTH
  80. )
  81. FOREACH(SRC ${FREERTOS_SRC_FILES})
  82. STRING(MAKE_C_IDENTIFIER "${SRC}" SRC_CLEAN)
  83. SET(FREERTOS_${SRC_CLEAN}_FILE FREERTOS_SRC_FILE-NOTFOUND)
  84. FIND_FILE(FREERTOS_${SRC_CLEAN}_FILE ${SRC}
  85. HINTS ${STM32Cube_DIR}/Middlewares/Third_Party/FreeRTOS/Source
  86. CMAKE_FIND_ROOT_PATH_BOTH
  87. )
  88. LIST(APPEND FREERTOS_SOURCES ${FREERTOS_${SRC_CLEAN}_FILE})
  89. ENDFOREACH()
  90. SET(CMSIS_OS_SOURCE ${CMSIS_OS_SRC_FILE}-NOTFOUND)
  91. IF(FREERTOS_CMSIS_V2)
  92. FIND_FILE(CMSIS_OS_SOURCE ${CMSIS_OS_SRC_FILE}
  93. PATH_SUFFIXES CMSIS_RTOS_V2
  94. HINTS ${STM32Cube_DIR}/Middlewares/Third_Party/FreeRTOS/Source
  95. CMAKE_FIND_ROOT_PATH_BOTH
  96. )
  97. ELSE()
  98. FIND_FILE(CMSIS_OS_SOURCE ${CMSIS_OS_SRC_FILE}
  99. PATH_SUFFIXES CMSIS_RTOS
  100. HINTS ${STM32Cube_DIR}/Middlewares/Third_Party/FreeRTOS/Source
  101. CMAKE_FIND_ROOT_PATH_BOTH
  102. )
  103. ENDIF()
  104. FIND_FILE(PORT_ARM_SOURCE ${PORT_ARM_SRC_FILE}
  105. PATH_SUFFIXES ARM_${PORT_GCC_DIR_SUFFIX}
  106. HINTS ${STM32Cube_DIR}/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC
  107. CMAKE_FIND_ROOT_PATH_BOTH
  108. )
  109. FIND_FILE(HEAP_IMP_SOURCE ${HEAP_IMP_FILE}
  110. PATH_SUFFIXES MemMang
  111. HINTS ${STM32Cube_DIR}/Middlewares/Third_Party/FreeRTOS/Source/portable
  112. CMAKE_FIND_ROOT_PATH_BOTH
  113. )
  114. SET(FreeRTOS_INCLUDE_DIRS
  115. ${FREERTOS_COMMON_INC_DIR}
  116. ${CMSIS_OS_INC_DIR}
  117. ${PORTMACRO_INC_DIR}
  118. )
  119. SET(FreeRTOS_SOURCES
  120. ${FREERTOS_SOURCES}
  121. ${CMSIS_OS_SOURCE}
  122. ${PORT_ARM_SOURCE}
  123. ${HEAP_IMP_SOURCE}
  124. )
  125. INCLUDE(FindPackageHandleStandardArgs)
  126. FIND_PACKAGE_HANDLE_STANDARD_ARGS(FreeRTOS DEFAULT_MSG FreeRTOS_INCLUDE_DIRS FreeRTOS_SOURCES)