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