mirror of
https://github.com/apache/nuttx.git
synced 2026-09-03 23:52:58 +00:00
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 <lzy00419@outlook.com>
46 lines
1.7 KiB
Text
46 lines
1.7 KiB
Text
set(CMAKE_SYSTEM_NAME Generic)
|
|
set(CMAKE_SYSTEM_VERSION 1)
|
|
set(NUTTX 1)
|
|
|
|
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
|
|
|
|
set(NUTTX_PATH "${CMAKE_CURRENT_LIST_DIR}/..")
|
|
get_filename_component(NUTTX_PATH "${NUTTX_PATH}" ABSOLUTE)
|
|
include(${NUTTX_PATH}/scripts/target.cmake)
|
|
|
|
# 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__")
|
|
|
|
set(CMAKE_C_STANDARD_INCLUDE_DIRECTORIES ${NUTTX_PATH}/include
|
|
${NUTTX_PATH}/arch/chip)
|
|
|
|
set(CMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES
|
|
${NUTTX_PATH}/include/${NUTTX_CXX} ${NUTTX_PATH}/include
|
|
${NUTTX_PATH}/arch/chip)
|
|
|
|
add_compile_options(-nostdlib)
|
|
add_compile_options(-ffunction-sections -fdata-sections)
|
|
|
|
# same entry used for all build modes in crt0.c
|
|
|
|
set(ENTRY_NAME "_start")
|
|
|
|
set(CMAKE_C_LINK_EXECUTABLE
|
|
"<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} ${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)
|
|
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
|
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
|
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|