diff --git a/Rsconscript b/Rsconscript index 44dd840..b0343fe 100644 --- a/Rsconscript +++ b/Rsconscript @@ -109,6 +109,19 @@ EOF end end + class Size < Builder + def run(options) + if @command + finalize_command + else + @vars["_SOURCES"] = @sources + @vars["_TARGET"] = @target + command = @env.build_command(%w[${SIZE} ${_SOURCES}], @vars) + standard_command("Size #{@target}", command, stdout: @target) + end + end + end + # FontGen Environment Environment.new(use: "freetype") do |env| env["CC"] = "gcc" @@ -120,16 +133,19 @@ EOF env.add_builder(EfiImage) env.add_builder(BiosImage) env.add_builder(FontGen) + env.add_builder(Size) + env["OBJDUMP"] = "i686-elf-objdump" + env["SIZE"] = "i686-elf-size" env["CCFLAGS"] += %w[-ffreestanding -Wall -O2] env["LDFLAGS"] += %w[-ffreestanding -nostdlib -T src/link.ld] env["LDFLAGS"] += %W[-Wl,-Map,${_TARGET}.map] env["LIBS"] += %w[gcc] - env["OBJDUMP"] = "i686-elf-objdump" env.FontGen("^/kfont/kfont.c", "font/Hack-Regular.ttf") env["CPPPATH"] += ["#{env.build_root}/kfont"] env.Program("^/hos.elf", glob("src/**/*.{S,c}") + ["^/kfont/kfont.c"]) env.depends("#{env.build_root}/hos.elf", "src/link.ld") env.Disassemble("^/hos.elf.txt", "^/hos.elf") + env.Size("^/hos.elf.size", "^/hos.elf") env.EfiImage("build/hos-efi.img", %w[^/hos.elf]) env.BiosImage("build/hos.img", %w[^/hos.elf]) end