1# 2# Arm SCP/MCP Software 3# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved. 4# 5# SPDX-License-Identifier: BSD-3-Clause 6# 7 8set(CMAKE_ASM_COMPILER 9 armclang 10 CACHE FILEPATH "Path to the assembler.") 11set(CMAKE_C_COMPILER 12 armclang 13 CACHE FILEPATH "Path to the C compiler.") 14set(CMAKE_CXX_COMPILER 15 armclang 16 CACHE FILEPATH "Path to the C++ compiler.") 17 18foreach(language IN ITEMS ASM C CXX) 19 if(CMAKE_${language}_COMPILER_TARGET) 20 string(APPEND CMAKE_${language}_FLAGS_INIT 21 "--target=${CMAKE_${language}_COMPILER_TARGET} ") 22 endif() 23endforeach() 24 25# 26# Suppress warnings about duplicate input files. This one is CMake's fault - 27# linked libraries are added more than once if they are depended on by multiple 28# targets. 29# 30 31string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT "--diag_suppress L6304W ") 32 33# 34# The Arm Compiler 6 support in CMake, until hopefully, v3.18.3, incorrectly 35# uses the Clang-style -Xlinker linker wrapper flag, even though its linker is 36# configured to locate and use 'armlink' instead of 'armclang'. This is just a 37# bit of a hacky workaround to reset it to nothing whenever the CMake toolchain 38# logic tries to override it. 39# 40# https://gitlab.kitware.com/cmake/cmake/-/issues/21154#note_826110 41# 42 43if(CMAKE_VERSION VERSION_LESS "3.18.3") 44 # cmake-lint: disable=C0111 45 46 macro(scp_reset_linker_wrapper_flag) 47 set(CMAKE_C_LINKER_WRAPPER_FLAG "") 48 set(CMAKE_CXX_LINKER_WRAPPER_FLAG "") 49 endmacro() 50 51 variable_watch(CMAKE_C_LINKER_WRAPPER_FLAG scp_reset_linker_wrapper_flag) 52 variable_watch(CMAKE_CXX_LINKER_WRAPPER_FLAG scp_reset_linker_wrapper_flag) 53endif() 54