diff options
author | Jonas Ohlsson <jonas.ohlsson@arm.com> | 2021-06-04 14:58:34 +0200 |
---|---|---|
committer | Jonas Ohlsson <jonas.ohlsson@arm.com> | 2021-06-04 14:58:34 +0200 |
commit | f821c61fddd0193b6333a76f39904d201f30b7e6 (patch) | |
tree | 008b3f6f16df5a67ce60f083d754cec9bc1bf0a5 /cmake | |
parent | 3adfbc1bf472a095ef01e9f62f80d55e0d834dfe (diff) | |
download | ethos-u-core-platform-f821c61fddd0193b6333a76f39904d201f30b7e6.tar.gz |
Remove dependency on cpp
Remove dependency on cpp, and instead use the specified
compiler to preprocess the linker scripts.
Signed-off-by: Jonas Ohlsson <jonas.ohlsson@arm.com>
Change-Id: I000082f8e90015b12f99ba3f616b6b3e07647873
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/helpers.cmake | 44 |
1 files changed, 24 insertions, 20 deletions
diff --git a/cmake/helpers.cmake b/cmake/helpers.cmake index 21d3a24..da954c0 100644 --- a/cmake/helpers.cmake +++ b/cmake/helpers.cmake @@ -41,31 +41,35 @@ function(ethosu_eval_link_options target) set(prop "$<TARGET_PROPERTY:${target},COMPILE_DEFINITIONS>") if (CMAKE_CXX_COMPILER_ID STREQUAL "ARMClang") - set(LINK_FILE_OUT ${LINK_FILE}.scatter) + set(LINK_FILE_EXT scatter) + set(LINK_FILE_IN ${LINK_FILE}.${LINK_FILE_EXT}) set(LINK_FILE_OPTION "--scatter") - - target_link_options(${target} PUBLIC - --predefine=\"-D$<JOIN:${prop},\" ;--predefine=\"-D>\") + # Note: the -mcpu flag is added to avoid warnings caused when using the default cpu/arch. + set(COMPILER_PREPROCESSOR_OPTIONS -mcpu=${CMAKE_SYSTEM_PROCESSOR} --target=arm-arm-none-eabi -E -x c -P) elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - set(LINK_FILE_IN ${LINK_FILE}.ld) - get_filename_component(LINK_FILE_OUT_BASE ${LINK_FILE} NAME) - set(LINK_FILE_OUT ${CMAKE_CURRENT_BINARY_DIR}/${LINK_FILE_OUT_BASE}-${target}.ld) + set(LINK_FILE_EXT ld) + set(LINK_FILE_IN ${LINK_FILE}.${LINK_FILE_EXT}) set(LINK_FILE_OPTION "-T") - - add_custom_command( - OUTPUT ${LINK_FILE_OUT} - DEPENDS ${LINK_FILE_IN} - BYPRODUCTS ${LINK_FILE_OUT} - COMMAND ${CMAKE_C_COMPILER} -E -x c -P -o ${LINK_FILE_OUT} ${LINK_FILE_IN} - COMMAND_EXPAND_LISTS "-D$<JOIN:${prop},;-D>" - COMMENT "Preprocessing and generating linker script" - VERBATIM) - add_custom_target(${target}-linker-script - DEPENDS ${LINK_FILE_OUT} - VERBATIM) - add_dependencies(${target} ${target}-linker-script) + set(COMPILER_PREPROCESSOR_OPTIONS -E -x c -P) endif() + get_filename_component(LINK_FILE_OUT_BASE ${LINK_FILE} NAME) + set(LINK_FILE_OUT ${CMAKE_CURRENT_BINARY_DIR}/${LINK_FILE_OUT_BASE}-${target}.${LINK_FILE_EXT}) + + add_custom_command( + OUTPUT ${LINK_FILE_OUT} + DEPENDS ${LINK_FILE_IN} + BYPRODUCTS ${LINK_FILE_OUT} + COMMAND ${CMAKE_C_COMPILER} ${COMPILER_PREPROCESSOR_OPTIONS} -o ${LINK_FILE_OUT} ${LINK_FILE_IN} + COMMAND_EXPAND_LISTS "-D$<JOIN:${prop},;-D>" + COMMAND_EXPAND_LISTS "-I$<JOIN:$<TARGET_PROPERTY:${target},INCLUDE_DIRECTORIES>,;-I>" + COMMENT "Preprocessing and generating linker script" + VERBATIM) + add_custom_target(${target}-linker-script + DEPENDS ${LINK_FILE_OUT} + VERBATIM) + add_dependencies(${target} ${target}-linker-script) + target_link_options(${target} PUBLIC ${LINK_FILE_OPTION} ${LINK_FILE_OUT}) set_target_properties(${target} PROPERTIES LINK_DEPENDS ${LINK_FILE_OUT}) endfunction() |