blob: c63319e751ad46de635c5ae453f75b845830a5cf [file] [log] [blame]
#
# SPDX-License-Identifier: BSD-3-Clause
# SPDX-FileCopyrightText: Copyright TF-RMM Contributors.
#
include_guard()
include(${CMAKE_CURRENT_LIST_DIR}/common_aarch64.cmake)
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
find_program(CMAKE_C_COMPILER
NAMES "clang"
DOC "Path to clang."
REQUIRED)
set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER})
find_program(CMAKE_OBJCOPY
NAMES "llvm-objcopy"
DOC "Path to llvm-objcopy."
REQUIRED)
find_program(CMAKE_OBJDUMP
NAMES "llvm-objdump"
DOC "Path to llvm-objcopy."
REQUIRED)
find_program(CMAKE_AR
NAMES "llvm-ar"
DOC "Path to llvm-ar."
REQUIRED)
find_program(CMAKE_RANLIB
NAMES "llvm-ranlib"
DOC "Path to llvm-ranlib."
REQUIRED)
# Find the path to AArch64 gcc
find_program(A64_GCC
NAMES "$ENV{CROSS_COMPILE}gcc"
DOC "Path to aarch64 gcc"
REQUIRED)
# Get the AArch64 GCC triplet
execute_process(COMMAND ${A64_GCC} -dumpmachine
OUTPUT_VARIABLE A64-GCC-TRIPLET
OUTPUT_STRIP_TRAILING_WHITESPACE)
# Construct the path to `include` folder of AArch64 GCC toolchain
get_filename_component(A64_GCC_DIR ${A64_GCC} DIRECTORY)
set(A64_GCC_INC_DIR "${A64_GCC_DIR}/../${A64-GCC-TRIPLET}/include")
message(STATUS "Using ${A64_GCC_INC_DIR} for std include headers")
foreach(language IN ITEMS ASM C)
set(CMAKE_${language}_COMPILER_TARGET "${A64-GCC-TRIPLET}")
string(APPEND CMAKE_${language}_STANDARD_INCLUDE_DIRECTORIES "${A64_GCC_INC_DIR}")
string(APPEND CMAKE_${language}_FLAGS_INIT "-Wno-unknown-warning-option ")
string(APPEND CMAKE_${language}_FLAGS_INIT "-Wno-unused-function ")
endforeach()
# Use lld as default linker
string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT "-fuse-ld=lld ")