1import sys 2 3Import('env') 4 5kern_env = env.Clone() 6 7src = [ ] 8 9src_amd64 = [ 10 # Multiboot requires multiboot.S to be the first file 11 "amd64/multiboot.S", 12 "amd64/mbentry.c", 13 # AMD64 14 "amd64/critical.c", 15 "amd64/debug.c", 16 "amd64/disasm.c", 17 "amd64/ioapic.c", 18 "amd64/irq.c", 19 "amd64/lapic.c", 20 "amd64/machine.c", 21 "amd64/mp.c", 22 "amd64/mpboot.S", 23 "amd64/pci.c", 24 "amd64/pmap.c", 25 "amd64/support.S", 26 "amd64/switch.S", 27 "amd64/thread.c", 28 "amd64/time.c", 29 "amd64/trap.c", 30 "amd64/trapentry.S", 31 "amd64/xmem.c", 32 # Devices 33 "dev/x86/debugcons.c", 34 "dev/x86/ide.c", 35 "dev/x86/ps2.c", 36 "dev/x86/rtc.c", 37 "dev/x86/sercons.c", 38 "dev/x86/vgacons.c", 39] 40 41src_common = [ 42 "kern/copy.c", 43 "kern/bufcache.c", 44 "kern/cv.c", 45 "kern/debug.c", 46 "kern/disk.c", 47 "kern/handle.c", 48 "kern/ktime.c", 49 "kern/ktimer.c", 50 "kern/libc.c", 51 "kern/loader.c", 52 "kern/mutex.c", 53 "kern/nic.c", 54 "kern/palloc.c", 55 "kern/printf.c", 56 "kern/process.c", 57 "kern/sched.c", 58 "kern/semaphore.c", 59 "kern/sga.c", 60 "kern/slab.c", 61 "kern/spinlock.c", 62 "kern/syscall.c", 63 "kern/sysctl.c", 64 "kern/thread.c", 65 "kern/vfs.c", 66 "kern/vfsuio.c", 67 "kern/waitchannel.c", 68 "dev/ahci.c", 69 "dev/console.c", 70 "dev/e1000.c", 71 "dev/pci.c", 72 "fs/o2fs/o2fs.c", 73] 74 75if (env["ARCH"] == "amd64"): 76 src.append(src_amd64) 77 ldscript = "#sys/amd64/kernel.lds" 78src.append(src_common) 79 80kern_env.Append(LINKFLAGS = ['-T', ldscript[1:], '-nostdlib']) 81kern_env.Append(CPPFLAGS = ['-D_KERNEL']) 82kern_env.Append(CPPFLAGS = ['-ffreestanding', '-fno-builtin', '-nostdinc', 83 '-mno-red-zone', '-mno-mmx', '-mno-sse', 84 '-mcmodel=large']) 85# '-target', 'amd64-orion-eabi' 86kern_env.Append(CPPPATH = ['#build/include']) 87 88kernel = kern_env.Program("castor", src) 89Depends(kernel, ldscript) 90 91