59 lines
1.6 KiB
CMake
59 lines
1.6 KiB
CMake
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
# Copyright (c) 2026 0xKSor
|
|
|
|
set(CMAKE_SYSTEM_NAME Generic)
|
|
set(CMAKE_SYSTEM_PROCESSOR aarch64)
|
|
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
|
|
|
|
if(NOT LLVM_BIN)
|
|
find_program(_CLANG
|
|
NAMES clang
|
|
HINTS
|
|
/opt/homebrew/opt/llvm/bin
|
|
/usr/local/opt/llvm/bin
|
|
)
|
|
|
|
if(NOT _CLANG AND APPLE)
|
|
execute_process(
|
|
COMMAND brew --prefix llvm
|
|
OUTPUT_VARIABLE LLVM_PREFIX
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
ERROR_QUIET
|
|
RESULT_VARIABLE BREW_PREFIX_RESULT
|
|
)
|
|
if(BREW_PREFIX_RESULT EQUAL 0 AND EXISTS "${LLVM_PREFIX}/bin/clang")
|
|
set(_CLANG "${LLVM_PREFIX}/bin/clang")
|
|
endif()
|
|
endif()
|
|
|
|
if(NOT _CLANG)
|
|
message(FATAL_ERROR "clang not found. Set LLVM_BIN or add clang to PATH.")
|
|
endif()
|
|
|
|
get_filename_component(LLVM_BIN "${_CLANG}" DIRECTORY)
|
|
endif()
|
|
|
|
set(CMAKE_C_COMPILER "${LLVM_BIN}/clang")
|
|
set(CMAKE_ASM_COMPILER "${LLVM_BIN}/clang")
|
|
|
|
set(TARGET_TRIPLE aarch64-none-elf)
|
|
set(CMAKE_C_COMPILER_TARGET ${TARGET_TRIPLE})
|
|
set(CMAKE_ASM_COMPILER_TARGET ${TARGET_TRIPLE})
|
|
|
|
if(APPLE)
|
|
find_program(TERMOS_LD_LLD NAMES ld.lld HINTS /usr/local/bin /opt/homebrew/bin REQUIRED)
|
|
set(CMAKE_C_LINK_FLAGS "")
|
|
set(CMAKE_C_LINK_EXECUTABLE
|
|
"${TERMOS_LD_LLD} <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
|
|
endif()
|
|
|
|
find_program(LLVM_OBJCOPY NAMES llvm-objcopy objcopy
|
|
HINTS
|
|
"${LLVM_BIN}"
|
|
/usr/local/opt/llvm/bin
|
|
/opt/homebrew/opt/llvm/bin
|
|
/usr/local/bin
|
|
/opt/homebrew/bin
|
|
REQUIRED
|
|
)
|