def configure(ctx): from os.path import join lds_path = join(ctx.env.ARCH_D, "boot.ld") ctx.env.append_value('DEFINES_EFI', [ 'KERNEL_FILENAME=L"{}"'.format(ctx.env.KERNEL_FILENAME), 'GNU_EFI_USE_MS_ABI', 'HAVE_USE_MS_ABI', 'EFI_DEBUG=0', 'EFI_DEBUG_CLEAR_MEMORY=0', ]) ctx.env.append_value('CFLAGS_EFI', ['-fPIC', '-fshort-wchar', '-Wa,--no-warn']) ctx.env.append_value('LINKFLAGS_EFI', [ '-shared', '-T', lds_path, ]) ctx.env.append_value('SECTIONS_EFI', [ "-j .text", "-j .sdata", "-j .data", "-j .dynamic", "-j .dynsym", "-j .rel", "-j .rela", "-j .reloc", ]) def build(bld): sources = bld.path.ant_glob("**/*.c") sources += bld.path.ant_glob("**/*.s") bld.program( source = sources, target = "boot.elf", use = 'EFI', ) bld( rule = "${objcopy} ${SECTIONS_EFI} --target=efi-app-${POPCORN_ARCH} ${SRC} ${TGT}", source = "boot.elf", target = "boot.efi", ) # vim: ft=python et sw=4