2019-02-04 02:07:02 -05:00
|
|
|
# ulp_embed_binary
|
|
|
|
#
|
|
|
|
# Create ULP binary and embed into the application.
|
2024-07-05 02:08:15 -04:00
|
|
|
|
|
|
|
function(__setup_ulp_project app_name project_path s_sources exp_dep_srcs)
|
|
|
|
|
2019-02-04 02:07:02 -05:00
|
|
|
if(NOT CMAKE_BUILD_EARLY_EXPANSION)
|
|
|
|
spaces2list(s_sources)
|
|
|
|
foreach(source ${s_sources})
|
|
|
|
get_filename_component(source ${source} ABSOLUTE BASE_DIR ${CMAKE_CURRENT_LIST_DIR})
|
|
|
|
list(APPEND sources ${source})
|
|
|
|
endforeach()
|
|
|
|
|
|
|
|
foreach(source ${sources})
|
|
|
|
get_filename_component(ps_source ${source} NAME_WE)
|
|
|
|
set(ps_output ${CMAKE_CURRENT_BINARY_DIR}/${app_name}/${ps_source}.ulp.S)
|
|
|
|
list(APPEND ps_sources ${ps_output})
|
|
|
|
endforeach()
|
|
|
|
|
|
|
|
set(ulp_artifacts_prefix ${CMAKE_CURRENT_BINARY_DIR}/${app_name}/${app_name})
|
|
|
|
|
|
|
|
set(ulp_artifacts ${ulp_artifacts_prefix}.bin
|
|
|
|
${ulp_artifacts_prefix}.ld
|
|
|
|
${ulp_artifacts_prefix}.h)
|
|
|
|
|
|
|
|
set(ulp_artifacts_extras ${ulp_artifacts_prefix}.map
|
|
|
|
${ulp_artifacts_prefix}.sym
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/${app_name}/esp32.ulp.ld)
|
|
|
|
|
|
|
|
# Replace the separator for the list of ULP source files that will be passed to
|
|
|
|
# the external ULP project. This is a workaround to the bug https://public.kitware.com/Bug/view.php?id=16137.
|
|
|
|
string(REPLACE ";" "|" ulp_s_sources "${ulp_s_sources}")
|
|
|
|
|
|
|
|
idf_build_get_property(sdkconfig_header SDKCONFIG_HEADER)
|
2024-07-15 04:02:56 -04:00
|
|
|
idf_build_get_property(sdkconfig_cmake SDKCONFIG_CMAKE)
|
2019-02-04 02:07:02 -05:00
|
|
|
idf_build_get_property(idf_path IDF_PATH)
|
2021-12-23 01:12:47 -05:00
|
|
|
idf_build_get_property(idf_target IDF_TARGET)
|
2019-02-04 02:07:02 -05:00
|
|
|
idf_build_get_property(python PYTHON)
|
2019-10-09 21:46:42 -04:00
|
|
|
idf_build_get_property(extra_cmake_args EXTRA_CMAKE_ARGS)
|
|
|
|
|
2019-06-28 08:36:32 -04:00
|
|
|
if(IDF_TARGET STREQUAL "esp32")
|
2021-12-23 01:12:47 -05:00
|
|
|
set(TOOLCHAIN_FLAG ${idf_path}/components/ulp/cmake/toolchain-${idf_target}-ulp.cmake)
|
2020-04-17 15:34:56 -04:00
|
|
|
set(ULP_IS_RISCV OFF)
|
2021-12-23 01:12:47 -05:00
|
|
|
elseif(IDF_TARGET STREQUAL "esp32s2" OR IDF_TARGET STREQUAL "esp32s3")
|
2022-01-21 04:13:48 -05:00
|
|
|
if(CONFIG_ULP_COPROC_TYPE_RISCV STREQUAL "y")
|
2021-12-23 01:12:47 -05:00
|
|
|
set(TOOLCHAIN_FLAG ${idf_path}/components/ulp/cmake/toolchain-ulp-riscv.cmake)
|
2020-04-17 15:34:56 -04:00
|
|
|
else()
|
2021-12-23 01:12:47 -05:00
|
|
|
set(TOOLCHAIN_FLAG ${idf_path}/components/ulp/cmake/toolchain-${idf_target}-ulp.cmake)
|
2020-04-17 15:34:56 -04:00
|
|
|
endif()
|
2023-02-27 04:03:42 -05:00
|
|
|
elseif(CONFIG_ULP_COPROC_TYPE_LP_CORE)
|
|
|
|
set(TOOLCHAIN_FLAG ${idf_path}/components/ulp/cmake/toolchain-lp-core-riscv.cmake)
|
2019-06-28 08:36:32 -04:00
|
|
|
endif()
|
|
|
|
|
2019-02-04 02:07:02 -05:00
|
|
|
externalproject_add(${app_name}
|
2024-07-05 02:08:15 -04:00
|
|
|
SOURCE_DIR ${project_path}
|
2020-04-17 15:34:56 -04:00
|
|
|
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${app_name}
|
|
|
|
INSTALL_COMMAND ""
|
2024-06-06 17:15:45 -04:00
|
|
|
CMAKE_ARGS -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
|
|
|
|
-DCMAKE_GENERATOR=${CMAKE_GENERATOR}
|
2020-04-17 15:34:56 -04:00
|
|
|
-DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FLAG}
|
|
|
|
-DULP_S_SOURCES=$<TARGET_PROPERTY:${app_name},ULP_SOURCES>
|
|
|
|
-DULP_APP_NAME=${app_name}
|
|
|
|
-DCOMPONENT_DIR=${COMPONENT_DIR}
|
|
|
|
-DCOMPONENT_INCLUDES=$<TARGET_PROPERTY:${COMPONENT_TARGET},INTERFACE_INCLUDE_DIRECTORIES>
|
2022-02-28 05:12:28 -05:00
|
|
|
-DIDF_TARGET=${idf_target}
|
2020-04-17 15:34:56 -04:00
|
|
|
-DIDF_PATH=${idf_path}
|
2021-03-31 04:25:35 -04:00
|
|
|
-DSDKCONFIG_HEADER=${SDKCONFIG_HEADER}
|
2024-07-15 04:02:56 -04:00
|
|
|
-DSDKCONFIG_CMAKE=${SDKCONFIG_CMAKE}
|
2020-04-17 15:34:56 -04:00
|
|
|
-DPYTHON=${python}
|
2024-08-20 01:04:46 -04:00
|
|
|
-DCMAKE_MODULE_PATH=${idf_path}/components/ulp/cmake/
|
2020-04-17 15:34:56 -04:00
|
|
|
${extra_cmake_args}
|
|
|
|
BUILD_COMMAND ${CMAKE_COMMAND} --build ${CMAKE_CURRENT_BINARY_DIR}/${app_name} --target build
|
|
|
|
BUILD_BYPRODUCTS ${ulp_artifacts} ${ulp_artifacts_extras} ${ulp_ps_sources}
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/${app_name}/${app_name}
|
|
|
|
BUILD_ALWAYS 1
|
|
|
|
)
|
2019-02-04 02:07:02 -05:00
|
|
|
|
2020-03-03 03:03:59 -05:00
|
|
|
set_property(TARGET ${app_name} PROPERTY ULP_SOURCES "${sources}")
|
|
|
|
|
2019-02-04 02:07:02 -05:00
|
|
|
spaces2list(exp_dep_srcs)
|
|
|
|
set_source_files_properties(${exp_dep_srcs} PROPERTIES OBJECT_DEPENDS ${ulp_artifacts})
|
|
|
|
|
|
|
|
include_directories(${CMAKE_CURRENT_BINARY_DIR}/${app_name})
|
|
|
|
|
|
|
|
add_custom_target(${app_name}_artifacts DEPENDS ${app_name})
|
|
|
|
|
|
|
|
add_dependencies(${COMPONENT_LIB} ${app_name}_artifacts)
|
|
|
|
|
2019-06-04 07:05:33 -04:00
|
|
|
target_linker_script(${COMPONENT_LIB} INTERFACE ${CMAKE_CURRENT_BINARY_DIR}/${app_name}/${app_name}.ld)
|
2019-02-04 02:07:02 -05:00
|
|
|
target_add_binary_data(${COMPONENT_LIB} ${CMAKE_CURRENT_BINARY_DIR}/${app_name}/${app_name}.bin BINARY)
|
|
|
|
endif()
|
2019-11-07 22:56:13 -05:00
|
|
|
endfunction()
|
2024-07-05 02:08:15 -04:00
|
|
|
|
|
|
|
function(ulp_embed_binary app_name s_sources exp_dep_srcs)
|
|
|
|
__setup_ulp_project("${app_name}" "${idf_path}/components/ulp/cmake" "${s_sources}" "${exp_dep_srcs}")
|
|
|
|
endfunction()
|
|
|
|
|
|
|
|
function(ulp_add_project app_name project_path)
|
|
|
|
__setup_ulp_project("${app_name}" "${project_path}" "" "")
|
|
|
|
endfunction()
|