This is an automated email from the ASF dual-hosted git repository.
xiaoxiang781216 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git
The following commit(s) were added to refs/heads/master by this push:
new a2c0773089d tools/export: prefix each linker script in toolchain.cmake.
a2c0773089d is described below
commit a2c0773089d56881522ce98e89a720e73546c2c2
Author: Zhaoqi Xu <[email protected]>
AuthorDate: Mon Aug 31 16:23:12 2026 +0800
tools/export: prefix each linker script in toolchain.cmake.
make export writes several names into LDNAME for boards that use
more than one linker script. The exported toolchain.cmake only
prefixed the first file, so ld searched for the rest in the
application build directory.
Normalize NUTTX_PATH so the generated -T arguments do not keep
the scripts/../scripts form.
Fixes apache/nuttx#19820.
Signed-off-by: Zhaoqi Xu <[email protected]>
---
tools/toolchain.cmake.export | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/tools/toolchain.cmake.export b/tools/toolchain.cmake.export
index 7cf06b4d65e..bb11bbf8311 100644
--- a/tools/toolchain.cmake.export
+++ b/tools/toolchain.cmake.export
@@ -4,10 +4,17 @@ set(NUTTX 1)
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
-set(NUTTX_PATH ${CMAKE_CURRENT_LIST_DIR}/..)
+set(NUTTX_PATH "${CMAKE_CURRENT_LIST_DIR}/..")
+get_filename_component(NUTTX_PATH "${NUTTX_PATH}" ABSOLUTE)
include(${NUTTX_PATH}/scripts/target.cmake)
-set(LINKER_SCRIPT ${NUTTX_PATH}/scripts/${LDNAME})
+# LDNAME may list several space-separated linker scripts. Prefix each one.
+separate_arguments(_ldname_list UNIX_COMMAND "${LDNAME}")
+set(_ldscripts)
+foreach(_ld IN LISTS _ldname_list)
+ list(APPEND _ldscripts "-T${NUTTX_PATH}/scripts/${_ld}")
+endforeach()
+string(REPLACE ";" " " LINKER_SCRIPT "${_ldscripts}")
set(CMAKE_C_FLAGS "${ARCHCPUFLAGS} ${ARCHCFLAGS} -D__NuttX__")
set(CMAKE_CXX_FLAGS "${ARCHCPUFLAGS} ${ARCHCXXFLAGS} -D__NuttX__")
@@ -27,10 +34,10 @@ add_compile_options(-ffunction-sections -fdata-sections)
set(ENTRY_NAME "_start")
set(CMAKE_C_LINK_EXECUTABLE
- "<CMAKE_LINKER> ${LDFLAGS} --entry=${ENTRY_NAME} -T${LINKER_SCRIPT}
<OBJECTS> -o <TARGET> <LINK_LIBRARIES> -L${NUTTX_PATH}/libs --start-group
${LDLIBS} ${EXTRA_LIBS} --end-group"
+ "<CMAKE_LINKER> ${LDFLAGS} --entry=${ENTRY_NAME} ${LINKER_SCRIPT}
<OBJECTS> -o <TARGET> <LINK_LIBRARIES> -L${NUTTX_PATH}/libs --start-group
${LDLIBS} ${EXTRA_LIBS} --end-group"
)
set(CMAKE_CXX_LINK_EXECUTABLE
- "<CMAKE_LINKER> ${LDFLAGS} --entry=${ENTRY_NAME} -T${LINKER_SCRIPT}
<OBJECTS> -o <TARGET> <LINK_LIBRARIES> -L${NUTTX_PATH}/libs --start-group
${LDLIBS} ${EXTRA_LIBS} --end-group"
+ "<CMAKE_LINKER> ${LDFLAGS} --entry=${ENTRY_NAME} ${LINKER_SCRIPT}
<OBJECTS> -o <TARGET> <LINK_LIBRARIES> -L${NUTTX_PATH}/libs --start-group
${LDLIBS} ${EXTRA_LIBS} --end-group"
)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)