blob: 955cb8de6c0266e28351fb37a392e3605e3b4edb (
plain)
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
|
INCLUDE?=-Iinclude
CFLAGS?=-O0 -ffreestanding -std=gnu11 -fstack-protector-all -target $(ARCH)-none-elf
LDFLAGS?=-nostdlib
INCLUDE:=$(INCLUDE) $(SYS_INCLUDE)
CFLAGS:=$(CFLAGS) -Wall -Wextra -DVERSION=\"$(VERSION)\" -DARCH=\"$(ARCH)\" -g
LDFLAGS:=$(LDFLAGS)
ARCHDIR=arch/$(ARCH)
include $(ARCHDIR)/make.config
include $(ROOTDIR)/modules.conf
INCLUDE:=$(INCLUDE) $(KERNEL_ARCH_INCLUDE)
CFLAGS:=$(CFLAGS) $(KERNEL_ARCH_CFLAGS)
LDFLAGS:=$(LDFLAGS) $(KERNEL_ARCH_LDFLAGS)
KERNEL=vmbox
BOOTDIR=/boot
PREFIX=/usr
CORE_OBJS=core/init.o \
core/kprintf.o \
core/panic.o \
core/stack_protector.o \
core/string.o \
KERNEL_OBJS=$(KERNEL_ARCH_OBJS) \
$(CORE_OBJS) \
MODULE_SUBDIRS=
MODULE_OBJS=
include drivers/make.config
include fs/make.config
OBJS=$(KERNEL_OBJS) \
$(MODULE_OBJS) \
.PHONY: all modules clean install install-headers install-kernel install-modules
.SUFFIXES: .o .c .s
all: $(KERNEL) modules
$(KERNEL): $(KERNEL_OBJS)
@$(LD) --script=$(ARCHDIR)/linker.ld $(LDFLAGS) -o $@ $^
@echo [LD] $@
modules: $(MODULE_SUBDIRS)
$(MODULE_SUBDIRS):
$(MAKE) $(MAKECMDGOALS) -C $@
.c.o:
@$(CC) -MD -c $< -o $@ $(CFLAGS) $(INCLUDE)
@echo [CC] $@
.s.o:
@$(CC) -MD -c $< -o $@ $(CFLAGS) $(INCLUDE)
@echo [AS] $@
clean: $(MODULE_SUBDIRS)
$(RM) $(KERNEL) $(OBJS) $(OBJS:.o=.d)
install: install-headers install-kernel install-modules
install-headers:
install -d -m 0755 $(DESTDIR)$(PREFIX)/src/kernel/
cp -R include $(DESTDIR)$(PREFIX)/src/kernel/
install-kernel: $(KERNEL)
install -m 0644 $(KERNEL) $(DESTDIR)$(BOOTDIR)
install -m 0644 System.map-$(VERSION) $(DESTDIR)$(BOOTDIR)
install-modules: $(MODULE_SUBDIRS)
$(MAKE) $(MAKECMDGOALS) -C $@
-include $(OBJS:.o=.d)
|