43 lines
1020 B
Makefile
43 lines
1020 B
Makefile
PRODUCT = rdos
|
|
VERSION = $(shell git log -1 --format=%cd --date=format:%Y%m%d)
|
|
|
|
PROGRAMS = hello.com sys.com
|
|
KERNEL = @$(PRODUCT).com
|
|
DISTFILES = $(KERNEL) $(PROGRAMS)
|
|
FLOPPY = 1440
|
|
|
|
# Programs used for building
|
|
NASM = nasm
|
|
NASM_ARGS = -s --before "cpu 8086" -DPRODUCT=$(PRODUCT) -DVERSION=$(VERSION)
|
|
AS = host/as
|
|
SYS = ./sys.elf
|
|
|
|
.PHONY: default clean qemu
|
|
.PRECIOUS: %.com
|
|
|
|
default: fd$(FLOPPY).img
|
|
|
|
# Host utils
|
|
%.elf: host/%.c
|
|
$(CC) -o $@ $<
|
|
|
|
# COM programs
|
|
%.com: src/%.asm src/*.inc
|
|
$(NASM) $(NASM_ARGS) -Isrc -l $(@:.com=.lst) -o $@ $<
|
|
|
|
# Bootloader images
|
|
%.bs: boot/%.asm
|
|
$(AS) $@ $<
|
|
|
|
fd%.img: $(DISTFILES) $(SYS)
|
|
mformat -C -i $@ -f $* -v "$(PRODUCT) $(VERSION)" ::
|
|
mcopy -i $@ $(DISTFILES) ::
|
|
$(SYS) $@ $(KERNEL)
|
|
|
|
clean:
|
|
rm -f *.com *.bs *.0 *.lst *.img *.bin *.hex
|
|
rm -f host/*.elf
|
|
|
|
qemu: fd$(FLOPPY).img
|
|
qemu-system-i386 $(shell test -w /dev/kvm && echo --enable-kvm) $(shell test -n "$DISPLAY" || echo --display curses) -boot a -drive file=fd$(FLOPPY).img,format=raw,index=0,if=floppy
|