2014-02-12 13:47:13 -08:00
|
|
|
import sys
|
|
|
|
|
|
|
|
Import('env')
|
|
|
|
|
|
|
|
kern_env = env.Clone()
|
|
|
|
|
|
|
|
src = [ ]
|
|
|
|
|
|
|
|
src_amd64 = [
|
|
|
|
# Multiboot requires multiboot.S to be the first file
|
|
|
|
"amd64/multiboot.S",
|
|
|
|
"amd64/mbentry.c",
|
|
|
|
# AMD64
|
2014-07-13 13:36:43 -07:00
|
|
|
"amd64/debug.c",
|
2014-07-13 16:52:18 -07:00
|
|
|
"amd64/disasm.c",
|
2014-07-23 18:07:07 -07:00
|
|
|
"amd64/ioapic.c",
|
|
|
|
"amd64/irq.c",
|
|
|
|
"amd64/lapic.c",
|
2014-02-12 13:47:13 -08:00
|
|
|
"amd64/machine.c",
|
2015-02-15 17:00:55 -08:00
|
|
|
"amd64/mp.c",
|
|
|
|
"amd64/mpboot.S",
|
2014-06-30 15:52:35 -07:00
|
|
|
"amd64/pci.c",
|
|
|
|
"amd64/pmap.c",
|
2014-10-12 13:17:18 -07:00
|
|
|
"amd64/support.S",
|
2014-07-23 18:07:07 -07:00
|
|
|
"amd64/switch.S",
|
|
|
|
"amd64/thread.c",
|
2014-07-24 20:25:17 -07:00
|
|
|
"amd64/time.c",
|
2014-07-23 18:07:07 -07:00
|
|
|
"amd64/trap.c",
|
|
|
|
"amd64/trapentry.S",
|
2014-07-16 17:21:18 -07:00
|
|
|
# Devices
|
2014-07-02 14:06:00 -07:00
|
|
|
"dev/x86/debugcons.c",
|
2014-08-19 19:05:57 -07:00
|
|
|
"dev/x86/ide.c",
|
|
|
|
"dev/x86/ps2.c",
|
2014-11-22 14:35:18 -08:00
|
|
|
"dev/x86/rtc.c",
|
2014-07-13 13:04:14 -07:00
|
|
|
"dev/x86/sercons.c",
|
2014-07-05 18:46:59 -07:00
|
|
|
"dev/x86/vgacons.c",
|
2014-02-12 13:47:13 -08:00
|
|
|
]
|
|
|
|
|
2023-10-23 22:28:10 -04:00
|
|
|
src_arm64 = [
|
|
|
|
# Multiboot requires multiboot.S to be the first file
|
2023-11-09 11:54:56 -05:00
|
|
|
"arm64/locore.S",
|
2023-10-23 22:28:10 -04:00
|
|
|
"arm64/mbentry.c",
|
2023-11-09 11:54:56 -05:00
|
|
|
# ARM64
|
2023-10-23 22:28:10 -04:00
|
|
|
"arm64/debug.c",
|
|
|
|
"arm64/disasm.c",
|
|
|
|
"arm64/irq.c",
|
|
|
|
"arm64/machine.c",
|
|
|
|
"arm64/mp.c",
|
|
|
|
"arm64/pci.c",
|
|
|
|
"arm64/pmap.c",
|
|
|
|
"arm64/support.S",
|
|
|
|
"arm64/switch.S",
|
|
|
|
"arm64/thread.c",
|
|
|
|
"arm64/time.c",
|
|
|
|
"arm64/trap.c",
|
|
|
|
"arm64/trapentry.S",
|
|
|
|
# Devices
|
|
|
|
]
|
|
|
|
|
2014-02-12 13:47:13 -08:00
|
|
|
src_common = [
|
2014-10-14 13:58:34 -07:00
|
|
|
"kern/copy.c",
|
2023-10-20 16:57:02 -04:00
|
|
|
"kern/critical.c",
|
2022-12-09 23:51:45 -05:00
|
|
|
"kern/bufcache.c",
|
2023-09-02 17:51:10 -04:00
|
|
|
"kern/cv.c",
|
2014-07-03 17:36:31 -07:00
|
|
|
"kern/debug.c",
|
2014-07-24 16:38:35 -07:00
|
|
|
"kern/disk.c",
|
2014-08-08 13:55:12 -07:00
|
|
|
"kern/handle.c",
|
2014-11-24 16:17:17 -08:00
|
|
|
"kern/ktime.c",
|
2015-01-17 13:52:04 -08:00
|
|
|
"kern/ktimer.c",
|
2014-02-12 13:47:13 -08:00
|
|
|
"kern/libc.c",
|
2014-07-27 17:09:31 -07:00
|
|
|
"kern/loader.c",
|
2023-09-02 17:51:10 -04:00
|
|
|
"kern/mutex.c",
|
2014-12-31 19:31:25 -08:00
|
|
|
"kern/nic.c",
|
2014-02-12 13:47:13 -08:00
|
|
|
"kern/palloc.c",
|
|
|
|
"kern/printf.c",
|
2023-08-21 18:39:26 -04:00
|
|
|
"kern/process.c",
|
|
|
|
"kern/sched.c",
|
2015-01-18 13:48:16 -08:00
|
|
|
"kern/semaphore.c",
|
2014-07-30 17:19:24 -07:00
|
|
|
"kern/sga.c",
|
2014-09-04 23:26:02 -07:00
|
|
|
"kern/slab.c",
|
2014-07-10 15:55:32 -07:00
|
|
|
"kern/spinlock.c",
|
2014-07-28 14:35:00 -07:00
|
|
|
"kern/syscall.c",
|
2014-11-25 12:07:14 -08:00
|
|
|
"kern/sysctl.c",
|
2014-07-23 18:07:07 -07:00
|
|
|
"kern/thread.c",
|
2014-08-01 14:15:06 -07:00
|
|
|
"kern/vfs.c",
|
2014-12-05 00:25:20 -08:00
|
|
|
"kern/vfsuio.c",
|
2023-08-30 12:49:23 -04:00
|
|
|
"kern/waitchannel.c",
|
2023-10-20 16:57:02 -04:00
|
|
|
"kern/xmem.c",
|
2014-07-02 14:06:00 -07:00
|
|
|
"dev/ahci.c",
|
|
|
|
"dev/console.c",
|
2014-12-29 21:32:00 -08:00
|
|
|
"dev/e1000.c",
|
2014-07-02 14:06:00 -07:00
|
|
|
"dev/pci.c",
|
2014-08-01 14:15:06 -07:00
|
|
|
"fs/o2fs/o2fs.c",
|
2014-02-12 13:47:13 -08:00
|
|
|
]
|
|
|
|
|
|
|
|
if (env["ARCH"] == "amd64"):
|
|
|
|
src.append(src_amd64)
|
2014-07-18 13:37:46 -07:00
|
|
|
ldscript = "#sys/amd64/kernel.lds"
|
2023-10-23 22:28:10 -04:00
|
|
|
elif (env["ARCH"] == "arm64"):
|
|
|
|
src.append(src_arm64)
|
|
|
|
ldscript = "#sys/arm64/kernel.lds"
|
2014-08-07 17:58:41 -07:00
|
|
|
src.append(src_common)
|
2014-02-12 13:47:13 -08:00
|
|
|
|
2015-02-24 16:58:08 -08:00
|
|
|
kern_env.Append(LINKFLAGS = ['-T', ldscript[1:], '-nostdlib'])
|
2014-10-14 12:39:26 -07:00
|
|
|
kern_env.Append(CPPFLAGS = ['-D_KERNEL'])
|
2014-02-12 13:47:13 -08:00
|
|
|
kern_env.Append(CPPFLAGS = ['-ffreestanding', '-fno-builtin', '-nostdinc',
|
2023-10-23 22:28:10 -04:00
|
|
|
'-mno-red-zone'])
|
|
|
|
|
|
|
|
if env["ARCH"] == "amd64":
|
|
|
|
kern_env.Append(CPPFLAGS = ['-mno-mmx', '-mno-sse', '-mcmodel=large'])
|
|
|
|
# '-target', 'amd64-orion-eabi'
|
|
|
|
elif env["ARCH"] == "arm64":
|
2023-11-07 12:45:19 -05:00
|
|
|
kern_env.Append(CPPFLAGS = ['-mcmodel=large', '-arch', 'armv8.1+nofp'])
|
2023-10-23 22:28:10 -04:00
|
|
|
|
2014-07-21 23:43:01 -07:00
|
|
|
kern_env.Append(CPPPATH = ['#build/include'])
|
2014-02-12 13:47:13 -08:00
|
|
|
|
2014-07-18 13:37:46 -07:00
|
|
|
kernel = kern_env.Program("castor", src)
|
|
|
|
Depends(kernel, ldscript)
|
2014-02-12 13:47:13 -08:00
|
|
|
|