CMakeLists.txt 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. if(CONFIG_OPENTHREAD_ENABLED)
  2. if(CONFIG_OPENTHREAD_FTD)
  3. include(ftd.cmake)
  4. else()
  5. include(radio.cmake)
  6. endif()
  7. if(CONFIG_OPENTHREAD_FTD)
  8. set(device_type "OPENTHREAD_FTD=1")
  9. elseif(CONFIG_OPENTHREAD_MTD)
  10. set(device_type "OPENTHREAD_MTD=1")
  11. elseif(CONFIG_OPENTHREAD_RADIO)
  12. set(device_type "OPENTHREAD_RADIO=1")
  13. endif()
  14. endif()
  15. execute_process(
  16. COMMAND git rev-parse --short HEAD
  17. WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
  18. OUTPUT_VARIABLE IDF_VERSION_FOR_OPENTHREAD_PACKAGE OUTPUT_STRIP_TRAILING_WHITESPACE
  19. )
  20. execute_process(
  21. COMMAND git rev-parse --short HEAD
  22. WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/openthread
  23. OUTPUT_VARIABLE OPENTHREAD_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE
  24. )
  25. idf_component_register(SRC_DIRS "${src_dirs}"
  26. EXCLUDE_SRCS "${exclude_srcs}"
  27. INCLUDE_DIRS "${public_include_dirs}"
  28. PRIV_INCLUDE_DIRS "${private_include_dirs}"
  29. REQUIRES mbedtls ieee802154 console)
  30. if(CONFIG_OPENTHREAD_ENABLED)
  31. if(CONFIG_OPENTHREAD_RADIO)
  32. set(CONFIG_FILE_TYPE "radio")
  33. else()
  34. set(CONFIG_FILE_TYPE "ftd")
  35. endif()
  36. target_compile_definitions(
  37. ${COMPONENT_LIB}
  38. PUBLIC
  39. "OPENTHREAD_CONFIG_FILE=\"openthread-core-esp32x-${CONFIG_FILE_TYPE}-config.h\""
  40. "${device_type}"
  41. PRIVATE
  42. "PACKAGE_VERSION=\"${IDF_VERSION_FOR_OPENTHREAD_PACKAGE}-${OPENTHREAD_VERSION}\"")
  43. if(CONFIG_OPENTHREAD_ESP_LIB_FROM_INTERNAL_SRC)
  44. idf_component_get_property(openthread_port_lib openthread_port COMPONENT_LIB)
  45. idf_component_get_property(esp_system_lib esp_system COMPONENT_LIB)
  46. target_link_libraries(${COMPONENT_LIB} PUBLIC
  47. $<TARGET_FILE:${openthread_port_lib}>
  48. $<TARGET_FILE:${esp_system_lib}>)
  49. if(CONFIG_OPENTHREAD_BORDER_ROUTER)
  50. idf_component_get_property(openthread_br_lib openthread_br COMPONENT_LIB)
  51. target_link_libraries(${COMPONENT_LIB} PUBLIC $<TARGET_FILE:${openthread_br_lib}>)
  52. endif()
  53. else()
  54. add_prebuilt_library(openthread_port "${CMAKE_CURRENT_SOURCE_DIR}/lib/${idf_target}/libopenthread_port.a"
  55. REQUIRES openthread)
  56. add_prebuilt_library(openthread_br "${CMAKE_CURRENT_SOURCE_DIR}/lib/${idf_target}/libopenthread_br.a"
  57. REQUIRES openthread)
  58. target_link_libraries(${COMPONENT_LIB} INTERFACE openthread_port)
  59. if(CONFIG_OPENTHREAD_BORDER_ROUTER)
  60. target_link_libraries(${COMPONENT_LIB} INTERFACE openthread_br)
  61. endif()
  62. endif()
  63. endif()