cmake_minimum_required(VERSION "3.27") project("kernel" DESCRIPTION "${TEACHOS_DESCRIPTION}" HOMEPAGE_URL "${TEACHOS_HOMEPAGE_URL}" VERSION "${TEACHOS_VERSION}" LANGUAGES ASM C CXX ) #[============================================================================[ # Global Build System Configuration #]============================================================================] set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin") set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib") set(CMAKE_INTERPROCEDURAL_OPTIMIZATION YES) #[============================================================================[ # Global Compiler Configuration #]============================================================================] add_compile_options( "$<$:-Wall>" "$<$:-Wextra>" "$<$:-Werror>" "$<$:-pedantic-errors>" ) #[============================================================================[ # Global Directories #]============================================================================] include_directories( "include" "arch/${CMAKE_SYSTEM_PROCESSOR}/include" ) #[============================================================================[ # The Bootstrap Library #]============================================================================] add_library("_boot" OBJECT) add_library("teachos::boot" ALIAS "_boot") #[============================================================================[ # The Video Library #]============================================================================] add_library("_video" OBJECT) add_library("teachos::video" ALIAS "_video") #[============================================================================[ # The Kernel #]============================================================================] add_executable("_kernel" "src/kernel/main.cpp" ) add_executable("teachos::kernel" ALIAS "_kernel") target_link_libraries("_kernel" PRIVATE "teachos::boot" "teachos::video" ) #[============================================================================[ # Platform Specific Components #]============================================================================] add_subdirectory("arch/${CMAKE_SYSTEM_PROCESSOR}")