cmake_minimum_required(VERSION 3.10) project(MyShittyKernel LANGUAGES ASM C) if(NOT LLVM_BIN) execute_process(COMMAND brew --prefix llvm OUTPUT_VARIABLE LLVM_PREFIX OUTPUT_STRIP_TRAILING_WHITESPACE) set(LLVM_BIN "${LLVM_PREFIX}/bin") endif() set(CMAKE_C_COMPILER "${LLVM_BIN}/clang") set(CMAKE_ASM_COMPILER "${LLVM_BIN}/clang") set(LLVM_OBJCOPY "${LLVM_BIN}/llvm-objcopy") set(TARGET_TRIPLE aarch64-none-elf) add_compile_options(--target=${TARGET_TRIPLE} -ffreestanding -nostdlib -O0 -g) set(LINKER_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/linker.ld) add_link_options( --target=${TARGET_TRIPLE} -fuse-ld=lld -nostdlib -static -Wl,-T,${LINKER_SCRIPT} ) add_executable(kernel.elf Source/entry.S) add_custom_command(TARGET kernel.elf POST_BUILD COMMAND ${LLVM_OBJCOPY} -O binary kernel.elf kernel.bin COMMENT "kernel.elf -> kernel.bin" )