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