foo
[eightysix] / kern / Makefile
1 csrc = $(wildcard src/*.c)
2 ssrc = $(wildcard src/*.asm)
3 obj = $(csrc:.c=.o) $(ssrc:.asm=.o)
4 dep = $(csrc:.c=.d)
5
6 disk_numsec = 720
7 #disk_numsec = 2880
8
9 bin = 86kern
10 img = 86kern.img
11
12 CC = ia16-elf-gcc
13 LD = ia16-elf-ld
14
15 CFLAGS = -march=i8088 -mtune=i8088 -MMD
16 LDFLAGS = -T kern.ld -Map kern.map
17
18 $(img): $(bin)
19         dd if=/dev/zero of=$@ bs=512 count=$(disk_numsec)
20         dd if=$< of=$@ bs=512 conv=notrunc
21
22 $(bin): $(obj)
23         $(LD) -o $@ $(obj) $(LDFLAGS)
24
25 -include $(dep)
26
27 %.o: %.asm
28         nasm -o $@ -f elf $<
29
30 .PHONY: clean
31 clean:
32         rm -f $(obj) $(bin)
33
34 .PHONY: cleandep
35 cleandep:
36         rm -f $(dep)
37
38
39 .PHONY: run
40 run: $(img)
41         qemu-system-i386 -fda $(img) -serial file:serial.log
42
43 .PHONY: debug
44 debug: $(img)
45         qemu-system-i386 -fda $(img) -serial file:serial.log -s -S
46
47 .PHONY: disasm
48 disasm: $(bin)
49         ndisasm -o 0x600 $< >dis