aboutsummaryrefslogtreecommitdiff
path: root/cmake/helpers.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/helpers.cmake')
-rw-r--r--cmake/helpers.cmake44
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()