summaryrefslogtreecommitdiff
path: root/Rakefile
diff options
context:
space:
mode:
Diffstat (limited to 'Rakefile')
-rw-r--r--Rakefile68
1 files changed, 0 insertions, 68 deletions
diff --git a/Rakefile b/Rakefile
index 46703ca..d12b9a7 100644
--- a/Rakefile
+++ b/Rakefile
@@ -13,7 +13,6 @@ STAGES = Dir.glob('boot/stage*')
.sort { |a, b| a.delete_prefix('stage').to_i <=> b.delete_prefix('stage').to_i }
.drop(1) # First assembly stage does not count.
-CLEAN.include 'build/boot', 'build/valid'
CLEAN.include 'doc/*.pdf'
CLOBBER.include 'build'
@@ -51,73 +50,6 @@ task :convert do
end
end
-file "build/valid/#{STAGES.last}/cl" => 'build/build.ninja' do |t|
- sh 'ninja', '-f', t.prerequisites.first
-end
-
-file 'build/build.ninja' => ['build'] do |t|
- File.open t.name, 'w' do |f|
- f << <<~NINJA
- builddir = build
- cflags = -fpie -g
-
- rule cc
- command = gcc $cflags -nostdlib -o $out $in
-
- rule as
- command = gcc $cflags -c -o $out $in
-
- rule link1
- command = ld -o $out $in
-
- rule link2
- command = ld -o $out --dynamic-linker /lib32/ld-linux-riscv32-ilp32d.so.1 /usr/lib/crt1.o /usr/lib/crti.o -lc $in /usr/lib/crtn.o
-
- rule bootstrap
- command = $bootstrap < \$in > \$out
- NINJA
- f << <<~NINJA
-
- build build/boot/stage1/cl: cc boot/stage1.s
- build build/valid/stage1/cl.s: bootstrap boot/stage1.s | build/boot/stage1/cl
- bootstrap = build/boot/stage1/cl
-
- build build/valid/stage1/cl.o: as build/valid/stage1/cl.s
- build build/valid/stage1/cl: link1 build/valid/stage1/cl.o
- NINJA
- STAGES.each do |stage|
- stage_number = stage.delete_prefix('stage').to_i
-
- arguments_path = Pathname.new('boot') + stage + 'linker.arg'
- if arguments_path.exist?
- link = 'link2'
- else
- link = 'link1'
- end
- boot_stage = "build/boot/stage#{stage_number}"
- valid_stage = "build/valid/stage#{stage_number}"
- f << <<~NINJA
-
- build #{boot_stage}/cl.s: bootstrap boot/stage#{stage_number}/cl.elna | build/valid/stage#{stage_number.pred}/cl
- bootstrap = build/valid/stage#{stage_number.pred}/cl
-
- build #{boot_stage}/cl.o: as #{boot_stage}/cl.s
- build #{boot_stage}/cl: #{link} #{boot_stage}/cl.o
-
- build #{valid_stage}/cl.s: bootstrap boot/stage#{stage_number}/cl.elna | #{boot_stage}/cl
- bootstrap = build/boot/stage#{stage_number}/cl
-
- build #{valid_stage}/cl.o: as #{valid_stage}/cl.s
- build #{valid_stage}/cl: #{link} #{valid_stage}/cl.o
- NINJA
- end
- f << <<~NINJA
-
- default build/valid/#{STAGES.last}/cl
- NINJA
- end
-end
-
rule '.pdf' => '.adoc' do |t|
Asciidoctor.convert_file t.source, backend: 'pdf', safe: :safe
end