diff --git a/Rsconscript b/Rsconscript index 0a46627..f40b8e0 100644 --- a/Rsconscript +++ b/Rsconscript @@ -1,5 +1,24 @@ +configure do + check_command "mformat" +end + build do + class Image < Builder + def run(options) + unless @cache.up_to_date?(@target, nil, @sources, @env) + print_run_message("Image #{@target}", nil) + system(*%W[dd if=/dev/zero of=#{@target} bs=1k count=1440]) + system(*%W[mformat -i #{@target} -f 1440 ::]) + system(*%W[mmd -i #{@target} ::/EFI]) + system(*%W[mmd -i #{@target} ::/EFI/BOOT]) + system(*%W[mcopy -i #{@target} #{@sources.first} ::/EFI/BOOT]) + @cache.register_build(@target, nil, @sources, @env) + end + true + end + end Environment.new do |env| + env.add_builder(Image) env["CC"] = "x86_64-w64-mingw32-gcc" env["CPPPATH"] += %w[/usr/include/efi /usr/include/efi/x86_64] env["CFLAGS"] += %w[-ffreestanding] @@ -7,5 +26,6 @@ build do env["LIBS"] += %w[gcc] env["sources"] = glob("*.c") env.Program("^/BOOTX64.EFI", "${sources}") + env.Image("^/efi-loader.img", "^/BOOTX64.EFI") end end