component_ulp_common.cmake 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. if(NOT CMAKE_BUILD_EARLY_EXPANSION)
  2. spaces2list(ULP_S_SOURCES)
  3. foreach(ulp_s_source ${ULP_S_SOURCES})
  4. get_filename_component(ulp_s_source ${ulp_s_source} ABSOLUTE)
  5. list(APPEND ulp_s_sources ${ulp_s_source})
  6. endforeach()
  7. foreach(ulp_s_source ${ulp_s_sources})
  8. get_filename_component(ulp_ps_source ${ulp_s_source} NAME_WE)
  9. set(ulp_ps_output ${CMAKE_CURRENT_BINARY_DIR}/${ULP_APP_NAME}/${ulp_ps_source}.ulp.S)
  10. list(APPEND ulp_ps_sources ${ulp_ps_output})
  11. endforeach()
  12. set(ulp_artifacts_prefix ${CMAKE_CURRENT_BINARY_DIR}/${ULP_APP_NAME}/${ULP_APP_NAME})
  13. set(ulp_artifacts ${ulp_artifacts_prefix}.bin
  14. ${ulp_artifacts_prefix}.ld
  15. ${ulp_artifacts_prefix}.h)
  16. set(ulp_artifacts_extras ${ulp_artifacts_prefix}.map
  17. ${ulp_artifacts_prefix}.sym
  18. ${CMAKE_CURRENT_BINARY_DIR}/${ULP_APP_NAME}/esp32.ulp.ld)
  19. externalproject_add(${ULP_APP_NAME}
  20. SOURCE_DIR ${IDF_PATH}/components/ulp/cmake
  21. BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${ULP_APP_NAME}
  22. INSTALL_COMMAND ""
  23. CMAKE_ARGS -DCMAKE_GENERATOR=${CMAKE_GENERATOR}
  24. -DCMAKE_TOOLCHAIN_FILE=${IDF_PATH}/components/ulp/cmake/toolchain-ulp.cmake
  25. -DULP_S_SOURCES=${ulp_s_sources} -DULP_APP_NAME=${ULP_APP_NAME}
  26. -DCOMPONENT_PATH=${COMPONENT_PATH}
  27. -DCOMPONENT_INCLUDES=$<TARGET_PROPERTY:${COMPONENT_NAME},INTERFACE_INCLUDE_DIRECTORIES>
  28. -DIDF_PATH=${IDF_PATH}
  29. -DSDKCONFIG=${SDKCONFIG_HEADER}
  30. BUILD_COMMAND ${CMAKE_COMMAND} --build ${CMAKE_CURRENT_BINARY_DIR}/${ULP_APP_NAME} --target build
  31. BUILD_BYPRODUCTS ${ulp_artifacts} ${ulp_artifacts_extras} ${ulp_ps_sources}
  32. ${CMAKE_CURRENT_BINARY_DIR}/${ULP_APP_NAME}/${ULP_APP_NAME}
  33. BUILD_ALWAYS 1
  34. )
  35. spaces2list(ULP_EXP_DEP_SRCS)
  36. set_source_files_properties(${ULP_EXP_DEP_SRCS} PROPERTIES OBJECT_DEPENDS ${ulp_artifacts})
  37. include_directories(${CMAKE_CURRENT_BINARY_DIR}/${ULP_APP_NAME})
  38. add_custom_target(${ULP_APP_NAME}_artifacts DEPENDS ${ULP_APP_NAME})
  39. add_dependencies(${COMPONENT_NAME} ${ULP_APP_NAME}_artifacts)
  40. target_linker_script(${COMPONENT_NAME} ${CMAKE_CURRENT_BINARY_DIR}/${ULP_APP_NAME}/${ULP_APP_NAME}.ld)
  41. target_add_binary_data(${COMPONENT_NAME} ${CMAKE_CURRENT_BINARY_DIR}/${ULP_APP_NAME}/${ULP_APP_NAME}.bin BINARY)
  42. endif()