From f821c61fddd0193b6333a76f39904d201f30b7e6 Mon Sep 17 00:00:00 2001 From: Jonas Ohlsson Date: Fri, 4 Jun 2021 14:58:34 +0200 Subject: Remove dependency on cpp Remove dependency on cpp, and instead use the specified compiler to preprocess the linker scripts. Signed-off-by: Jonas Ohlsson Change-Id: I000082f8e90015b12f99ba3f616b6b3e07647873 --- cmake/helpers.cmake | 44 ++++++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 20 deletions(-) (limited to 'cmake') 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 "$") 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$\") + # 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$" - 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$" + COMMAND_EXPAND_LISTS "-I$,;-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() -- cgit v1.2.1