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
|
|
|
|
|
|
2015-11-10 22:17:54 -08:00
|
|
|
test:
|
|
|
|
|
@cargo test
|
|
|
|
|
|
2015-11-07 22:53:31 -08:00
|
|
|
cargo:
|
2015-11-08 01:09:07 -08:00
|
|
|
@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)
|
2015-11-08 01:09:07 -08:00
|
|
|
@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
|