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('kernel', ['kernel.ld', 'entry.c', 'main.c', 'printf.c', 'gdt.c', 'idt.c'])