From f343296463f8271720cf1e9cb1d45f30c288d872 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Wed, 23 Apr 2025 23:16:00 +0200 Subject: Compile procedure headers --- Rakefile | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) (limited to 'Rakefile') diff --git a/Rakefile b/Rakefile index 368abfa..86ca2e1 100644 --- a/Rakefile +++ b/Rakefile @@ -7,8 +7,28 @@ CROSS_GCC = '../riscv32-ilp32d--glibc/bin/riscv32-linux-gcc' SYSROOT = '../riscv32-ilp32d--glibc/riscv32-buildroot-linux-gnu/sysroot' QEMU = 'qemu-riscv32' +def assemble_stage(output, compiler, source) + arguments = [QEMU, '-L', SYSROOT, *compiler] + + puts(arguments * ' ') + puts + Open3.popen2(*arguments) do |qemu_in, qemu_out| + qemu_in.write File.read(*source) + qemu_in.close + + IO.copy_stream qemu_out, output + qemu_out.close + end +end + desc 'Final stage' -task default: 'build/stage2' +task default: ['build/stage2', 'boot/stage2.elna'] do |t| + assembler, exe = t.prerequisites.partition { |prerequisite| prerequisite.end_with? '.elna' } + + File.open File::NULL, 'w' do |output| + assemble_stage output, exe, assembler + end +end directory 'build' @@ -21,18 +41,9 @@ end file 'build/stage2.s' => ['build/stage1', 'boot/stage2.elna'] do |t| assembler, exe = t.prerequisites.partition { |prerequisite| prerequisite.end_with? '.elna' } - arguments = [QEMU, '-L', SYSROOT, *exe] - - puts(arguments * ' ') - puts - Open3.popen2(*arguments) do |qemu_in, qemu_out| - qemu_in.write File.read(*assembler) - qemu_in.close - File.open t.name, 'w' do |output| - IO.copy_stream qemu_out, output - end - qemu_out.close + File.open t.name, 'w' do |output| + assemble_stage output, exe, assembler end end -- cgit v1.2.3