# SConscript # vim: set ft=python: # Eryn Wells import os import os.path files = [ 'boot.s', 'crti.s', 'crtn.s', 'Main.cc', 'Console.cc' ] toolchain_bin = Dir(os.environ['POLKA_TOOLCHAIN']).Dir('bin') Replace(AS=toolchain_bin.File('i686-elf-as'), CC=toolchain_bin.File('i686-elf-gcc'), CXX=toolchain_bin.File('i686-elf-g++'), LINK=toolchain_bin.File('i686-elf-ld')) Append(CCFLAGS='-ffreestanding', CPPDEFINES='__polka', CXXFLAGS='-fno-exceptions -fno-rtti', LINKFLAGS='-nostdlib -lgcc') linker_script = File('linker.ld') kernel = Program('polka.bin', files, LINKFLAGS='-T {}'.format(linker_script.path)) Depends(kernel, linker_script) Alias('kernel', kernel) img_dir = Dir('img') grub_cfg = File('grub.cfg') image_dir = Command(img_dir, kernel, [ Mkdir(img_dir.Dir('boot/grub')), Copy(os.path.join(img_dir.Dir('boot').path, '${SOURCE.file}'), '$SOURCE'), Copy(img_dir.Dir('boot/grub'), grub_cfg.srcnode()) ]) Clean(image_dir, img_dir) image = Command('polka.img', image_dir, [ 'grub-mkrescue -o $TARGET $SOURCE', ]) Alias('image', image)