cmake_minimum_required(VERSION 3.20) project(ksOSKernel LANGUAGES ASM C) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) 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/Arch/vectors.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 $<$: -std=c23 -ffreestanding -fno-stack-protector -fno-builtin -Wall -Wextra -Wno-incompatible-library-redeclaration -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 --image-base=0x40100000 --no-dynamic-linker ) set_target_properties(Kernel PROPERTIES OUTPUT_NAME "ksOSKernel.elf" RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" )