Update rscons

This commit is contained in:
Josh Holtrop 2022-03-07 20:54:19 -05:00
parent aa21b199d5
commit 353e3d7276
2 changed files with 51 additions and 27 deletions

View File

@ -3,30 +3,29 @@ configure do
check_program "x86_64-w64-mingw32-gcc"
end
build do
class Image < Builder
def run(options)
unless @cache.up_to_date?(@target, nil, @sources, @env)
print_run_message("Image <target>#{@target}<reset>", 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
class Image < Builder
def run(options)
unless @cache.up_to_date?(@target, nil, @sources, @env)
print_run_message("Image <target>#{@target}<reset>", 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
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]
env["LDFLAGS"] += %w[-nostdlib -Wl,-dll -shared -Wl,--subsystem,10 -e efi_main]
env["LIBS"] += %w[gcc]
env["sources"] = glob("*.c")
env.Program("^/BOOTX64.EFI", "${sources}")
env.Image("^/efi-loader.img", "^/BOOTX64.EFI")
true
end
end
env 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]
env["LDFLAGS"] += %w[-nostdlib -Wl,-dll -shared -Wl,--subsystem,10 -e efi_main]
env["LIBS"] += %w[gcc]
env["sources"] = glob("*.c")
env.Program("^/BOOTX64.EFI", "${sources}")
env.Image("^/efi-loader.img", "^/BOOTX64.EFI")
end

31
rscons

File diff suppressed because one or more lines are too long