ChibiOS16.cmake 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. IF(NOT ChibiOS_FIND_COMPONENTS)
  2. SET(ChibiOS_FIND_COMPONENTS nil hal st)
  3. MESSAGE(STATUS "No ChibiOS components specified, using default: ${ChibiOS_FIND_COMPONENTS}")
  4. ENDIF()
  5. LIST(FIND ChibiOS_FIND_COMPONENTS nil ChibiOS_FIND_COMPONENTS_nil)
  6. LIST(FIND ChibiOS_FIND_COMPONENTS rt ChibiOS_FIND_COMPONENTS_rt)
  7. LIST(FIND ChibiOS_FIND_COMPONENTS hal ChibiOS_FIND_COMPONENTS_hal)
  8. LIST(FIND ChibiOS_FIND_COMPONENTS st ChibiOS_FIND_COMPONENTS_st)
  9. IF((${ChibiOS_FIND_COMPONENTS_nil} LESS 0) AND (${ChibiOS_FIND_COMPONENTS_rt} LESS 0))
  10. MESSAGE(STATUS "No kernel component selected, using Nil kernel")
  11. LIST(APPEND ChibiOS_FIND_COMPONENTS nil)
  12. SET(CHIBIOS_KERNEL nil)
  13. ELSE()
  14. IF((NOT (${ChibiOS_FIND_COMPONENTS_nil} LESS 0)) AND (NOT (${ChibiOS_FIND_COMPONENTS_rt} LESS 0)))
  15. MESSAGE(FATAL_ERROR "Cannot use RT and Nil kernel at the same time")
  16. ENDIF()
  17. IF(NOT (${ChibiOS_FIND_COMPONENTS_nil} LESS 0))
  18. SET(CHIBIOS_KERNEL nil)
  19. ELSE()
  20. SET(CHIBIOS_KERNEL rt)
  21. ENDIF()
  22. ENDIF()
  23. IF(${ChibiOS_FIND_COMPONENTS_hal} LESS 0)
  24. LIST(APPEND ChibiOS_FIND_COMPONENTS hal)
  25. ENDIF()
  26. IF(${ChibiOS_FIND_COMPONENTS_st} LESS 0)
  27. LIST(APPEND ChibiOS_FIND_COMPONENTS st)
  28. ENDIF()
  29. INCLUDE(ChibiOS16_LD)
  30. INCLUDE(ChibiOS16_HAL)
  31. IF(${CHIBIOS_KERNEL} STREQUAL rt)
  32. INCLUDE(ChibiOS16_RT)
  33. ELSE()
  34. INCLUDE(ChibiOS16_NIL)
  35. ENDIF()
  36. INCLUDE(ChibiOS16_Various)
  37. SET(CHIBIOS_COMPONENTS nil rt hal ${CHIBIOS_HAL_MODULES} ${CHIBIOS_HAL_LIB_MODULES} ${CHIBIOS_VARIOUS_MODULES})
  38. IF(NOT ChibiOS_LINKER_SCRIPT)
  39. MESSAGE(STATUS "ChibiOS doesn't have linker script for your chip, please specify it directly using ChibiOS_LINKER_SCRIPT variable.")
  40. ENDIF()
  41. FOREACH(comp ${ChibiOS_FIND_COMPONENTS})
  42. LIST(FIND CHIBIOS_COMPONENTS ${comp} INDEX)
  43. IF(INDEX EQUAL -1)
  44. MESSAGE(FATAL_ERROR "Unknown ChibiOS component: ${comp}\nSupported ChibiOS components: ${CHIBIOS_COMPONENTS}")
  45. ENDIF()
  46. FOREACH(source ${CHIBIOS_${comp}_SOURCES})
  47. FIND_FILE(CHIBIOS_${comp}_${source} NAMES ${source} PATHS ${CHIBIOS_${comp}_SEARCH_PATH} NO_DEFAULT_PATH CMAKE_FIND_ROOT_PATH_BOTH)
  48. LIST(APPEND ChibiOS_SOURCES ${CHIBIOS_${comp}_${source}})
  49. ENDFOREACH()
  50. IF(CHIBIOS_${comp}_SEARCH_HEADERS)
  51. FOREACH(header ${CHIBIOS_${comp}_SEARCH_HEADERS})
  52. FIND_PATH(CHIBIOS_${comp}_${header}_INCLUDE_DIR NAMES ${header} PATHS ${CHIBIOS_${comp}_SEARCH_PATH} NO_DEFAULT_PATH CMAKE_FIND_ROOT_PATH_BOTH)
  53. LIST(APPEND ChibiOS_INCLUDE_DIRS ${CHIBIOS_${comp}_${header}_INCLUDE_DIR})
  54. ENDFOREACH()
  55. ENDIF()
  56. IF(CHIBIOS_${comp}_PLATFORM_SEARCH_HEADERS)
  57. FOREACH(header ${CHIBIOS_${comp}_PLATFORM_SEARCH_HEADERS})
  58. FIND_PATH(CHIBIOS_${comp}_PLATFORM_${header}_INCLUDE_DIR NAMES ${header} PATHS ${CHIBIOS_${comp}_PLATFORM_SEARCH_PATH} NO_DEFAULT_PATH CMAKE_FIND_ROOT_PATH_BOTH)
  59. LIST(APPEND ChibiOS_INCLUDE_DIRS ${CHIBIOS_${comp}_PLATFORM_${header}_INCLUDE_DIR})
  60. ENDFOREACH()
  61. ENDIF()
  62. IF(CHIBIOS_${comp}_PLATFORM_SOURCES)
  63. FOREACH(source ${CHIBIOS_${comp}_PLATFORM_SOURCES})
  64. FIND_FILE(CHIBIOS_${comp}_PLATFORM_${source} NAMES ${source} PATHS ${CHIBIOS_${comp}_PLATFORM_SEARCH_PATH} NO_DEFAULT_PATH CMAKE_FIND_ROOT_PATH_BOTH)
  65. LIST(APPEND ChibiOS_SOURCES ${CHIBIOS_${comp}_PLATFORM_${source}})
  66. ENDFOREACH()
  67. ENDIF()
  68. ENDFOREACH()