Files
ksOS/Kernel/CMakeLists.txt
T
2026-05-03 13:05:55 +04:00

48 lines
1.2 KiB
CMake

# SPDX-License-Identifier: GPL-3.0-or-later
# Copyright (c) 2026 0xKSor
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
$<$<COMPILE_LANGUAGE:C>:
-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}"
)