Files
low-level-programming/ferrocyanide/Makefile

50 lines
1020 B
Makefile
Raw Normal View History

2015-11-07 15:40:29 -08:00
arch ?= x86-64
2015-11-07 22:53:31 -08:00
rust_target := x86_64-unknown-linux-gnu
2015-11-07 15:40:29 -08:00
linker_script := src/linker.ld
grub_cfg := src/grub.cfg
kernel := kernel.bin
iso := os.iso
2015-11-07 22:53:31 -08:00
2015-11-07 15:40:29 -08:00
asm_source := $(wildcard src/*.asm)
asm_object := $(patsubst src/%.asm, \
%.o, $(asm_source))
2015-11-07 22:53:31 -08:00
rust_object := target/$(rust_target)/debug/librust_kernel.a
2015-11-07 15:40:29 -08:00
2015-11-10 02:23:32 -08:00
.PHONY: all clean run debugrun iso
2015-11-07 15:40:29 -08:00
all: $(kernel)
run: $(iso)
@qemu-system-x86_64 -hda $(iso)
2015-11-10 02:23:32 -08:00
debugrun: $(iso)
@qemu-system-x86_64 -d int -no-reboot -hda $(iso)
2015-11-07 16:43:43 -08:00
$(iso): $(kernel) $(grub_cfg)
2015-11-07 15:40:29 -08:00
@mkdir -p isofiles/boot/grub
@cp $(kernel) isofiles/boot/kernel.bin
@cp $(grub_cfg) isofiles/boot/grub
@grub-mkrescue -o $(iso) isofiles 2> /dev/null
test:
@cargo test
2015-11-07 22:53:31 -08:00
cargo:
@cargo rustc --target $(rust_target) -- -Z no-landing-pads
2015-11-07 22:53:31 -08:00
$(kernel): cargo $(rust_object) $(asm_object) $(linker_script)
@ld -n --gc-sections -T $(linker_script) -o $(kernel) $(asm_object) $(rust_object)
2015-11-07 15:40:29 -08:00
%.o: src/%.asm
@nasm -f elf64 $< -o $@
clean:
@rm -rf isofiles
@rm -f *.o
@rm -f kernel.bin
2015-11-07 15:50:50 -08:00
@rm -f os.iso
2015-11-07 22:53:31 -08:00
@cargo clean