43 lines
1.1 KiB
CMake
43 lines
1.1 KiB
CMake
cmake_minimum_required(VERSION 3.20)
|
|
project(ksOSKernel LANGUAGES ASM C)
|
|
|
|
file(GLOB_RECURSE KERNEL_SOURCES CMAKE_CONFIGURE_DEPENDS
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Source/KernelMain.c
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Source/Arch/entry.S
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Source/**/*.c
|
|
)
|
|
|
|
add_executable(Kernel ${KERNEL_SOURCES})
|
|
target_include_directories(Kernel PRIVATE
|
|
${CMAKE_CURRENT_SOURCE_DIR}/Include/
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../Common
|
|
)
|
|
|
|
target_compile_options(Kernel PRIVATE
|
|
$<$<COMPILE_LANGUAGE:C>:
|
|
-ffreestanding
|
|
-fno-stack-protector
|
|
-fno-builtin
|
|
-Wall -Wextra
|
|
-g
|
|
-mgeneral-regs-only
|
|
>
|
|
)
|
|
|
|
target_link_options(Kernel PRIVATE
|
|
-nostdlib
|
|
-static
|
|
-no-pie
|
|
-T "${CMAKE_CURRENT_SOURCE_DIR}/linker.ld"
|
|
-z max-page-size=0x1000
|
|
)
|
|
|
|
set_target_properties(Kernel PROPERTIES
|
|
OUTPUT_NAME "Kernel.elf"
|
|
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
|
|
)
|
|
|
|
add_custom_command(TARGET Kernel POST_BUILD
|
|
COMMAND ${LLVM_OBJCOPY} -O binary ${CMAKE_BINARY_DIR}/Kernel.elf ${CMAKE_BINARY_DIR}/Kernel.bin
|
|
COMMENT "Generating ksOSKernel.bin from Kernel.elf"
|
|
) |