• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1include $(MAIN_TOPDIR)/build/make_scripts/config.mk
2-include $(MAIN_TOPDIR)/$(MODULE_DIR)/srcs.mk
3include $(MAIN_TOPDIR)/$(MODULE_DIR)/module_config.mk
4
5override CCFLAGS = $(BOOT_CCFLAGS) $(BOOT_DEFINE) $(BOOT_INC)
6override ASFLAGS = $(BOOT_ASFLAGS) $(BOOT_DEFINE) $(BOOT_INC)
7
8LIBDIR = $(MAIN_TOPDIR)/$(LIB_PATH)/$(MODULE_DIR)
9OBJDIR = $(MAIN_TOPDIR)/$(OBJ_PATH)/flashboot
10ID_CFG_FILE = $(MAIN_TOPDIR)/$(MODULE_DIR)/file_id.cfg
11
12LIB_NAME = lib$(LIB).a
13SRCS = $($(LIB)_srcs)
14LIBOUT = $(LIBDIR)/$(MODULE_DIR)/$(LIB_NAME)
15
16ifdef SRC_FILES
17OBJ_SRCS = $(filter %.c, $(SRC_FILES))
18ASM_SRCS = $(filter %.S, $(SRC_FILES))
19else
20OBJ_SRCS = $(foreach dir, $(SRCS), $(wildcard $(dir)/*.c))
21ASM_SRCS = $(foreach dir, $(SRCS), $(wildcard $(dir)/*.S ))
22OBJ_COMMON_SRCS = $(foreach dir, $($(LIB)_common_srcs), $(wildcard $(dir)/*.c))
23ASM_COMMON_SRCS = $(foreach dir, $($(LIB)_common_srcs), $(wildcard $(dir)/*.S ))
24endif
25OBJ_SRCS += $(MAIN_TOPDIR)/third_party/u-boot-v2019.07/u-boot-v2019.07/lib/crc32.c \
26            $(MAIN_TOPDIR)/third_party/u-boot-v2019.07/u-boot-v2019.07/lib/lzma/LzmaDec.c \
27            $(MAIN_TOPDIR)/third_party/u-boot-v2019.07/u-boot-v2019.07/lib/lzma/LzmaTools.c
28OBJS = $(patsubst %.c, $(OBJDIR)/%.o, $(OBJ_SRCS))
29ASM_OBJS = $(patsubst %.S, $(OBJDIR)/%.o, $(ASM_SRCS))
30COMMON_OBJS = $(patsubst ../%.c, $(OBJDIR)/%.o, $(OBJ_COMMON_SRCS))
31COMMON_ASM_OBJS = $(patsubst ../%.S, $(OBJDIR)/%.o, $(ASM_COMMON_SRCS))
32
33SIGN_TOOL = $(MAIN_TOPDIR)/tools/sign_tool/sign_tool
34ENCRYPT_KEY_PATH = $(MAIN_TOPDIR)/tools/sign_tool/aes_key.txt
35ifeq ($(CONFIG_TARGET_SIG_SHA256), y)
36    LINK_FILE = $(MAIN_TOPDIR)/build/link/flashboot_sha256.lds
37    INPUT_LOADER = $(MAIN_TOPDIR)/build/basebin/Hi3861_loader_sha256.bin
38else ifeq ($(CONFIG_TARGET_SIG_ECC), y)
39    LINK_FILE = $(MAIN_TOPDIR)/build/link/flashboot_ecc.lds
40    INPUT_LOADER = $(MAIN_TOPDIR)/build/basebin/Hi3861_loader_ecc.bin
41    ROOT_KEY_PATH = $(MAIN_TOPDIR)/tools/sign_tool/root_ecc.pem
42    SUB_KEY_PATH = $(MAIN_TOPDIR)/tools/sign_tool/sub_ecc.pem
43    SIGN_TYPE = 2
44else
45    LINK_FILE = $(MAIN_TOPDIR)/build/link/flashboot_rsa.lds
46    INPUT_LOADER = $(MAIN_TOPDIR)/build/basebin/Hi3861_loader_rsa.bin
47    ROOT_KEY_PATH = $(MAIN_TOPDIR)/tools/sign_tool/root_rsa.pem
48    SUB_KEY_PATH = $(MAIN_TOPDIR)/tools/sign_tool/sub_rsa.pem
49    ifeq ($(CONFIG_TARGET_SIG_RSA_V15), y)
50        SIGN_TYPE = 0
51    else ifeq ($(CONFIG_TARGET_SIG_RSA_PSS), y)
52        SIGN_TYPE = 1
53    endif
54endif
55
56LIBS := $(patsubst lib%.a, -l%, $(notdir $(wildcard $(MAIN_TOPDIR)/build/libs/boot_libs/*.a)))
57LIBPATH := -L$(MAIN_TOPDIR)/build/libs
58LIBPATH += -L$(MAIN_TOPDIR)/build/libs/boot_libs
59BOOT_ELF = $(MAIN_TOPDIR)/$(CACHE_PATH)/flash_boot.elf
60BOOT_BIN = $(MAIN_TOPDIR)/$(CACHE_PATH)/hi_flash_boot.bin
61BOOT_BIN_B = $(MAIN_TOPDIR)/$(BIN_PATH)/$(TARGET_CHIP)_boot_signed_B.bin
62BOOT_SIGNED_BIN = $(MAIN_TOPDIR)/$(BIN_PATH)/$(TARGET_CHIP)_boot_signed.bin
63
64all: $(OBJS) $(ASM_OBJS) $(COMMON_OBJS) $(COMMON_ASM_OBJS)
65	$(LINK) $(BOOT_LINK_FLAGS) -T $(LINK_FILE) $(LIBPATH) $(sort $^) -o $(BOOT_ELF) --start-group $(LIBS) --end-group
66	$(OBJCOPY) -Obinary -R .rom.text -R .rom.code.text -R .u_boot_cmd  -R .rom.data -R .rom.code.data -R .rom.bss -R .rom.code.bss -S $(BOOT_ELF) $(BOOT_BIN)
67ifeq ($(CONFIG_TARGET_SIG_SHA256), y)
68	$(SIGN_TOOL) -i $(BOOT_BIN) -o $(BOOT_SIGNED_BIN) -n -t$(BOOT_BIN_B)
69else ifeq ($(CONFIG_BOOT_ENCRYPT), y)
70	$(SIGN_TOOL) -i $(BOOT_BIN) -o $(BOOT_SIGNED_BIN) -r$(ROOT_KEY_PATH) -s$(SUB_KEY_PATH) -v $(CONFIG_TARGET_BOOT_VER) -a $(SIGN_TYPE) -e$(ENCRYPT_KEY_PATH) -t$(BOOT_BIN_B)
71else
72	$(SIGN_TOOL) -i $(BOOT_BIN) -o $(BOOT_SIGNED_BIN) -r$(ROOT_KEY_PATH) -s$(SUB_KEY_PATH) -v $(CONFIG_TARGET_BOOT_VER) -a $(SIGN_TYPE) -t$(BOOT_BIN_B)
73endif
74	$(Q)echo [BOOT] SUCCESS
75	$(RM) $(BOOT_ELF) $(BOOT_BIN)
76
77
78include $(MAIN_TOPDIR)/build/make_scripts/lib.mk
79$(COMMON_OBJS): $(OBJDIR)/%.o : ../%.c
80	$(Q)if [ ! -d $(dir $@) ]; then \
81	mkdir -p $(dir $@); \
82	fi;
83	$(Q) echo Compile $<;
84	$(Q)if [ -e $< ]; \
85	then $(CC) $(CCFLAGS) -c $< -o $@; \
86	if [ "$$?" != "0" ]; then \
87	exit 1;\
88	fi; \
89	fi;
90
91$(COMMON_ASM_OBJS): $(OBJDIR)/%.o : ../%.S
92	$(Q)echo Compile  $<;
93	$(Q)if [ ! -d $(dir $@) ]; \
94	then \
95	mkdir -p $(dir $@);\
96	fi;
97	$(Q)if [ -f $< ]; \
98	then \
99	$(CC) $(ASFLAGS)  -c $< -o $@ ; \
100	if [ "$$?" != "0" ]; then \
101	exit 1;\
102	fi;\
103	fi;
104