1#------------------------------------------------------------------------------- 2# Copyright (c) 2020, Arm Limited and Contributors. All rights reserved. 3# 4# SPDX-License-Identifier: BSD-3-Clause 5# 6#------------------------------------------------------------------------------- 7 8#[===[.rst: 9.. cmake:command:: env_set_link_options 10 11 .. code-block:: cmake 12 13 env_set_link_options(TGT foo) 14 15 Set default compile options for the arm-linux environment. 16 17 Inputs: 18 19 ``TGT`` 20 Name of target to compile generated source files. 21 22#]===] 23function(env_set_link_options) 24 set(_options ) 25 set(_oneValueArgs TGT) 26 set(_multiValueArgs ) 27 28 cmake_parse_arguments(PARAMS "${_options}" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN}) 29 30 #Verify mandatory parameters 31 if (NOT DEFINED PARAMS_TGT) 32 message(FATAL_ERROR "env_set_link_options(): mandatory parameter TGT missing.") 33 endif() 34 35 if(CMAKE_C_COMPILER_ID STREQUAL "GNU") 36 # Options for GCC that control linking 37 target_link_options(${PARAMS_TGT} PRIVATE 38 -fno-lto 39 -pie 40 -zmax-page-size=4096 41 ) 42 # Options directly for LD, these are not understood by GCC 43 target_link_options(${PARAMS_TGT} PRIVATE 44 -Wl,--as-needed 45 -Wl,--sort-section=alignment 46 # -Wl,--dynamic-list ${CMAKE_CURRENT_LIST_DIR}/dyn_list 47 ) 48 endif() 49 50endfunction() 51