# # Copyright (c) 2020 Arm Limited. All rights reserved. # # SPDX-License-Identifier: Apache-2.0 # # Licensed under the Apache License, Version 2.0 (the License); you may # not use this file except in compliance with the License. # You may obtain a copy of the License at # # www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an AS IS BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # function(ethosu_link_options target scope) cmake_parse_arguments(ARG "" "LINK_FILE" "" ${ARGN}) if (CMAKE_CXX_COMPILER_ID STREQUAL "ARMClang") set(LINK_FILE_OUT ${CMAKE_CURRENT_SOURCE_DIR}/${ARG_LINK_FILE}.scatter) set(LINK_FILE_OPTION "--scatter") elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") set(LINK_FILE ${ARG_LINK_FILE}.ld) set(LINK_FILE_IN ${CMAKE_CURRENT_SOURCE_DIR}/${LINK_FILE}) set(LINK_FILE_OUT ${CMAKE_CURRENT_BINARY_DIR}/${LINK_FILE}) set(LINK_FILE_OPTION "-T") set(prop "$") 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) endif() target_link_options(${target} ${scope} ${LINK_FILE_OPTION} ${LINK_FILE_OUT}) set_target_properties(${target} PROPERTIES LINK_DEPENDS ${LINK_FILE_OUT}) endfunction()