diff options
Diffstat (limited to 'source/CMakeLists.txt')
| -rw-r--r-- | source/CMakeLists.txt | 60 |
1 files changed, 58 insertions, 2 deletions
diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 326fc8d..15b4016 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -7,8 +7,64 @@ project("kernel" 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( + "$<$<CXX_COMPILER_ID:GNU>:-Wall>" + "$<$<CXX_COMPILER_ID:GNU>:-Wextra>" + "$<$<CXX_COMPILER_ID:GNU>:-Werror>" + "$<$<CXX_COMPILER_ID:GNU>:-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("boot") -add_subdirectory("kernel") +add_subdirectory("arch/${CMAKE_SYSTEM_PROCESSOR}") |
