160 lines
6.6 KiB
Makefile
160 lines
6.6 KiB
Makefile
|
|
# -----------------------------------------------------------------------------------------
|
|
#Purpose:one click build
|
|
#Copyright CompanyNameMagicTag 2018-2019.All rights reserved
|
|
#Author: CompanyName
|
|
#------------------------------------------------------------------------------------------
|
|
|
|
# Dependency script dependency.xml,
|
|
# which starts compilation according to the configuration of dependency.xml.
|
|
|
|
include $(MAIN_TOPDIR)/build_tmp/config/soc_product_config.mk
|
|
|
|
ifeq ($(PRODUCT_CFG_BUILD_RELEASE), yes)
|
|
MAIN_OUT_DIR_NAME = $(project_name)_release
|
|
else
|
|
MAIN_OUT_DIR_NAME = $(project_name)_debug
|
|
endif
|
|
|
|
|
|
|
|
MAIN_BUILD_TMP_OUT := $(MAIN_TOPDIR)/build_tmp/$(MAIN_OUT_DIR_NAME)
|
|
ALL_LIBS := $(MAIN_BUILD_TMP_OUT)/all/lib
|
|
|
|
MAIN_OUTPUT := $(MAIN_TOPDIR)/output/$(MAIN_OUT_DIR_NAME)
|
|
|
|
LD_PATH := $(MAIN_TOPDIR)/target/socbuilder/ld_scripts
|
|
SYM_PATH := $(MAIN_TOPDIR)/target/socbuilder/symtab
|
|
HUPGDIR := $(MAIN_OUTPUT)/mk_image/image
|
|
|
|
SYM_TABLE := $(SYM_PATH)/Firmware_Base.sym
|
|
|
|
LDFLAGS = -nostdlib -static --gc-sections -L$(ALL_LIBS) -L$(LD_PATH) -T$(LD_PATH)/LiteOS_UseRemap_Firmware.lds
|
|
ifeq ($(HB_LITEOS_COMPILE_TESTCASE), YES)
|
|
LDFLAGS = --nostartfiles -nostdlib -static --gc-sections -L$(ALL_LIBS) -L$(LD_PATH) -T$(LD_PATH)/LiteOS_UseRemap_ROM_Test.lds
|
|
endif
|
|
|
|
empty :=
|
|
comma :=,
|
|
app_list := $(subst $(comma), $(empty), $(app_str))
|
|
dev_str := $(subst $(comma), $(empty), $(dev_list))
|
|
|
|
RELATIVE_DIR := ../
|
|
MOD_INCLUDE += $(addprefix -I $(RELATIVE_DIR),$(shell cat $(RELATIVE_DIR)/Makefile.inc))
|
|
|
|
.PHONY: prepare build_ver link hupg
|
|
|
|
prepare:
|
|
@$(foreach X,$(dev_str),\
|
|
rm -rf $(MAIN_BUILD_TMP_OUT)/$(X)/bin;\
|
|
mkdir -p $(MAIN_BUILD_TMP_OUT)/$(X)/bin;)
|
|
# Generate MAGIC values ??for different apps
|
|
@python3 $(MAIN_TOPDIR)/build/magic/magic.py $(app_str)
|
|
|
|
make_libs:
|
|
@echo "**********make libs**************"
|
|
-@mkdir -p $(ALL_LIBS)
|
|
if [ -d "$(MAIN_TOPDIR)/target/libs/sdk_libs/all" ]; \
|
|
then \
|
|
cp -rf $(MAIN_TOPDIR)/target/libs/sdk_libs/all/* $(ALL_LIBS) ;\
|
|
fi
|
|
|
|
$(foreach X,$(dev_str),\
|
|
if [ -d "$(MAIN_TOPDIR)/target/libs/sdk_libs/$(X)" ] ;\
|
|
then \
|
|
cp -rf $(MAIN_TOPDIR)/target/libs/sdk_libs/$(X)/* $(MAIN_BUILD_TMP_OUT)/$(X)/lib ;\
|
|
fi;)
|
|
|
|
build_ver:
|
|
@echo "**********build version***********"
|
|
$(Q)$(foreach X,$(app_list),\
|
|
$(RM) $(ALL_LIBS)/hb_ver_cfg.o; \
|
|
$(CC) $(CFLAGS) $(MOD_INCLUDE) -D$(X) -c $(MAIN_TOPDIR)/target/socbuilder/hb_cfg/hb_ver_cfg.c -o $(ALL_LIBS)/hb_ver_cfg.o; \
|
|
$(foreach Y,$(dev_str), \
|
|
$(AR) -d $(MAIN_BUILD_TMP_OUT)/$(Y)/lib/app/lib$(X).a hb_ver_cfg.o; \
|
|
$(AR) -q $(MAIN_BUILD_TMP_OUT)/$(Y)/lib/app/lib$(X).a $(ALL_LIBS)/hb_ver_cfg.o;))
|
|
|
|
# It took too long to delete, so it is no longer deleted.
|
|
# @rm -rf $(ALL_LIBS)/libgcc/*
|
|
# Parse xxx_build_target.xml
|
|
link: prepare build_ver make_libs
|
|
@echo "start link"
|
|
$(Q) $(RM) $(LD_PATH)/system_config.ld
|
|
$(CC) -E -I $(MAIN_TOPDIR)/rom/bsp/system/os/Huawei_LiteOS/kernel/include -I $(MAIN_TOPDIR)/bsp/system/os/Huawei_LiteOS/targets/dw21v100/config $(LD_PATH)/system_config.ld.S -o $(LD_PATH)/system_config.ld -P
|
|
|
|
$(foreach X,$(app_list),\
|
|
$(foreach Y,$(dev_str), \
|
|
$(LD) -N --just-symbols=${SYM_TABLE} $(LDFLAGS) -L$(MAIN_BUILD_TMP_OUT)/$(Y)/lib/ -L$(MAIN_BUILD_TMP_OUT)/$(Y)/lib/app/ -Map=$(MAIN_BUILD_TMP_OUT)/$(Y)/bin/dw21_$(Y)_$(X).map -o $(MAIN_BUILD_TMP_OUT)/$(Y)/bin/dw21_$(Y)_$(X).out --start-group $(patsubst %,-l%,$(subst lib, ,$(basename $(notdir $(wildcard $(MAIN_BUILD_TMP_OUT)/$(Y)/lib/*.a $(MAIN_BUILD_TMP_OUT)/$(Y)/lib/app/lib$(X).a $(ALL_LIBS)/*.a))))) --end-group;\
|
|
$(OBJCOPY) -O binary $(MAIN_BUILD_TMP_OUT)/$(Y)/bin/dw21_$(Y)_$(X).out $(MAIN_BUILD_TMP_OUT)/$(Y)/bin/dw21_$(Y)_$(X).bin;\
|
|
$(OBJDUMP) -d $(MAIN_BUILD_TMP_OUT)/$(Y)/bin/dw21_$(Y)_$(X).out >$(MAIN_BUILD_TMP_OUT)/$(Y)/bin/dw21_$(Y)_$(X).asm;\
|
|
dd if=$(MAIN_BUILD_TMP_OUT)/$(Y)/bin/dw21_$(Y)_$(X).bin of=$(MAIN_BUILD_TMP_OUT)/$(Y)/bin/dw21_$(Y)_$(X)_flash.bin count=1 bs=1024;\
|
|
dd if=$(MAIN_TOPDIR)/target/libs/rom_bin/dw21_rom_data.bin of=$(MAIN_BUILD_TMP_OUT)/$(Y)/bin/dw21_$(Y)_$(X)_flash.bin seek=1 bs=1024;\
|
|
dd if=$(MAIN_BUILD_TMP_OUT)/$(Y)/bin/dw21_$(Y)_$(X).bin of=$(MAIN_BUILD_TMP_OUT)/$(Y)/bin/dw21_$(Y)_$(X)_flash.bin skip=4 seek=4 bs=1024;\
|
|
mv $(MAIN_BUILD_TMP_OUT)/$(Y)/bin/dw21_$(Y)_$(X)_flash.bin $(MAIN_BUILD_TMP_OUT)/$(Y)/bin/dw21_$(Y)_$(X).bin;\
|
|
python3 $(SYM_PATH)/../scripts/arm_thumb_asm_check.py $(MAIN_BUILD_TMP_OUT)/$(Y)/bin/dw21_$(Y)_$(X).asm $(SYM_PATH)/Firmware_Base.sym $(SYM_PATH)/rom_expt.json;))
|
|
|
|
#$(Q)$(foreach X,$(app_list),\
|
|
#$(foreach Y,$(dev_str), \
|
|
#if (cmp -s $(MAIN_BUILD_TMP_OUT)/$(Y)/bin/dw21_$(Y)_$(X)_rom.bin $(MAIN_TOPDIR)/target/libs/rom_bin/dw21_rom.bin);\
|
|
#then echo "#########DW21 $(Y) $(X) ROM BIN IS THE SAME!#########";\
|
|
#else echo "#########DW21 $(Y) $(X) ROM BIN IS DIFFERENT!#########";\
|
|
#exit 1;\
|
|
#fi;))
|
|
|
|
# $(foreach Y,$(dev_str), \
|
|
# rm -rf $(MAIN_BUILD_TMP_OUT)/$(Y)/debug;\
|
|
# mkdir -p $(MAIN_BUILD_TMP_OUT)/$(Y)/debug;\
|
|
# cp $(ALL_LIBS)/* $(MAIN_BUILD_TMP_OUT)/$(Y)/debug/;\
|
|
# cp $(MAIN_BUILD_TMP_OUT)/$(Y)/lib/* $(MAIN_BUILD_TMP_OUT)/$(Y)/debug/;\
|
|
# rm $(MAIN_BUILD_TMP_OUT)/$(Y)/debug/librom.o;)
|
|
|
|
|
|
# @echo "*****************ELF SEGMENGT SIZE BEFORE LINK*******************"
|
|
# @$(foreach Y,$(dev_str), \
|
|
# size -t $(MAIN_BUILD_TMP_OUT)/$(Y)/debug/*.o $(MAIN_BUILD_TMP_OUT)/$(Y)/debug/*.a > $(MAIN_BUILD_TMP_OUT)/$(Y)/debug/before_link_size.log;\
|
|
# head -n 1 $(MAIN_BUILD_TMP_OUT)/$(Y)/debug/before_link_size.log;\
|
|
# tail -n 1 $(MAIN_BUILD_TMP_OUT)/$(Y)/debug/before_link_size.log;)
|
|
# @echo "*****************************************************************"
|
|
|
|
link_check:
|
|
$(Q)$(foreach X,$(app_list),\
|
|
$(foreach Y,$(dev_str), \
|
|
if [ ! -f $(MAIN_BUILD_TMP_OUT)/$(Y)/bin/dw21_$(Y)_$(X).bin ] || [ ! -f $(MAIN_BUILD_TMP_OUT)/$(Y)/bin/dw21_$(Y)_$(X).out ] || [ ! -f $(MAIN_BUILD_TMP_OUT)/$(Y)/bin/dw21_$(Y)_$(X).map ]; \
|
|
then \
|
|
echo -n "HB BUILD link [FAILURE]"; \
|
|
exit 1;\
|
|
fi;))
|
|
echo -n "HB BUILD link [SUCCESS]" ;
|
|
exit 0;
|
|
|
|
hupg:
|
|
-@rm -rf $(MAIN_OUTPUT)/mk_image
|
|
$(foreach Y,$(dev_str), \
|
|
rm -rf $(HUPGDIR)/*$(Y)*.hupg;\
|
|
rm -rf $(HUPGDIR)/*$(Y)*.hbin;)
|
|
python3 hupg/pkt_builder.py
|
|
|
|
FILE = $(MAIN_OUTPUT)/mk_image/image/image_list.txt
|
|
IMAGELIST = $(shell awk '{print $$1}' $(FILE))
|
|
|
|
# Verify the installation package is correct
|
|
hupg_check:
|
|
@if [ -f $(FILE) ]; \
|
|
then \
|
|
echo -n "image_listalready generated"; \
|
|
else \
|
|
echo -n "image_list not generated"; \
|
|
echo -n "HB BUILD hupg_check [FAILURE]"; \
|
|
exit 1;\
|
|
fi;
|
|
@for image in $(IMAGELIST);\
|
|
do if [ -f $(HUPGDIR)/$$image ]; \
|
|
then \
|
|
echo $$image;\
|
|
else \
|
|
echo -n "HB BUILD hupg_check [FAILURE]" ;\
|
|
exit 1;\
|
|
fi;\
|
|
done
|
|
@echo -n "HB BUILD hupg_check [SUCCESS]"
|