Files
2026-05-03 21:57:20 +04:00

63 lines
1.8 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
)
set(CMAKE_C_FLAGS_INIT "-ffreestanding -mgeneral-regs-only -std=c23")
set(CMAKE_EXE_LINKER_FLAGS_INIT "-nostdlib -static -no-pie -z max-page-size=0x1000 --no-dynamic-linker -T ${CMAKE_CURRENT_LIST_DIR}/linker.ld -Ttext=0x400000")