54 lines
1.6 KiB
CMake
54 lines
1.6 KiB
CMake
cmake_minimum_required(VERSION 3.13)
|
|
project(mango C ASM)
|
|
|
|
if (NOT BUILD_TOOLS_DIR)
|
|
message(FATAL_ERROR "No build tools directory specified. Please run build.sh")
|
|
endif ()
|
|
|
|
set(CMAKE_C_STANDARD 17)
|
|
|
|
set(kernel_arch x86_64)
|
|
|
|
set(kernel_name "Mango")
|
|
set(kernel_exe_name "mango_kernel")
|
|
|
|
set(generic_src_dirs ds init kernel libc sched util vm)
|
|
set(kernel_sources "")
|
|
set(kernel_headers "")
|
|
|
|
foreach (dir ${generic_src_dirs})
|
|
message(STATUS ${dir})
|
|
file(GLOB_RECURSE dir_sources ${dir}/*.c)
|
|
file(GLOB_RECURSE dir_headers ${dir}/*.h)
|
|
|
|
set(kernel_sources ${kernel_sources} ${dir_sources})
|
|
set(kernel_headers ${kernel_headers} ${dir_headers})
|
|
endforeach (dir)
|
|
|
|
file(GLOB_RECURSE arch_sources_c arch/${kernel_arch}/*.c)
|
|
file(GLOB_RECURSE arch_sources_asm arch/${kernel_arch}/*.S)
|
|
file(GLOB_RECURSE arch_headers arch/${kernel_arch}/*.h)
|
|
|
|
set_property(SOURCE ${arch_sources_asm} PROPERTY LANGUAGE C)
|
|
|
|
add_executable(${kernel_exe_name}
|
|
${kernel_sources}
|
|
${kernel_headers}
|
|
${arch_sources_c}
|
|
${arch_sources_asm}
|
|
${arch_headers})
|
|
|
|
target_include_directories(${kernel_exe_name} PRIVATE
|
|
include
|
|
libc/include
|
|
arch/${kernel_arch}/include)
|
|
target_compile_options(${kernel_exe_name} PRIVATE
|
|
-nostdlib -ffreestanding
|
|
-Wall -Werror -pedantic -Wno-language-extension-token -Wno-unused-function -Wno-gnu-statement-expression
|
|
-O2 -g -fPIC -Iinclude -Iarch/${kernel_arch}/include -Ilibc/include)
|
|
target_link_libraries(${kernel_exe_name} -nostdlib -ffreestanding -lgcc)
|
|
target_compile_definitions(${kernel_exe_name} PRIVATE BUILD_ID="0")
|
|
|
|
include(arch/${kernel_arch}/config.cmake)
|
|
include(arch/${kernel_arch}/targets.cmake)
|