-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathMakefile
82 lines (64 loc) · 1.47 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
ifeq ($(strip $(V)),)
E= @echo
Q= @
else
E = @\#
Q =
endif
CC := gcc -m32
LD := ld -m elf_i386
AS := as --32
CFLAGS := -g3 -Werror -ffreestanding -nostdlib -mno-red-zone
LDFLAGS := -nostdlib -fno-builtin -nostartfiles -nostdinc -nodefaultlibs
KERNEL := kernel.img
WARNINGS += -Wall
WARNINGS += -Wcast-align
WARNINGS += -Wformat=2
WARNINGS += -Winit-self
WARNINGS += -Wmissing-declarations
WARNINGS += -Wmissing-prototypes
WARNINGS += -Wnested-externs
WARNINGS += -Wno-system-headers
WARNINGS += -Wold-style-definition
WARNINGS += -Wredundant-decls
WARNINGS += -Wsign-compare
WARNINGS += -Wstrict-prototypes
WARNINGS += -Wundef
WARNINGS += -Wvolatile-register-var
WARNINGS += -Wwrite-strings
CFLAGS += $(WARNINGS)
OBJS += kernel.o
OBJS += gdt.o
OBJS += isr.o
OBJS += idt.o
OBJS += mm.o
OBJS += vm.o
OBJS += vga.o
OBJS += timer.o
OBJS += printk.o
OBJS += kbd.o
OBJS += string.o
OBJS += serial.o
OBJS += ports.o
OBJS += vtxprintf.o
OBJS += boot_log.o
all: $(KERNEL)
$(E) "--[ Kernel Built"
DEPS :=$(patsubst %.o, %.d, $(OBJS))
$(KERNEL): $(DEPS) $(OBJS) loader.o
$(E) " LINK " $@
$(Q) $(LD) -T linker.ld loader.o $(OBJS) -o $@
loader.o:
$(E) " AS " $@
$(Q) $(AS) -o loader.o loader.s gdt.s interrupt.s
$(DEPS):
%.d: %.c
$(Q) $(CC) -M -MT $(patsubst %.d, %.o, $@) $(CFLAGS) $(LDFLAGS) $< -o $@
$(OBJS):
%.o: %.c
$(E) " CC " $@
$(Q) $(CC) -c $(CFLAGS) $(LDFLAGS) $< -o $@
floppy: $(KERNEL)
clean:
$(Q) rm -f $(DEPS) $(OBJS) loader.o $(KERNEL)
$(E) "--[ Clean"