123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- set_property(TARGET linker PROPERTY devices_start_symbol "Image\\$$\\$$device\\$$\\$$Base")
- find_program(CMAKE_LINKER ${CROSS_COMPILE}armlink PATH ${TOOLCHAIN_HOME} NO_DEFAULT_PATH)
- add_custom_target(armlink)
- macro(toolchain_ld_base)
- endmacro()
- function(toolchain_ld_force_undefined_symbols)
- foreach(symbol ${ARGN})
- zephyr_link_libraries(--undefined=${symbol})
- endforeach()
- endfunction()
- macro(toolchain_ld_baremetal)
- endmacro()
- macro(configure_linker_script linker_script_gen linker_pass_define)
- set(STEERING_FILE)
- set(STEERING_C)
- set(STEERING_FILE_ARG)
- set(STEERING_C_ARG)
- if("${linker_pass_define}" STREQUAL "-DLINKER_ZEPHYR_PREBUILT")
- set(PASS 1)
- elseif("${linker_pass_define}" STREQUAL "-DLINKER_ZEPHYR_FINAL;-DLINKER_PASS2")
- set(PASS 2)
- set(STEERING_FILE ${CMAKE_CURRENT_BINARY_DIR}/armlink_symbol_steering.steer)
- set(STEERING_C ${CMAKE_CURRENT_BINARY_DIR}/armlink_symbol_steering.c)
- set(STEERING_FILE_ARG "-DSTEERING_FILE=${STEERING_FILE}")
- set(STEERING_C_ARG "-DSTEERING_C=${STEERING_C}")
- endif()
- add_custom_command(
- OUTPUT ${linker_script_gen}
- ${STEERING_FILE}
- ${STEERING_C}
- COMMAND ${CMAKE_COMMAND}
- -DPASS=${PASS}
- -DMEMORY_REGIONS="$<TARGET_PROPERTY:linker,MEMORY_REGIONS>"
- -DGROUPS="$<TARGET_PROPERTY:linker,GROUPS>"
- -DSECTIONS="$<TARGET_PROPERTY:linker,SECTIONS>"
- -DSECTION_SETTINGS="$<TARGET_PROPERTY:linker,SECTION_SETTINGS>"
- -DSYMBOLS="$<TARGET_PROPERTY:linker,SYMBOLS>"
- ${STEERING_FILE_ARG}
- ${STEERING_C_ARG}
- -DOUT_FILE=${CMAKE_CURRENT_BINARY_DIR}/${linker_script_gen}
- -P ${ZEPHYR_BASE}/cmake/linker/armlink/scatter_script.cmake
- )
- if("${PASS}" EQUAL 2)
- add_library(armlink_steering OBJECT ${STEERING_C})
- target_link_libraries(armlink_steering PRIVATE zephyr_interface)
- endif()
- endmacro()
- function(toolchain_ld_link_elf)
- cmake_parse_arguments(
- TOOLCHAIN_LD_LINK_ELF
- ""
- "TARGET_ELF;OUTPUT_MAP;LINKER_SCRIPT"
- "LIBRARIES_PRE_SCRIPT;LIBRARIES_POST_SCRIPT;DEPENDENCIES"
- ${ARGN}
- )
- foreach(lib ${ZEPHYR_LIBS_PROPERTY})
- if(NOT ${lib} STREQUAL arch__arm__core__aarch32__cortex_m)
- list(APPEND ZEPHYR_LIBS_OBJECTS $<TARGET_OBJECTS:${lib}>)
- list(APPEND ZEPHYR_LIBS_OBJECTS $<TARGET_PROPERTY:${lib},LINK_LIBRARIES>)
- endif()
- endforeach()
- target_link_libraries(
- ${TOOLCHAIN_LD_LINK_ELF_TARGET_ELF}
- ${TOOLCHAIN_LD_LINK_ELF_LIBRARIES_PRE_SCRIPT}
- --scatter=${TOOLCHAIN_LD_LINK_ELF_LINKER_SCRIPT}
- ${TOOLCHAIN_LD_LINK_ELF_LIBRARIES_POST_SCRIPT}
- $<TARGET_OBJECTS:arch__arm__core__aarch32__cortex_m>
- --map --list=${TOOLCHAIN_LD_LINK_ELF_OUTPUT_MAP}
- ${ZEPHYR_LIBS_OBJECTS}
- kernel
- $<TARGET_OBJECTS:${OFFSETS_LIB}>
- --library_type=microlib
- --entry=$<TARGET_PROPERTY:linker,ENTRY>
- "--keep=\"*.o(.init_*)\""
- "--keep=\"*.o(.device_*)\""
- $<TARGET_OBJECTS:armlink_steering>
- --edit=${CMAKE_CURRENT_BINARY_DIR}/armlink_symbol_steering.steer
-
-
-
- --diag_suppress=6331,6332
-
-
- --diag_suppress=6314
-
-
-
-
- --diag_suppress=6312
-
-
-
- --diag_suppress=6092
-
-
- --diag_suppress=6319
-
- --diag_suppress=6329
- ${TOOLCHAIN_LIBS_OBJECTS}
- ${TOOLCHAIN_LD_LINK_ELF_DEPENDENCIES}
- )
- endfunction(toolchain_ld_link_elf)
- include(${ZEPHYR_BASE}/cmake/linker/ld/target_base.cmake)
- include(${ZEPHYR_BASE}/cmake/linker/ld/target_cpp.cmake)
- include(${ZEPHYR_BASE}/cmake/linker/ld/target_relocation.cmake)
- include(${ZEPHYR_BASE}/cmake/linker/ld/target_configure.cmake)
|