summaryrefslogtreecommitdiff
path: root/modules/foo/SConscript
diff options
context:
space:
mode:
Diffstat (limited to 'modules/foo/SConscript')
-rw-r--r--modules/foo/SConscript30
1 files changed, 30 insertions, 0 deletions
diff --git a/modules/foo/SConscript b/modules/foo/SConscript
new file mode 100644
index 0000000..a79de34
--- /dev/null
+++ b/modules/foo/SConscript
@@ -0,0 +1,30 @@
+Import('env')
+
+env = env.Clone(
+ CC = 'i386-elf-gcc',
+ CCFLAGS = '-Wall -W -nostdinc -fno-builtin -fno-hosted -ggdb -std=gnu99',
+ LINK = 'i386-elf-ld',
+ LINKFLAGS = '-nostdinc -nostdlib',
+)
+
+def kernel_bld_generator(source, target, env, for_signature):
+ link_script = None
+ for s in source:
+ if s.suffix == '.ld':
+ link_script = s
+ break
+ if not link_script:
+ Exit(1)
+ return '$LINK $LINKFLAGS -o %s -T %s %s ' % (target[0], link_script, ' '.join(str(s) for s in source if s != link_script))
+
+kernel_bld = Builder(
+ generator = kernel_bld_generator,
+ suffix = '',
+ src_suffix = '.o',
+ src_builder = 'Object',
+ target_scanner = ProgramScanner
+)
+
+env.Append(BUILDERS = {'Kernel' : kernel_bld})
+
+kernel = env.Kernel('foo', ['foo.ld', 'foo.c'])