# vim: ft=python kernel = module("kernel", kind = "exe", default = True, output = "jsix.elf", targets = [ "kernel" ], deps = [ "util", "cpu" ], includes = [ "." ], sources = [ "apic.cpp", "ap_startup.s", "assert.cpp", "boot.s", "clock.cpp", "console.cpp", "cpprt.cpp", "debug.cpp", "debug.s", "device_manager.cpp", "frame_allocator.cpp", "gdt.cpp", "gdtidt.s", "heap_allocator.cpp", "hpet.cpp", "idt.cpp", "interrupts.cpp", "interrupts.s", "io.cpp", "log.cpp", "logger.cpp", "memory.cpp", "memory_bootstrap.cpp", "msr.cpp", "objects/channel.cpp", "objects/endpoint.cpp", "objects/kobject.cpp", "objects/thread.cpp", "objects/process.cpp", "objects/system.cpp", "objects/vm_area.cpp", "page_table.cpp", "page_tree.cpp", "pci.cpp", "printf/printf.c", "scheduler.cpp", "serial.cpp", "syscalls/channel.cpp", "syscalls/endpoint.cpp", "syscalls/object.cpp", "syscalls/process.cpp", "syscalls/system.cpp", "syscalls/thread.cpp", "syscalls/vm_area.cpp", "task.s", "tss.cpp", "vm_space.cpp", ]) from glob import glob definitions = glob('definitions/**/*.def', recursive=True) sysinc = kernel.add_input("syscalls.inc.cog", deps=definitions) kernel.add_input("syscall.s", deps=[sysinc]) sysh = kernel.add_input("syscall.h.cog", deps=definitions) sysc = kernel.add_input("syscall.cpp.cog", deps=definitions + [sysh]) kernel.add_input("main.cpp", deps=[sysh]) kernel.add_input("cpu.cpp", deps=[sysh]) kernel.variables['ldflags'] = ["${ldflags}", "-T", "${source_root}/src/kernel/kernel.ld"]