mirror of
https://github.com/espressif/esp-idf.git
synced 2025-10-02 18:10:57 +02:00
change(bootloader): rename bootloader.ld -> bootloader.ld.in
This change passes file through compiler preprocessor which unlocks future code refactoring.
This commit is contained in:
@@ -69,9 +69,9 @@ set(LD_DEFAULT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/main/ld/${IDF_TARGET}")
|
|||||||
idf_build_set_property(BOOTLOADER_LINKER_SCRIPT "${LD_DEFAULT_PATH}/bootloader.rom.ld" APPEND)
|
idf_build_set_property(BOOTLOADER_LINKER_SCRIPT "${LD_DEFAULT_PATH}/bootloader.rom.ld" APPEND)
|
||||||
project(bootloader)
|
project(bootloader)
|
||||||
if(CONFIG_ESP32P4_REV_MIN_300)
|
if(CONFIG_ESP32P4_REV_MIN_300)
|
||||||
target_linker_script("__idf_main" INTERFACE "${LD_DEFAULT_PATH}/bootloader.rev3.ld")
|
target_linker_script("__idf_main" INTERFACE "${LD_DEFAULT_PATH}/bootloader.rev3.ld.in")
|
||||||
else()
|
else()
|
||||||
target_linker_script("__idf_main" INTERFACE "${LD_DEFAULT_PATH}/bootloader.ld")
|
target_linker_script("__idf_main" INTERFACE "${LD_DEFAULT_PATH}/bootloader.ld.in")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
idf_build_set_property(COMPILE_DEFINITIONS "BOOTLOADER_BUILD=1" APPEND)
|
idf_build_set_property(COMPILE_DEFINITIONS "BOOTLOADER_BUILD=1" APPEND)
|
||||||
|
@@ -3,6 +3,9 @@
|
|||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "sdkconfig.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Linker file used to link the bootloader.
|
Linker file used to link the bootloader.
|
||||||
*/
|
*/
|
@@ -3,6 +3,9 @@
|
|||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "sdkconfig.h"
|
||||||
|
|
||||||
/** Simplified memory map for the bootloader.
|
/** Simplified memory map for the bootloader.
|
||||||
* Make sure the bootloader can load into main memory without overwriting itself.
|
* Make sure the bootloader can load into main memory without overwriting itself.
|
||||||
*
|
*
|
@@ -3,6 +3,9 @@
|
|||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "sdkconfig.h"
|
||||||
|
|
||||||
/** Simplified memory map for the bootloader.
|
/** Simplified memory map for the bootloader.
|
||||||
* Make sure the bootloader can load into main memory without overwriting itself.
|
* Make sure the bootloader can load into main memory without overwriting itself.
|
||||||
*
|
*
|
@@ -3,6 +3,9 @@
|
|||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "sdkconfig.h"
|
||||||
|
|
||||||
/** Simplified memory map for the bootloader.
|
/** Simplified memory map for the bootloader.
|
||||||
* Make sure the bootloader can load into main memory without overwriting itself.
|
* Make sure the bootloader can load into main memory without overwriting itself.
|
||||||
*
|
*
|
@@ -3,6 +3,9 @@
|
|||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "sdkconfig.h"
|
||||||
|
|
||||||
/** Simplified memory map for the bootloader.
|
/** Simplified memory map for the bootloader.
|
||||||
* Make sure the bootloader can load into main memory without overwriting itself.
|
* Make sure the bootloader can load into main memory without overwriting itself.
|
||||||
*
|
*
|
@@ -3,6 +3,9 @@
|
|||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "sdkconfig.h"
|
||||||
|
|
||||||
/** Simplified memory map for the bootloader.
|
/** Simplified memory map for the bootloader.
|
||||||
* Make sure the bootloader can load into main memory without overwriting itself.
|
* Make sure the bootloader can load into main memory without overwriting itself.
|
||||||
*
|
*
|
@@ -3,6 +3,9 @@
|
|||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "sdkconfig.h"
|
||||||
|
|
||||||
/** Simplified memory map for the bootloader.
|
/** Simplified memory map for the bootloader.
|
||||||
* Make sure the bootloader can load into main memory without overwriting itself.
|
* Make sure the bootloader can load into main memory without overwriting itself.
|
||||||
*
|
*
|
@@ -3,6 +3,9 @@
|
|||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "sdkconfig.h"
|
||||||
|
|
||||||
/** Simplified memory map for the bootloader.
|
/** Simplified memory map for the bootloader.
|
||||||
* Make sure the bootloader can load into main memory without overwriting itself.
|
* Make sure the bootloader can load into main memory without overwriting itself.
|
||||||
*
|
*
|
@@ -3,6 +3,9 @@
|
|||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "sdkconfig.h"
|
||||||
|
|
||||||
/** Simplified memory map for the bootloader.
|
/** Simplified memory map for the bootloader.
|
||||||
* Make sure the bootloader can load into main memory without overwriting itself.
|
* Make sure the bootloader can load into main memory without overwriting itself.
|
||||||
*
|
*
|
@@ -3,6 +3,9 @@
|
|||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "sdkconfig.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Simplified memory map for the bootloader.
|
* Simplified memory map for the bootloader.
|
||||||
* Make sure the bootloader can load into main memory without overwriting itself.
|
* Make sure the bootloader can load into main memory without overwriting itself.
|
@@ -3,6 +3,9 @@
|
|||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "sdkconfig.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Simplified memory map for the bootloader.
|
* Simplified memory map for the bootloader.
|
||||||
* Make sure the bootloader can load into main memory without overwriting itself.
|
* Make sure the bootloader can load into main memory without overwriting itself.
|
@@ -3,6 +3,9 @@
|
|||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "sdkconfig.h"
|
||||||
|
|
||||||
/* Simplified memory map for the bootloader.
|
/* Simplified memory map for the bootloader.
|
||||||
* Make sure the bootloader can load into main memory without overwriting itself.
|
* Make sure the bootloader can load into main memory without overwriting itself.
|
||||||
*/
|
*/
|
@@ -3,6 +3,9 @@
|
|||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "sdkconfig.h"
|
||||||
|
|
||||||
/** Simplified memory map for the bootloader.
|
/** Simplified memory map for the bootloader.
|
||||||
* Make sure the bootloader can load into main memory without overwriting itself.
|
* Make sure the bootloader can load into main memory without overwriting itself.
|
||||||
*
|
*
|
@@ -14,7 +14,7 @@ extern "C" {
|
|||||||
|
|
||||||
/**@{*/
|
/**@{*/
|
||||||
/**
|
/**
|
||||||
* @brief labels from bootloader linker script: bootloader.ld
|
* @brief labels from bootloader linker script: bootloader.ld.in
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
extern int _bss_start;
|
extern int _bss_start;
|
||||||
|
@@ -99,7 +99,15 @@ else()
|
|||||||
PROPERTIES COMPILE_FLAGS
|
PROPERTIES COMPILE_FLAGS
|
||||||
-fno-stack-protector)
|
-fno-stack-protector)
|
||||||
|
|
||||||
include(${CMAKE_CURRENT_LIST_DIR}/ld/ld.cmake)
|
target_linker_script(${COMPONENT_LIB} INTERFACE "ld/${target}/memory.ld.in")
|
||||||
|
|
||||||
|
# Generate sections.ld.in and pass it through linker script generator
|
||||||
|
set(sections_name "ld/${target}/sections.ld.in")
|
||||||
|
if(CONFIG_ESP32P4_REV_MIN_300)
|
||||||
|
set(sections_name "ld/${target}/sections.rev3.ld.in")
|
||||||
|
endif()
|
||||||
|
target_linker_script(${COMPONENT_LIB} INTERFACE "${sections_name}"
|
||||||
|
PROCESS "${CMAKE_CURRENT_BINARY_DIR}/ld/sections.ld")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(CONFIG_IDF_ENV_FPGA OR CONFIG_ESP_BRINGUP_BYPASS_CPU_CLK_SETTING)
|
if(CONFIG_IDF_ENV_FPGA OR CONFIG_ESP_BRINGUP_BYPASS_CPU_CLK_SETTING)
|
||||||
|
@@ -28,7 +28,7 @@
|
|||||||
|
|
||||||
#define SRAM_IRAM_START 0x40370000
|
#define SRAM_IRAM_START 0x40370000
|
||||||
#define SRAM_DIRAM_I_START 0x40378000
|
#define SRAM_DIRAM_I_START 0x40378000
|
||||||
#define SRAM_IRAM_END 0x403CB700 /* Please refer to ESP32-S3 bootloader.ld for more information on this */
|
#define SRAM_IRAM_END 0x403CB700 /* Please refer to ESP32-S3 bootloader linker script for more information on this */
|
||||||
#define I_D_SRAM_OFFSET (SRAM_DIRAM_I_START - SRAM_DRAM_START)
|
#define I_D_SRAM_OFFSET (SRAM_DIRAM_I_START - SRAM_DRAM_START)
|
||||||
|
|
||||||
#define SRAM_DRAM_START 0x3FC88000
|
#define SRAM_DRAM_START 0x3FC88000
|
||||||
|
@@ -1,57 +0,0 @@
|
|||||||
idf_build_get_property(target IDF_TARGET)
|
|
||||||
idf_build_get_property(sdkconfig_header SDKCONFIG_HEADER)
|
|
||||||
idf_build_get_property(config_dir CONFIG_DIR)
|
|
||||||
|
|
||||||
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/ld")
|
|
||||||
|
|
||||||
# Cmake script that generates linker script from "*.ld.in" scripts using compiler preprocessor
|
|
||||||
set(linker_script_generator "${CMAKE_CURRENT_BINARY_DIR}/ld/linker_script_generator.cmake")
|
|
||||||
file(WRITE ${linker_script_generator}
|
|
||||||
[=[
|
|
||||||
execute_process(COMMAND "${CC}" "-C" "-P" "-x" "c" "-E" "-I" "${CONFIG_DIR}" "-I" "${LD_DIR}" "${SOURCE}"
|
|
||||||
RESULT_VARIABLE RET_CODE
|
|
||||||
OUTPUT_VARIABLE PREPROCESSED_LINKER_SCRIPT
|
|
||||||
ERROR_VARIABLE ERROR_VAR)
|
|
||||||
if(RET_CODE AND NOT RET_CODE EQUAL 0)
|
|
||||||
message(FATAL_ERROR "Can't generate ${TARGET}\nRET_CODE: ${RET_CODE}\nERROR_MESSAGE: ${ERROR_VAR}")
|
|
||||||
endif()
|
|
||||||
string(REPLACE "\\n" "\n" TEXT "${PREPROCESSED_LINKER_SCRIPT}")
|
|
||||||
file(WRITE "${TARGET}" "${TEXT}")
|
|
||||||
]=])
|
|
||||||
|
|
||||||
set(target_folder "${target}")
|
|
||||||
|
|
||||||
function(preprocess_linker_file name_in name_out out_path)
|
|
||||||
set(script_in "${CMAKE_CURRENT_LIST_DIR}/${target_folder}/${name_in}")
|
|
||||||
set(script_out "${CMAKE_CURRENT_BINARY_DIR}/ld/${name_out}")
|
|
||||||
set(${out_path} ${script_out} PARENT_SCOPE)
|
|
||||||
|
|
||||||
add_custom_command(
|
|
||||||
OUTPUT ${script_out}
|
|
||||||
COMMAND ${CMAKE_COMMAND}
|
|
||||||
"-DCC=${CMAKE_C_COMPILER}"
|
|
||||||
"-DSOURCE=${script_in}"
|
|
||||||
"-DTARGET=${script_out}"
|
|
||||||
"-DCONFIG_DIR=${config_dir}"
|
|
||||||
"-DLD_DIR=${CMAKE_CURRENT_LIST_DIR}"
|
|
||||||
-P "${linker_script_generator}"
|
|
||||||
MAIN_DEPENDENCY ${script_in}
|
|
||||||
DEPENDS ${sdkconfig_header}
|
|
||||||
COMMENT "Generating ${script_out} linker script..."
|
|
||||||
VERBATIM)
|
|
||||||
add_custom_target("${name_out}" DEPENDS "${script_out}")
|
|
||||||
add_dependencies(${COMPONENT_LIB} "${name_out}")
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
# Generate memory.ld
|
|
||||||
preprocess_linker_file("memory.ld.in" "memory.ld" ld_out_path)
|
|
||||||
target_linker_script(${COMPONENT_LIB} INTERFACE "${ld_out_path}")
|
|
||||||
|
|
||||||
# Generate sections.ld.in and pass it through linker script generator
|
|
||||||
if(CONFIG_ESP32P4_REV_MIN_300)
|
|
||||||
preprocess_linker_file("sections.rev3.ld.in" "sections.ld.in" ld_out_path)
|
|
||||||
else()
|
|
||||||
preprocess_linker_file("sections.ld.in" "sections.ld.in" ld_out_path)
|
|
||||||
endif()
|
|
||||||
target_linker_script(${COMPONENT_LIB} INTERFACE "${ld_out_path}"
|
|
||||||
PROCESS "${CMAKE_CURRENT_BINARY_DIR}/ld/sections.ld")
|
|
||||||
|
15
tools/cmake/linker_script_preprocessor.cmake
Normal file
15
tools/cmake/linker_script_preprocessor.cmake
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# Split CFLAGS string into list for proper argument passing
|
||||||
|
# Uses UNIX_COMMAND method because NATIVE_COMMAND has issues on Windows
|
||||||
|
# where the first argument is parsed specially, causing problems with quoted paths
|
||||||
|
# Note: Paths are expected to be quoted in the CFLAGS variable
|
||||||
|
separate_arguments(CFLAGS_LIST UNIX_COMMAND "${CFLAGS}")
|
||||||
|
|
||||||
|
execute_process(COMMAND "${CC}" "-C" "-P" "-x" "c" "-E" ${CFLAGS_LIST} "${SOURCE}"
|
||||||
|
RESULT_VARIABLE RET_CODE
|
||||||
|
OUTPUT_VARIABLE PREPROCESSED_LINKER_SCRIPT
|
||||||
|
ERROR_VARIABLE ERROR_VAR)
|
||||||
|
if(RET_CODE AND NOT RET_CODE EQUAL 0)
|
||||||
|
message(FATAL_ERROR "Can't generate ${TARGET}\nRET_CODE: ${RET_CODE}\nERROR_MESSAGE: ${ERROR_VAR}")
|
||||||
|
endif()
|
||||||
|
string(REPLACE "\\n" "\n" TEXT "${PREPROCESSED_LINKER_SCRIPT}")
|
||||||
|
file(WRITE "${TARGET}" "${TEXT}")
|
@@ -132,18 +132,112 @@ function(file_append_line file line)
|
|||||||
file(APPEND "${file}" "${line}${line_ending}")
|
file(APPEND "${file}" "${line}${line_ending}")
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
# Add one or more linker scripts to the target, including a link-time dependency
|
# Preprocess linker script using C preprocessor
|
||||||
#
|
#
|
||||||
# Automatically adds a -L search path for the containing directory (if found),
|
# Processes .in linker script files through the C preprocessor to handle:
|
||||||
# and then adds -T with the filename only. This allows INCLUDE directives to be
|
# - #include directives for modular linker scripts
|
||||||
# used to include other linker scripts in the same directory.
|
# - #define macros and conditional compilation
|
||||||
|
# - Config-dependent linker script generation
|
||||||
|
#
|
||||||
|
# This function creates a custom command to preprocess the input script,
|
||||||
|
# determines the appropriate output path, and generates a CMake target for dependency tracking.
|
||||||
|
#
|
||||||
|
# Parameters:
|
||||||
|
# cmake_target - CMake target to add dependencies to
|
||||||
|
# script_in - Input .in file path (absolute)
|
||||||
|
# output_var - Variable name to store the resulting output path
|
||||||
|
# preserve_suffix - Whether to keep .in suffix in output filename (optional)
|
||||||
|
function(preprocess_linker_file cmake_target script_in output_var preserve_suffix)
|
||||||
|
set(output_dir "${CMAKE_CURRENT_BINARY_DIR}/ld")
|
||||||
|
# Ensure output directory exists
|
||||||
|
file(MAKE_DIRECTORY "${output_dir}")
|
||||||
|
|
||||||
|
# Determine output filename with conditional .in suffix removal
|
||||||
|
get_filename_component(script_name "${script_in}" NAME)
|
||||||
|
set(script_out "${output_dir}/${script_name}")
|
||||||
|
|
||||||
|
# Remove .in suffix if not preserving it
|
||||||
|
if(NOT preserve_suffix)
|
||||||
|
string(REGEX REPLACE "\\.in$" "" script_out "${script_out}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Return the output path to caller
|
||||||
|
set(${output_var} "${script_out}" PARENT_SCOPE)
|
||||||
|
|
||||||
|
# Get build properties
|
||||||
|
idf_build_get_property(sdkconfig_header SDKCONFIG_HEADER)
|
||||||
|
idf_build_get_property(config_dir CONFIG_DIR)
|
||||||
|
idf_build_get_property(idf_path IDF_PATH)
|
||||||
|
idf_build_get_property(idf_target IDF_TARGET)
|
||||||
|
|
||||||
|
# Reference the linker script generator
|
||||||
|
set(linker_script_generator "${idf_path}/tools/cmake/linker_script_preprocessor.cmake")
|
||||||
|
|
||||||
|
# check if the script_in parent directory is the name of the idf_target
|
||||||
|
get_filename_component(script_parent_dir "${script_in}" DIRECTORY)
|
||||||
|
get_filename_component(script_parent_name "${script_parent_dir}" NAME)
|
||||||
|
|
||||||
|
# Initialize extra_cflags to avoid undefined variable
|
||||||
|
set(extra_cflags "")
|
||||||
|
|
||||||
|
if(script_parent_name STREQUAL idf_target)
|
||||||
|
# Add "../.." directory to include path (e.g. for esp_system component)
|
||||||
|
get_filename_component(dir_to_include "${script_parent_dir}" DIRECTORY)
|
||||||
|
set(extra_cflags "-I\"${dir_to_include}\"")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT ${script_out}
|
||||||
|
COMMAND ${CMAKE_COMMAND}
|
||||||
|
"-DCC=${CMAKE_C_COMPILER}"
|
||||||
|
"-DSOURCE=${script_in}"
|
||||||
|
"-DTARGET=${script_out}"
|
||||||
|
"-DCFLAGS=-I\"${config_dir}\" ${extra_cflags}"
|
||||||
|
-P "${linker_script_generator}"
|
||||||
|
MAIN_DEPENDENCY ${script_in}
|
||||||
|
DEPENDS ${sdkconfig_header}
|
||||||
|
COMMENT "Preprocessing linker script ${script_in} -> ${script_out}"
|
||||||
|
VERBATIM)
|
||||||
|
|
||||||
|
# Create target name based on script filename
|
||||||
|
string(MAKE_C_IDENTIFIER "${script_name}_preprocess" target_name)
|
||||||
|
add_custom_target("${target_name}" DEPENDS "${script_out}")
|
||||||
|
|
||||||
|
add_dependencies(${cmake_target} "${target_name}")
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# Add one or more linker scripts to the target, including a link-time dependency.
|
||||||
|
#
|
||||||
|
# Core Features:
|
||||||
|
# - Adds -L search path for the containing directory (enables INCLUDE directives)
|
||||||
|
# - Adds -T with the filename only for linker command
|
||||||
|
# - Automatically preprocesses .in files using C preprocessor
|
||||||
|
# - Supports explicit PROCESS parameter to enable ldgen processing
|
||||||
|
#
|
||||||
|
# Parameters:
|
||||||
|
# target - Target to add linker scripts to
|
||||||
|
# deptype - Dependency type (PUBLIC, PRIVATE, INTERFACE)
|
||||||
|
# scriptfiles - List of linker script files (.ld, .ld.in, etc.)
|
||||||
|
# PROCESS - Optional: enable ldgen processing
|
||||||
function(target_linker_script target deptype scriptfiles)
|
function(target_linker_script target deptype scriptfiles)
|
||||||
cmake_parse_arguments(_ "" "PROCESS" "" ${ARGN})
|
cmake_parse_arguments(_ "" "PROCESS" "" ${ARGN})
|
||||||
foreach(scriptfile ${scriptfiles})
|
foreach(scriptfile ${scriptfiles})
|
||||||
get_filename_component(abs_script "${scriptfile}" ABSOLUTE)
|
get_filename_component(abs_script "${scriptfile}" ABSOLUTE)
|
||||||
message(STATUS "Adding linker script ${abs_script}")
|
message(STATUS "Adding linker script ${abs_script}")
|
||||||
|
|
||||||
|
# === SCRIPT PROCESSING PIPELINE ===
|
||||||
|
# Stage 1: Auto-preprocess .in files (C preprocessor)
|
||||||
|
# Stage 2: Apply explicit template processing (ldgen templates)
|
||||||
|
|
||||||
|
# Stage 1: Handle .in files with C preprocessor
|
||||||
|
if(abs_script MATCHES "\\.in$")
|
||||||
|
message(STATUS " -> Preprocessing .in script: ${abs_script}")
|
||||||
|
preprocess_linker_file("${target}" "${abs_script}" abs_script "${__PROCESS}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Stage 2: Apply explicit ldgen template processing (if requested)
|
||||||
if(__PROCESS)
|
if(__PROCESS)
|
||||||
|
message(STATUS " -> Applying ldgen processing: ${abs_script}")
|
||||||
get_filename_component(output "${__PROCESS}" ABSOLUTE)
|
get_filename_component(output "${__PROCESS}" ABSOLUTE)
|
||||||
__ldgen_process_template(${abs_script} ${output})
|
__ldgen_process_template(${abs_script} ${output})
|
||||||
set(abs_script ${output})
|
set(abs_script ${output})
|
||||||
@@ -165,7 +259,7 @@ function(target_linker_script target deptype scriptfiles)
|
|||||||
# For the time being, record all linker scripts in __LINK_DEPENDS and attach manually to
|
# For the time being, record all linker scripts in __LINK_DEPENDS and attach manually to
|
||||||
# the executable target once it is known.
|
# the executable target once it is known.
|
||||||
if(NOT __PROCESS)
|
if(NOT __PROCESS)
|
||||||
idf_build_set_property(__LINK_DEPENDS ${abs_script} APPEND)
|
idf_build_set_property(__LINK_DEPENDS "${abs_script}" APPEND)
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
@@ -575,3 +575,6 @@
|
|||||||
-
|
-
|
||||||
re: "error: implicit declaration of function 'vPortCleanUpTCB'"
|
re: "error: implicit declaration of function 'vPortCleanUpTCB'"
|
||||||
hint: "The legacy FreeRTOS hook vPortCleanUpTCB() has been removed from ESP-IDF. Use CONFIG_FREERTOS_TASK_PRE_DELETION_HOOK with vTaskPreDeletionHook( void * pxTCB ) instead."
|
hint: "The legacy FreeRTOS hook vPortCleanUpTCB() has been removed from ESP-IDF. Use CONFIG_FREERTOS_TASK_PRE_DELETION_HOOK with vTaskPreDeletionHook( void * pxTCB ) instead."
|
||||||
|
|
||||||
|
re: "cannot open linker script file bootloader.ld"
|
||||||
|
hint: "The file 'bootloader.ld' was renamed to 'bootloader.ld.in' in ESP-IDF v6.0. Please use update your build scripts."
|
||||||
|
Reference in New Issue
Block a user