#[============================================================================[ # Library #]============================================================================] add_library("x86_64" OBJECT) add_library("arch::lib" ALIAS "x86_64") target_include_directories("x86_64" PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}" ) target_link_libraries("x86_64" PUBLIC "kapi::lib" "multiboot2::lib" ) target_sources("x86_64" PRIVATE "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 "arch/boot/boot32.S" "arch/boot/entry64.s" "arch/boot/initialize_runtime.cpp" "arch/boot/multiboot.s" # Debug interfaces "arch/debug/qemu_output.cpp" # Devices "arch/devices/init.cpp" "arch/devices/legacy_pit.cpp" "arch/devices/local_apic.cpp" # Memory management "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 "arch/vga/text/buffer.cpp" "arch/vga/text/device.cpp" ) file(GLOB_RECURSE ARCH_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} CONFIGURE_DEPENDS "include/**.hpp" ) target_sources("x86_64" PUBLIC FILE_SET HEADERS BASE_DIRS "include" 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 )