5ad379f5108faf49293f1fb0eeb0b58f37ff7fbe
[3sys] / sys1 / kern / Makefile
1 csrc = $(wildcard src/*.c) $(wildcard src/libc/*.c)
2 asmsrc = $(wildcard src/*.asm) $(wildcard src/libc/*.asm)
3 obj = $(csrc:.c=.o) $(asmsrc:.asm=-asm.o)
4 dep = $(csrc:.c=.d)
5 elf = kern1.elf
6
7 warn = -pedantic -Wall
8 dbg = -g
9 inc = -Isrc -Isrc/libc
10
11 CFLAGS = $(carch) $(warn) $(dbg) $(inc) -fno-pic -ffreestanding -nostdinc \
12                  -fno-builtin -MMD
13 LDFLAGS = $(ldarch) -nostdlib -T kern1.ld -Map kern1.map
14
15 ifeq ($(shell uname -m), x86_64)
16         carch = -m32
17         ldarch = -m elf_i386
18 endif
19
20 $(elf): $(obj)
21         $(LD) -o $@ $(obj) $(LDFLAGS)
22
23 -include $(dep)
24
25 %-asm.o: %.asm
26         nasm -f elf32 -o $@ $<
27
28 .PHONY: clean
29 clean:
30         rm -f $(obj) $(elf) link.map
31
32 .PHONY: cleandep
33 cleandep:
34         rm -f $(dep)
35
36 .PHONY: run
37 run: $(elf)
38         qemu-system-i386 -kernel $(elf) -serial file:serial.log
39
40 .PHONY: debug
41 debug: $(elf)
42         qemu-system-i386 -kernel $(elf) -serial file:serial.log -s -S