aboutsummaryrefslogtreecommitdiff
path: root/source/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'source/CMakeLists.txt')
-rw-r--r--source/CMakeLists.txt60
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}")