-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
120 lines (97 loc) · 3.38 KB
/
Makefile
File metadata and controls
120 lines (97 loc) · 3.38 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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
# Note: this makefile should be run in docker
# Target support: qemu, unmatched (default)
TARGET_PLATFORM ?= qemu
# DEBUG=y to enable debug logging
DEBUG ?= n
BUILD_DIR = build
SIGN_UTIL_SRC = tools/sign
SIGN_UTIL = $(SIGN_UTIL_SRC)/build/sign
DTS_DIR = tools/dts
DTB_DIR = $(BUILD_DIR)/dtb
LINUX_DIR = tools/linux
LINUX_IMAGE_DIR = $(LINUX_DIR)/build
LINUX_IMAGE = $(LINUX_IMAGE_DIR)/Image
LINUX_SRC = /root/linux
EMOD_MANAGER_SRC = emodules/emod_manager
EMOD_MANAGER_BIN = $(BUILD_DIR)/emodules/emod_manager/emod_manager.bin
OPENSBI_SRC = coffer-opensbi
FW_DIR = $(shell pwd)/$(BUILD_DIR)/opensbi
FW_DYNAMIC_BIN = $(FW_DIR)/fw_dynamic.bin
FW_JUMP_ELF = $(FW_DIR)/fw_jump.elf
UBOOT_DIR = tools/u-boot
UBOOT_IMAGE_DIR = $(BUILD_DIR)/u-boot
UBOOT_SPL_IMAGE = $(UBOOT_IMAGE_DIR)/u-boot-spl.bin
UBOOT_IMAGE = $(UBOOT_IMAGE_DIR)/u-boot.itb
UBOOT_SRC = /root/u-boot
all: sd_part1 sd_part2 prog emodules $(LINUX_IMAGE) opensbi
sd_part1: $(UBOOT_SPL_IMAGE)
sd_part2: $(UBOOT_IMAGE)
prog:
@printf "\n[.] Building Payloads...\n"
make -C coffer_user_mode -j$(nproc)
@printf "[*] Building Payloads Done...\n\n"
$(SIGN_UTIL):
make -C tools/sign
emodules: $(SIGN_UTIL)
@printf "\n[.] Building EModules...\n"
CROSS_COMPILE=riscv64-unknown-elf- \
TARGET_PLATFORM=$(TARGET_PLATFORM) \
DEBUG=$(DEBUG) \
make -C emodules -j$(nproc)
@printf "[*] Building EModules Done\n\n"
$(DTB_DIR)/%.dtb: $(DTS_DIR)/%.dts
@printf "\n[.] Building dtb...\n"
mkdir -p $(DTB_DIR)
dtc -I dts -O dtb -o $@ $<
@printf "[*] Building dtb Done...\n\n"
$(LINUX_IMAGE):
@printf "\n[.] Building Kernel Image...\n"
mkdir -p $(LINUX_IMAGE_DIR)
ARCH=riscv \
CROSS_COMPILE=riscv64-unknown-linux-gnu- \
make -C $(LINUX_SRC) -j$$(($$(nproc)-4)) Image
cp $(LINUX_SRC)/arch/riscv/boot/Image $@
@printf "[*] Building Kernel Image Done...\n\n"
$(EMOD_MANAGER_BIN):
@printf "\n[.] Building EMod_Manager...\n"
CROSS_COMPILE=riscv64-unknown-elf- \
TARGET_PLATFORM=$(TARGET_PLATFORM) \
DEBUG=$(DEBUG) \
make -C $(EMOD_MANAGER_SRC) -j$(nproc)
@printf "[*] Building EMod_Manager Done...\n\n"
opensbi: $(EMOD_MANAGER_BIN)
@printf "\n[.] Building Security Monitor...\n"
mkdir -p $(FW_DIR)
CROSS_COMPILE=riscv64-unknown-linux-gnu- \
PLATFORM=generic \
TARGET_PLATFORM=$(TARGET_PLATFORM) \
DEBUG=$(DEBUG) \
make -C $(OPENSBI_SRC) -j$(nproc)
cp $(OPENSBI_SRC)/build/platform/generic/firmware/fw_dynamic.bin $(FW_DYNAMIC_BIN)
cp $(OPENSBI_SRC)/build/platform/generic/firmware/fw_jump.elf $(FW_JUMP_ELF)
@printf "[*] Building Security Monitor Done...\n\n"
$(FW_DYNAMIC_BIN): opensbi
$(FW_JUMP_ELF): opensbi
$(UBOOT_IMAGE): $(FW_DYNAMIC_BIN) $(DTB_DIR)/hifive-unmatched-a00.dtb
@printf "\n[.] Building U-Boot Image...\n"
mkdir -p $(UBOOT_IMAGE_DIR)
CROSS_COMPILE=riscv64-unknown-linux-gnu- \
OPENSBI=$(FW_DYNAMIC_BIN) \
make -C $(UBOOT_SRC) -j$(nproc)
cp $(UBOOT_SRC)/u-boot.itb $@
@printf "[*] Building U-Boot Image Done...\n\n"
$(UBOOT_SPL_IMAGE): $(FW_DYNAMIC_BIN) $(DTB_DIR)/hifive-unmatched-a00.dtb
@printf "\n[.] Building U-Boot SPL Image...\n"
mkdir -p $(UBOOT_IMAGE_DIR)
CROSS_COMPILE=riscv64-unknown-linux-gnu- \
OPENSBI=$(FW_DYNAMIC_BIN) \
make -C $(UBOOT_SRC) -j$(nproc)
cp $(UBOOT_SRC)/spl/u-boot-spl.bin $@
@printf "[*] Building U-Boot SPL Image Done...\n\n"
clean:
rm -rf $(BUILD_DIR)
clean_all: clean
make clean -C coffer-opensbi
make clean -C coffer_user_mode
make clean -C $(UBOOT_SRC)
.PHONY: all clean clean_all prog emodules opensbi