diff options
| author | Eugen Wissner <belka@caraus.de> | 2025-04-23 23:16:00 +0200 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2025-04-23 23:16:00 +0200 |
| commit | f343296463f8271720cf1e9cb1d45f30c288d872 (patch) | |
| tree | 24aaa3124762ed64bb754475c03cc5e5736e2bec /Rakefile | |
| parent | 5aaf9ded3646f5312e26fc7b3502f141c2e556f5 (diff) | |
| download | elna-f343296463f8271720cf1e9cb1d45f30c288d872.tar.gz | |
Compile procedure headers
Diffstat (limited to 'Rakefile')
| -rw-r--r-- | Rakefile | 35 |
1 files changed, 23 insertions, 12 deletions
@@ -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 |
