30 lines
870 B
CMake
30 lines
870 B
CMake
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"
|
|
) |