csrc = $(wildcard src/*.c) $(wildcard src/libc/*.c) ssrc = $(wildcard src/*.asm) $(wildcard src/libc/*.asm) obj = $(csrc:.c=.o) $(ssrc:.asm=-asm.o) dep = $(csrc:.c=.d) bin = 86kern elf = $(bin).elf img360 = $(bin)-fd360.img img1440 = $(bin)-fd1440.img img = $(img1440) sym = $(bin).sym TOOLPREFIX = ia16-elf- CC = $(TOOLPREFIX)gcc LD = $(TOOLPREFIX)ld OBJCOPY = $(TOOLPREFIX)objcopy warn = -pedantic -Wall inc = -nostdinc -Isrc -Isrc/libc arch = -march=i8088 -mtune=i8088 CFLAGS = $(arch) -ffreestanding -mcmodel=small $(warn) $(inc) -MMD LDFLAGS = -T kern.ld -Map kern.map .PHONY: all all: $(img360) $(img1440) $(img360): $(bin) dd if=/dev/zero of=$@ bs=512 count=720 status=none dd if=$< of=$@ bs=512 conv=notrunc status=none tools/fixfdimg $@ 360 $(img1440): $(bin) dd if=/dev/zero of=$@ bs=512 count=2880 status=none dd if=$< of=$@ bs=512 conv=notrunc status=none tools/fixfdimg $@ 1440 $(bin): $(elf) $(OBJCOPY) -O binary $< $@ $(sym): $(elf) $(OBJCOPY) --only-keep-debug $< $@ $(elf): $(obj) $(LD) -o $@ $(obj) $(LDFLAGS) -include $(dep) %-asm.o: %.asm nasm -o $@ -f elf $< .PHONY: clean clean: rm -f $(obj) $(bin) .PHONY: cleandep cleandep: rm -f $(dep) .PHONY: run run: $(img) qemu-system-i386 -fda $(img) -serial file:ser1.log -serial file:ser2.log .PHONY: debug debug: $(img) $(bin).sym qemu-system-i386 -fda $(img) -serial file:ser1.log -serial file:ser2.log -s -S & gdb .PHONY: disasm disasm: $(bin) ndisasm -o 0x600 $< >dis