mirror of
https://github.com/espressif/esp-idf.git
synced 2026-09-22 13:01:16 +03:00
refactor(ulp): make the ULP subproject directory explicit
components/ulp/cmake holds the project that builds a ULP program. Name it subproject, as the bootloader does.
This commit is contained in:
@@ -10,7 +10,7 @@ function(__setup_ulp_project app_name project_path prefix prefix_append_bin_name
|
||||
s_sources exp_dep_srcs linker_script)
|
||||
|
||||
if(NOT CMAKE_BUILD_EARLY_EXPANSION)
|
||||
set(ulp_cmake_dir "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/cmake")
|
||||
set(ulp_subproject_dir "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/subproject")
|
||||
set(sources "")
|
||||
spaces2list(s_sources)
|
||||
foreach(source ${s_sources})
|
||||
@@ -95,7 +95,7 @@ function(__setup_ulp_project app_name project_path prefix prefix_append_bin_name
|
||||
"Only FSM type is available for ULP on this target.")
|
||||
endif()
|
||||
endif()
|
||||
set(TOOLCHAIN_FLAG ${ulp_cmake_dir}/toolchain-${idf_target}-ulp.cmake)
|
||||
set(TOOLCHAIN_FLAG ${ulp_subproject_dir}/toolchain-${idf_target}-ulp.cmake)
|
||||
set(ULP_IS_RISCV OFF)
|
||||
elseif(IDF_TARGET STREQUAL "esp32s2" OR IDF_TARGET STREQUAL "esp32s3")
|
||||
# If both FSM and RISC-V are enabled in sdkconfig and a TYPE was
|
||||
@@ -105,21 +105,21 @@ function(__setup_ulp_project app_name project_path prefix prefix_append_bin_name
|
||||
message(STATUS "Both RISCV and FSM are enabled, using '${type}' toolchain for ${app_name} ULP project.")
|
||||
string(TOLOWER "${type}" type_lower)
|
||||
if(type_lower STREQUAL "riscv")
|
||||
set(TOOLCHAIN_FLAG ${ulp_cmake_dir}/toolchain-ulp-riscv.cmake)
|
||||
set(TOOLCHAIN_FLAG ${ulp_subproject_dir}/toolchain-ulp-riscv.cmake)
|
||||
elseif(type_lower STREQUAL "fsm")
|
||||
set(TOOLCHAIN_FLAG ${ulp_cmake_dir}/toolchain-${idf_target}-ulp.cmake)
|
||||
set(TOOLCHAIN_FLAG ${ulp_subproject_dir}/toolchain-${idf_target}-ulp.cmake)
|
||||
else()
|
||||
message(FATAL_ERROR "Invalid ULP_TYPE '${type}'; expected 'fsm' or 'riscv'.")
|
||||
endif()
|
||||
else()
|
||||
if(CONFIG_ULP_COPROC_TYPE_RISCV STREQUAL "y")
|
||||
set(TOOLCHAIN_FLAG ${ulp_cmake_dir}/toolchain-ulp-riscv.cmake)
|
||||
set(TOOLCHAIN_FLAG ${ulp_subproject_dir}/toolchain-ulp-riscv.cmake)
|
||||
else()
|
||||
set(TOOLCHAIN_FLAG ${ulp_cmake_dir}/toolchain-${idf_target}-ulp.cmake)
|
||||
set(TOOLCHAIN_FLAG ${ulp_subproject_dir}/toolchain-${idf_target}-ulp.cmake)
|
||||
endif()
|
||||
endif()
|
||||
elseif(CONFIG_ULP_COPROC_TYPE_LP_CORE)
|
||||
set(TOOLCHAIN_FLAG ${ulp_cmake_dir}/toolchain-lp-core-riscv.cmake)
|
||||
set(TOOLCHAIN_FLAG ${ulp_subproject_dir}/toolchain-lp-core-riscv.cmake)
|
||||
endif()
|
||||
|
||||
set(ulp_project_args)
|
||||
@@ -133,7 +133,7 @@ function(__setup_ulp_project app_name project_path prefix prefix_append_bin_name
|
||||
-DIDF_DEFAULT_PROJECT_NAME=${app_name}
|
||||
-DULP_APP_NAME=${app_name}
|
||||
-DIDF_BUILD_V2=y
|
||||
-DCMAKE_MODULE_PATH=${ulp_cmake_dir}
|
||||
-DCMAKE_MODULE_PATH=${ulp_subproject_dir}
|
||||
# Internal marker for ULP child component graphs. Only the
|
||||
# IDF_BUILD_V2 path sets it for now.
|
||||
-D__ULP_BUILDV2=1
|
||||
@@ -176,7 +176,7 @@ function(__setup_ulp_project app_name project_path prefix prefix_append_bin_name
|
||||
-DSDKCONFIG_HEADER=${SDKCONFIG_HEADER}
|
||||
-DSDKCONFIG_CMAKE=${SDKCONFIG_CMAKE}
|
||||
# The v1 ULP child resolves include(IDFULPProject) via the module path.
|
||||
-DCMAKE_MODULE_PATH=${ulp_cmake_dir})
|
||||
-DCMAKE_MODULE_PATH=${ulp_subproject_dir})
|
||||
endif()
|
||||
|
||||
externalproject_add(${app_name}
|
||||
@@ -315,9 +315,9 @@ function(ulp_embed_binary app_name s_sources exp_dep_srcs)
|
||||
set(ULP_TYPE "${ulp_resolved_type}")
|
||||
endif()
|
||||
__resolve_lp_core_linker("${ULP_LINKER_LAYOUT}" "${ulp_resolved_type}" LP_CORE_LINKER)
|
||||
set(ulp_cmake_dir "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/cmake")
|
||||
set(ulp_subproject_dir "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/subproject")
|
||||
|
||||
__setup_ulp_project("${app_name}" "${ulp_cmake_dir}"
|
||||
__setup_ulp_project("${app_name}" "${ulp_subproject_dir}"
|
||||
"${ULP_PREFIX}" FALSE "${ULP_TYPE}"
|
||||
"${app_name}"
|
||||
"${s_sources}" "${exp_dep_srcs}" "${LP_CORE_LINKER}")
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# This is the CMake v1 (legacy) ULP child entry point, used by ulp_embed_binary.
|
||||
# CMake v2 full-subproject builds include components/ulp/cmake/ulp_project.cmake
|
||||
# CMake v2 full-subproject builds include components/ulp/subproject/ulp_project.cmake
|
||||
# instead.
|
||||
#
|
||||
# Legacy ULP child projects are plain CMake projects, so the parent-provided
|
||||
@@ -1,3 +1,8 @@
|
||||
# The directory of this file, captured while it is being processed:
|
||||
# CMAKE_CURRENT_LIST_DIR inside a function resolves at call time, which is the
|
||||
# caller's directory, not this one.
|
||||
set(__ULP_SUBPROJECT_DIR "${CMAKE_CURRENT_LIST_DIR}")
|
||||
|
||||
macro(ulp_detect_build_type)
|
||||
# Logic to determine ULP type and set reusable flags
|
||||
set(BUILD_RISCV OFF)
|
||||
@@ -49,7 +54,7 @@ function(ulp_add_build_binary_targets ulp_app_name)
|
||||
set(ULP_BASE_ADDR "0x50000000")
|
||||
endif()
|
||||
|
||||
set(ULP_MAP_GEN ${PYTHON} ${IDF_PATH}/components/ulp/esp32ulp_mapgen.py)
|
||||
set(ULP_MAP_GEN ${PYTHON} ${__ULP_SUBPROJECT_DIR}/esp32ulp_mapgen.py)
|
||||
|
||||
# Dump the list of global symbols in a convenient format
|
||||
add_custom_command(OUTPUT ${ulp_app_name}.sym
|
||||
@@ -2,7 +2,7 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
cmake_minimum_required(VERSION 3.22)
|
||||
|
||||
include(${IDF_PATH}/components/ulp/cmake/ulp_project.cmake)
|
||||
include(${IDF_PATH}/components/ulp/subproject/ulp_project.cmake)
|
||||
|
||||
project(${IDF_DEFAULT_PROJECT_NAME} C CXX ASM)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user