zephyr/cmake/toolchain/llvm/target.cmake
Jonathon Penix 97a734aa01 cmake: llvm: arm64: Set arm64 flags when building with clang
Ensure --target and -mcpu/-mfpu/-mtune are set appropriately when building
with clang targeting arm64/aarch64.

Signed-off-by: Jonathon Penix <jpenix@quicinc.com>
2024-06-13 17:58:04 +02:00

62 lines
1.8 KiB
CMake

# SPDX-License-Identifier: Apache-2.0
if(CONFIG_LLVM_USE_LD)
set(LINKER ld)
elseif(CONFIG_LLVM_USE_LLD)
set(LINKER lld)
endif()
if("${ARCH}" STREQUAL "arm")
if(DEFINED CONFIG_ARMV8_M_MAINLINE)
# ARMv8-M mainline is ARMv7-M with additional features from ARMv8-M.
set(triple armv8m.main-none-eabi)
elseif(DEFINED CONFIG_ARMV8_M_BASELINE)
# ARMv8-M baseline is ARMv6-M with additional features from ARMv8-M.
set(triple armv8m.base-none-eabi)
elseif(DEFINED CONFIG_ARMV7_M_ARMV8_M_MAINLINE)
# ARMV7_M_ARMV8_M_MAINLINE means that ARMv7-M or backward compatible ARMv8-M
# processor is used.
set(triple armv7m-none-eabi)
elseif(DEFINED CONFIG_ARMV6_M_ARMV8_M_BASELINE)
# ARMV6_M_ARMV8_M_BASELINE means that ARMv6-M or ARMv8-M supporting the
# Baseline implementation processor is used.
set(triple armv6m-none-eabi)
else()
# Default ARM target supported by all processors.
set(triple arm-none-eabi)
endif()
elseif("${ARCH}" STREQUAL "arm64")
set(triple aarch64-none-elf)
elseif("${ARCH}" STREQUAL "x86")
if(CONFIG_64BIT)
set(triple x86_64-pc-none-elf)
else()
set(triple i686-pc-none-elf)
endif()
elseif("${ARCH}" STREQUAL "riscv")
if(CONFIG_64BIT)
set(triple riscv64-unknown-elf)
else()
set(triple riscv32-unknown-elf)
endif()
endif()
if(DEFINED triple)
set(CMAKE_C_COMPILER_TARGET ${triple})
set(CMAKE_ASM_COMPILER_TARGET ${triple})
set(CMAKE_CXX_COMPILER_TARGET ${triple})
unset(triple)
endif()
if(CONFIG_LIBGCC_RTLIB)
set(runtime_lib "libgcc")
elseif(CONFIG_COMPILER_RT_RTLIB)
set(runtime_lib "compiler_rt")
endif()
list(APPEND TOOLCHAIN_C_FLAGS --config
${ZEPHYR_BASE}/cmake/toolchain/llvm/clang_${runtime_lib}.cfg)
list(APPEND TOOLCHAIN_LD_FLAGS --config
${ZEPHYR_BASE}/cmake/toolchain/llvm/clang_${runtime_lib}.cfg)