source: trunk/kernel/Makefile @ 8

Last change on this file since 8 was 1, checked in by alain, 8 years ago

First import

File size: 2.4 KB
RevLine 
[1]1#=====================================================================
2#                      ALMOS-kernel Makefile                         #
3#=====================================================================
4
5include ../common.mk
6
7KERNEL_REV ?=current
8
9DIRS=   cpu/$(CPU)                \
10        arch/$(ARCH)              \
11        drivers/$(DRVRS)          \
12        kern                      \
13        mm                        \
14        fs/devfs                  \
15        fs/sysfs                  \
16        fs/ext2                   \
17        fs/fat32                  \
18        fs/ramfs                  \
19        vfs                       \
20        libk                      \
21        ksh
22
23ifndef CPU
24$(error CPU variable is not defined)
25endif
26
27LFLAGS = -T$(OBJDIR)/kldscript $(CPULFLAGS)
28
29INCLUDES=       $(foreach DIR,$(DIRS),-I$(DIR)) -I$(OBJDIR)/kern/
30
31CFLAGS  =       $(INCLUDES) -fno-builtin -static -Wall -Werror -MMD -Wundef
32ifeq   ($(MODE),DEBUG)
33CFLAGS  +=      -g -O0 -fno-inline
34else
35CFLAGS  +=      -O2
36endif
37CFLAGS +=       $(CPUCFLAGS)
38
39CFILES= $(foreach DIR,$(DIRS),$(wildcard $(DIR)/*.c))
40SFILES= $(wildcard cpu/$(CPU)/*.S)
41
42OBJS=   $(addprefix $(OBJDIR)/, $(CFILES:.c=.o) $(SFILES:.S=.o))
43DEPS=   $(OBJS:.o=.d)
44
45OBJDIRS= $(addprefix $(OBJDIR)/, $(DIRS))
46
47# Kernel bin file name
48ifeq ($(KERNEL_REV),current)
49TARGET=$(OBJDIR)/almos-mk-$(ARCH)-$(CPU)
50else
51TARGET=$(OBJDIR)/almos-mk-$(ARCH)-$(CPU)-$(KERNEL_REV)
52endif
53
54
55.PHONY: clean timestamp
56
57
58$(TARGET): $(OBJDIRS) $(OBJDIR)/kldscript timestamp $(OBJS) 
59        @echo '   [  LD  ]        '$@.elf
60        @$(LD) -o $@.elf $(OBJS) $(LFLAGS)
61        @echo '   [  NM  ]        '$@.elf.nm
62        @$(NM) $@.elf > $@.elf.nm
63        @echo '   [ COPY ]        '$@.bin
64        @$(OCPY) -O binary  $@.elf  $@.bin
65        @echo -e '\n   [ DONE ]        \n'
66        $(ODMP) $(DUMPFLAGS)  -d $@.elf > $@.dump
67
68
69timestamp:
70        @echo "Compile flags: $(CFLAGS)"
71        @echo '#define ALMOS_DATE "'$(shell date +"%d %B %Y - %T")'"' > $(OBJDIR)/kern/almOS-date.h
72
73$(OBJDIR)/kldscript: arch/$(ARCH)/kldscript.h arch/$(ARCH)/arch-config.h
74        @echo '   [  CPP ]        '$<
75        @cpp $< | grep -v "#" | grep . > $@
76
77$(OBJDIR)/%.o: %.c
78        @echo '   [  CC  ]        '$<
79        cpp $(INCLUDES) $< out.cpp
80        @$(CC) $(CFLAGS) -c $< -o $@
81ifneq   ($(MODE),DEBUG)
82        @$(STRIP) -x -R .pdr -R .gnu.attributes -R .reginfo -R .comment $@
83endif
84
85$(OBJDIR)/%.o: %.S
86        @echo '   [  AS  ]        '$<
87        @$(CC) $(CFLAGS) -c $< -o $@
88ifneq   ($(MODE),DEBUG)
89        @$(STRIP) -x -R .pdr -R .gnu.attributes -R .reginfo -R .comment $@
90endif
91
92clean:
93        rm -rf $(OBJDIR) out.cpp
94
95$(OBJDIRS):
96        @echo '   [ MKDIR ]       '$@
97        @mkdir -p $@
98
99
100-include $(DEPS)
Note: See TracBrowser for help on using the repository browser.