# 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} -o ") 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")