1#
2# SPDX-License-Identifier: BSD-3-Clause
3# SPDX-FileCopyrightText: Copyright TF-RMM Contributors.
4#
5
6include_guard()
7
8include(${CMAKE_CURRENT_LIST_DIR}/common_aarch64.cmake)
9
10set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
11
12find_program(CMAKE_C_COMPILER
13    NAMES "clang"
14    DOC "Path to clang."
15    REQUIRED)
16
17set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER})
18
19find_program(CMAKE_OBJCOPY
20    NAMES "llvm-objcopy"
21    DOC "Path to llvm-objcopy."
22    REQUIRED)
23
24find_program(CMAKE_OBJDUMP
25    NAMES "llvm-objdump"
26    DOC "Path to llvm-objcopy."
27    REQUIRED)
28
29find_program(CMAKE_AR
30    NAMES "llvm-ar"
31    DOC "Path to llvm-ar."
32    REQUIRED)
33
34find_program(CMAKE_RANLIB
35    NAMES "llvm-ranlib"
36    DOC "Path to llvm-ranlib."
37    REQUIRED)
38
39# Find the path to AArch64 gcc
40find_program(A64_GCC
41    NAMES "$ENV{CROSS_COMPILE}gcc"
42    DOC "Path to aarch64 gcc"
43    REQUIRED)
44
45# Get the AArch64 GCC triplet
46execute_process(COMMAND ${A64_GCC} -dumpmachine
47    OUTPUT_VARIABLE A64-GCC-TRIPLET
48    OUTPUT_STRIP_TRAILING_WHITESPACE)
49
50# Construct the path to `include` folder of AArch64 GCC toolchain
51get_filename_component(A64_GCC_DIR ${A64_GCC} DIRECTORY)
52set(A64_GCC_INC_DIR "${A64_GCC_DIR}/../${A64-GCC-TRIPLET}/include")
53message(STATUS "Using ${A64_GCC_INC_DIR} for std include headers")
54
55foreach(language IN ITEMS ASM C)
56    set(CMAKE_${language}_COMPILER_TARGET "${A64-GCC-TRIPLET}")
57    string(APPEND CMAKE_${language}_STANDARD_INCLUDE_DIRECTORIES "${A64_GCC_INC_DIR}")
58    string(APPEND CMAKE_${language}_FLAGS_INIT "-Wno-unknown-warning-option ")
59    string(APPEND CMAKE_${language}_FLAGS_INIT "-Wno-unused-function ")
60
61    # Avoid warning for -mbranch-protection option not being recognized by clang during link phase.
62    string(APPEND CMAKE_${language}_FLAGS_INIT "-Wno-unused-command-line-argument ")
63endforeach()
64
65# Use lld as default linker
66string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT "-fuse-ld=lld ")
67string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT "-Wl,--apply-dynamic-relocs ")
68