-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmakefile
More file actions
83 lines (63 loc) · 2.08 KB
/
makefile
File metadata and controls
83 lines (63 loc) · 2.08 KB
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
82
83
include .env.local.mk
ARCH?=aarch64
ARCHEXT?=-none-eabi
CFLAGS?=-O2 -g -fPIC -fpatchable-function-entry=2,2 # -Wstack-usage=131072
CPPFLAGS?=
LDFLAGS?=-g
LIBS?=
BUILD_DIR:=.build
PREFIX?=/usr/local
EXEC_PREFIX?=$(PREFIX)
BOOTDIR?=$(EXEC_PREFIX)/boot
INCLUDEDIR?=$(PREFIX)/include
ARCHDIR=arch/$(ARCH)
CFLAGS:=$(CFLAGS) -ffreestanding -Wall -Wextra
CPPFLAGS:=$(CPPFLAGS) -D__is_kernel -Iinclude -I$(ARCHDIR)/include
LIBS:=$(LIBS) -nostdlib
include $(ARCHDIR)/make.config
TEST_OBJS=$(patsubst %.c,%.o,$(wildcard kernel/tests/*.c))
KERNEL_OBJS=$(KERNEL_ARCH_OBJS) $(TEST_OBJS) $(patsubst %.c,%.o,$(wildcard kernel/*.c))
OBJS=$(addprefix ${BUILD_DIR}/,${KERNEL_OBJS})
LINK_LIST=$(addprefix ${BUILD_DIR}/,${KERNEL_OBJS}) $(LIBS)
CFLAGS:=$(CFLAGS) $(KERNEL_ARCH_CFLAGS)
CPPFLAGS:=$(CPPFLAGS) $(KERNEL_ARCH_CPPFLAGS)
LDFLAGS:=$(LDFLAGS) $(KERNEL_ARCH_LDFLAGS)
LIBS:=$(LIBS) $(KERNEL_ARCH_LIBS)
GIT_INFO:=$(shell git rev-parse HEAD)
DATE_INFO:=$(shell date +%Y%m%d%H%M%S)
BUILD_INFO:=Version: $(DATE_INFO)+$(GIT_INFO)
CFLAGS:=$(CFLAGS) -DBUILD_INFO='"$(ARCH_BUILD_INFO)\n$(BUILD_INFO)"' -DSYSINFO_VERSION='"$(GIT_INFO)"' -DSYSINFO_ARCH='"$(ARCH_ARCH)"'
CC:=$(or $(CC),$(ARCH)$(ARCHEXT))
CCOMPILER?=$(CC)-gcc
CLINKER?=$(CC)-ld
COBJCOPY?=$(CC)-objcopy
.PHONY: clean
.SUFFIXES: .o .c .S
$(addprefix ${BUILD_DIR}/,%.o): %.c
@mkdir -p $(dir $@)
$(CCOMPILER) -MD -c $< -o $@ $(CFLAGS) $(CPPFLAGS)
$(addprefix ${BUILD_DIR}/,%.o): %.S
@mkdir -p $(dir $@)
$(CCOMPILER) -MD -c $< -o $@ $(CFLAGS) $(CPPFLAGS)
all: beehive.kernel
beehive.kernel: $(OBJS) $(ARCHDIR)/linker.ld
@echo ${BUILD_INFO}
$(CLINKER) -T $(ARCHDIR)/linker.ld -o $@ $(LDFLAGS) $(LINK_LIST)
$(COBJCOPY) -O binary $@ $@.bin
mv $@.bin ../initrd/boot
@echo "Finished build successfully"
clean:
rm -f beehive.kernel
rm -f $(OBJS) *.o */*.o */*/*.o
rm -f $(OBJS:.o=.d) *.d */*.d */*/*.d
rm -rf $(BUILD_DIR)
.PHONY: relink
relink:
@rm -f beehive.kernel
make
test:
CFLAGS=-DRUN_SELF_TESTS=1 make
u-boot-script:
../u-boot/tools/mkimage -f ./arch/aarch64/scripts/u-boot.its beehive.itb
mv ./beehive.itb ../initrd/boot.scr
-include $(OBJS:.o=.d)