inwudriver-weibo/build/Makefile

160 lines
6.6 KiB
Makefile
Raw Normal View History

# -----------------------------------------------------------------------------------------
#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]"