aboutsummaryrefslogtreecommitdiff
path: root/arch/x86_64/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86_64/CMakeLists.txt')
-rw-r--r--arch/x86_64/CMakeLists.txt77
1 files changed, 59 insertions, 18 deletions
diff --git a/arch/x86_64/CMakeLists.txt b/arch/x86_64/CMakeLists.txt
index 41932c9..20a48f9 100644
--- a/arch/x86_64/CMakeLists.txt
+++ b/arch/x86_64/CMakeLists.txt
@@ -1,44 +1,69 @@
+#[============================================================================[
+# Library
+#]============================================================================]
+
add_library("x86_64" OBJECT)
-add_library("os::arch" ALIAS "x86_64")
+add_library("arch::lib" ALIAS "x86_64")
target_include_directories("x86_64" PUBLIC
- "include"
+ "${CMAKE_CURRENT_SOURCE_DIR}"
)
target_link_libraries("x86_64" PUBLIC
- "os::kapi"
- "libs::multiboot2"
+ "kapi::lib"
+ "multiboot2::lib"
)
target_sources("x86_64" PRIVATE
- # Platform-dependent KAPI implementation
+ "kapi/boot_modules.cpp"
"kapi/cio.cpp"
"kapi/cpu.cpp"
+ "kapi/devices.cpp"
+ "kapi/interrupts.cpp"
"kapi/memory.cpp"
"kapi/system.cpp"
+)
+
+target_sources("x86_64" PRIVATE
+ # CPU Initialization
+ "arch/cpu/initialization.cpp"
+ "arch/cpu/interrupts.cpp"
+ "arch/cpu/interrupts.S"
+
+ # Bus Initialization
+ "arch/bus/isa.cpp"
# Low-level bootstrap
- "src/boot/boot32.S"
- "src/boot/entry64.s"
- "src/boot/initialize_runtime.cpp"
- "src/boot/multiboot.s"
+ "arch/boot/boot32.S"
+ "arch/boot/entry64.s"
+ "arch/boot/initialize_runtime.cpp"
+ "arch/boot/multiboot.s"
# Debug interfaces
- "src/debug/qemu_output.cpp"
+ "arch/debug/qemu_output.cpp"
+
+ # Devices
+ "arch/devices/init.cpp"
+ "arch/devices/legacy_pit.cpp"
+ "arch/devices/local_apic.cpp"
# Memory management
- "src/memory/kernel_mapper.cpp"
- "src/memory/higher_half_mapper.cpp"
- "src/memory/mmu.cpp"
- "src/memory/page_table.cpp"
- "src/memory/region_allocator.cpp"
+ "arch/memory/kernel_mapper.cpp"
+ "arch/memory/higher_half_mapper.cpp"
+ "arch/memory/mmu.cpp"
+ "arch/memory/page_table.cpp"
+ "arch/memory/region_allocator.cpp"
# VGA text mode
- "src/vga/text/buffer.cpp"
- "src/vga/text/device.cpp"
+ "arch/vga/text/buffer.cpp"
+ "arch/vga/text/device.cpp"
)
-file(GLOB_RECURSE ARCH_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "include/**.hpp")
+file(GLOB_RECURSE ARCH_HEADERS
+ RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
+ CONFIGURE_DEPENDS
+ "include/**.hpp"
+)
target_sources("x86_64" PUBLIC
FILE_SET HEADERS
@@ -46,7 +71,23 @@ target_sources("x86_64" PUBLIC
FILES ${ARCH_HEADERS}
)
+target_include_directories("x86_64" PUBLIC
+ "include"
+)
+
+target_link_libraries("x86_64" PUBLIC
+ "acpi::lib"
+ "elf::lib"
+ "kapi::lib"
+ "kstd::lib"
+ "multiboot2::lib"
+)
+
set(KERNEL_LINKER_SCRIPT
"${CMAKE_CURRENT_SOURCE_DIR}/scripts/kernel.ld"
PARENT_SCOPE
)
+
+set_target_properties("x86_64" PROPERTIES
+ VERIFY_INTERFACE_HEADER_SETS YES
+)