334 lines
17 KiB
Makefile
Executable File
334 lines
17 KiB
Makefile
Executable File
NVT_FS_MTD_CFG_DEFAULT := ${ROOTFS_DIR}/mtd_cfg.txt
|
|
NVT_FS_MTD_CFG := ${CONFIG_DIR}/cfg_gen/mtd_cfg.txt
|
|
COPYSO_CHK_BIN_PATH =bin sbin usr/bin usr/sbin usr/local/bin usr/local/sbin var/www var/www/onvif var/www/cgi-bin
|
|
COPYSO_SCRIPT = $(LINUX_BUILD_TOP)/build/copyso.sh
|
|
IMGNAME_RAMDISK="rootfs.ramdisk.bin"
|
|
IMGNAME_TARBZ2="rootfs.tar.bz2"
|
|
IMGNAME_UBIFS="rootfs.ubifs.bin"
|
|
IMGNAME_UBIFS_RW="rootfs_1.rw.ubifs.bin"
|
|
IMGNAME_SQUASHFS="rootfs.squash.bin"
|
|
IMGNAME_SQUASH_UBI="rootfs.squash_ubi.bin"
|
|
IMGNAME_SQUASHFS1="rootfs_1.squash.bin"
|
|
IMGNAME_JFFS2="rootfs.jffs2.bin"
|
|
IMGNAME_JFFS2_RW="rootfs_1.rw.jffs2.bin"
|
|
IMGNAME_EXT4="rootfs.ext4.bin"
|
|
IMGNAME_EXT4_RW="rootfs.rw.ext4.bin"
|
|
IMGNAME_FAT_CACHE="rootfs_1.cache.vfat.bin"
|
|
PARTITION_LABEL_UBIFS = rootfs
|
|
PARTITION_LABEL_UBIFS_RW = rootfs1
|
|
MODELCFG_PROFILE_PATH="${ROOTFS_DIR}/rootfs/etc/profile_prjcfg"
|
|
CLEAR_FILE_LIST="rootfs/etc/profile_prjcfg rootfs/linuxrc rootfs/etc/lib"
|
|
GEN_MODULES_DEP_BB_FILE = $(LINUX_BUILD_TOP)/build/nvt-tools/gen_modules_dep_bb
|
|
DTBNAME = nvt-evb.dtb
|
|
IMGNAME_SQUASHFS1_SORT="${CONFIG_DIR}/cfg_gen/squash1_sort.txt"
|
|
|
|
# disable python tool generate __pycache__ directory
|
|
export PYTHONDONTWRITEBYTECODE=1
|
|
|
|
KERVER ?= $(NVT_LINUX_VER)
|
|
include $(NVT_PRJCFG_MODEL_CFG)
|
|
-include $(NVT_FS_MTD_CFG_DEFAULT)
|
|
-include $(NVT_FS_MTD_CFG)
|
|
|
|
ifeq ($(NVT_BINARY_FILE_STRIP), yes)
|
|
STRIPDIRS = ${ROOTFS_DIR}/rootfs/bin/* ${ROOTFS_DIR}/rootfs/sbin/* ${ROOTFS_DIR}/rootfs/user/bin/* ${ROOTFS_DIR}/rootfs/usr/sbin/*
|
|
STRIPLIBS = ${ROOTFS_DIR}/rootfs/lib/* ${ROOTFS_DIR}/rootfs/usr/lib/*
|
|
endif
|
|
|
|
define gen_rootfs_init
|
|
echo -e "\e[1;44mRootfs are generating.....\e[0m"
|
|
if [ -z $(LINUX_BUILD_TOP) ]; then \
|
|
echo -e "\r\nERROR :Please source build/envsetup.sh in NA51000_Linux firstly to have auto copyso function\r\n"; \
|
|
exit 1; \
|
|
fi
|
|
if [ ! -e $(ROOTFS_DIR)/bin ]; then \
|
|
mkdir $(ROOTFS_DIR)/bin; \
|
|
else \
|
|
if [ -d $(ROOTFS_DIR)/bin/mnt ]; then sudo umount $(ROOTFS_DIR)/bin/mnt; fi; \
|
|
rm -rf $(ROOTFS_DIR)/bin/*; \
|
|
fi
|
|
if [ ! -z $(LINUX_BUILD_TOP) ]; then \
|
|
sh $(COPYSO_SCRIPT) "$(ROOTFS_DIR)/rootfs" $(COPYSO_CHK_BIN_PATH); \
|
|
fi
|
|
if [ -f "$(GEN_MODULES_DEP_BB_FILE)" ]; then \
|
|
echo "$(GEN_MODULES_DEP_BB_FILE) $(ROOTFS_DIR)/lib/modules/$(KERVER)"; \
|
|
$(GEN_MODULES_DEP_BB_FILE) $(ROOTFS_DIR)/rootfs/lib/modules/$(KERVER); \
|
|
else \
|
|
echo "WRANING: can not find $(GEN_MODULES_DEP_BB_FILE)"; \
|
|
fi
|
|
|
|
endef
|
|
|
|
define gen_rootfs_etc_link
|
|
if [ ! -z $(NVT_ROOTFS_ETC) ]; then \
|
|
cd $(ROOTFS_DIR)/rootfs; rm -rf etc; ln -s etc_Model/etc_$(NVT_ROOTFS_ETC) etc; \
|
|
else \
|
|
MODEL=`echo $(NVT_PRJCFG_MODEL_CFG) | awk -F'/' '{print $$(NF-1)}' | awk -F'cfg_' '{print $$NF}'`; \
|
|
cd $(ROOTFS_DIR)/rootfs; rm -rf etc; ln -s etc_Model/etc_$$MODEL etc; \
|
|
echo -e "\e[1;32mYour model is $$MODEL\e[0m"; \
|
|
fi
|
|
endef
|
|
|
|
# function: gen_rootfs_ubinize_cfg_param
|
|
# $(1) : ubi fs file, e.g. $(IMGNAME_UBIFS).raw
|
|
# $(2) : output cfg file, e.g. bin/ubinize.cfg
|
|
# $(3) : vol_size, e.g. ROOTFS_UBI_MAX_LEB_COUNT * ROOTFS_UBI_ERASE_BLK_SIZE
|
|
gen_rootfs_ubinize_cfg_param = \
|
|
echo -e "[ubifs]" > $(2); \
|
|
echo -e "mode=ubi" >> $(2); \
|
|
echo -e "image=$(1)" >> $(2); \
|
|
echo -e "vol_id=0" >> $(2); \
|
|
echo -e "vol_size=$(3)" >> $(2); \
|
|
echo -e "vol_type=dynamic" >> $(2); \
|
|
echo -e "vol_name=rootfs" >> $(2);
|
|
|
|
define gen_rootfs_tmp
|
|
rm -rf $(ROOTFS_DIR)/rootfs.tmp;
|
|
if [ "$(NVT_STATIC_DEVNODE)" == "NVT_STATIC_DEVNODE_ON" ]; then \
|
|
mkdir $(ROOTFS_DIR)/rootfs.tmp; cd $(ROOTFS_DIR)/rootfs; sudo cp -arf `ls | grep -v etc` $(ROOTFS_DIR)/rootfs.tmp; \
|
|
else \
|
|
mkdir $(ROOTFS_DIR)/rootfs.tmp; cd $(ROOTFS_DIR)/rootfs; cp -arf `ls | grep -v etc` $(ROOTFS_DIR)/rootfs.tmp; \
|
|
fi
|
|
@# Generate etc folder
|
|
@# List all etc folder files
|
|
$(eval etc_files_list=`cd $(ROOTFS_DIR)/rootfs/etc; find .`)
|
|
cd $(ROOTFS_DIR)/rootfs/etc/; \
|
|
for file in $(etc_files_list); do \
|
|
if [ -L $$file ]; then \
|
|
mkdir -p $(ROOTFS_DIR)/rootfs.tmp/etc/`dirname $$file`; \
|
|
cp -rf $$file $(ROOTFS_DIR)/rootfs.tmp/etc/$$file; \
|
|
elif [ -d $$file ]; then \
|
|
mkdir -p $(ROOTFS_DIR)/rootfs.tmp/etc/$$file; \
|
|
else \
|
|
mkdir -p $(ROOTFS_DIR)/rootfs.tmp/etc/`dirname $$file`; \
|
|
cp -f $$file $(ROOTFS_DIR)/rootfs.tmp/etc/$$file; \
|
|
fi \
|
|
done
|
|
if [ "$(NVT_ROOTFS_RW_PART_EN)" != "NVT_ROOTFS_RW_PART_EN_OFF" ] || [ -z "$(NVT_ROOTFS_RW_PART_EN)" ]; then \
|
|
if [[ ( "$(NVT_ROOTFS_TYPE)" == "NVT_ROOTFS_TYPE_RAMDISK" && "$(EMBMEM)" != "EMBMEM_NONE" ) \
|
|
|| ( "$(EMBMEM)" != "EMBMEM_SPI_NOR" && "$(EMBMEM)" != "EMBMEM_NONE" && "$(NVT_ROOTFS_TYPE)" == "NVT_ROOTFS_TYPE_SQUASH" ) \
|
|
|| ( "$(NVT_ROOTFS_RW_PART_EN)" == "NVT_ROOTFS_RW_PART_EN_ON" ) ]]; then \
|
|
rm -rf $(ROOTFS_DIR)/rootfs.tmp/lib/modules/*; \
|
|
find $(ROOTFS_DIR)/rootfs.tmp/usr/bin/ -type f -exec rm {} \;; \
|
|
find $(ROOTFS_DIR)/rootfs.tmp/usr/lib/ -type f -exec rm {} \;; \
|
|
fi; \
|
|
fi
|
|
endef
|
|
|
|
define gen_selected_rootfs_ro
|
|
echo -e "\e[1;32m$(NVT_ROOTFS_TYPE).....\e[0m"
|
|
if [ "$(NVT_ROOTFS_TYPE)" == "NVT_ROOTFS_TYPE_NAND_UBI" ]; then \
|
|
./verify_leb.py -f $(dir $(NVT_PRJCFG_MODEL_CFG))$(DTBNAME) -l $(PARTITION_LABEL_UBIFS) -b $(ROOTFS_UBI_MAX_LEB_COUNT) && \
|
|
if [ $$? -ne 0 ]; then \
|
|
exit 1; \
|
|
fi; \
|
|
cd $(ROOTFS_DIR); mkfs.ubifs --squash-uids -x $(ROOTFS_UBI_COMPRESS_MODE) -m $(ROOTFS_UBI_PAGE_SIZE) -e $(ROOTFS_UBI_ERASE_BLK_SIZE) -c $(ROOTFS_UBI_MAX_LEB_COUNT) -o bin/$(IMGNAME_UBIFS).raw -r rootfs.tmp; \
|
|
$(call gen_rootfs_ubinize_cfg_param,bin/$(IMGNAME_UBIFS).raw,bin/ubinize.cfg,$$(($(ROOTFS_UBI_MAX_LEB_COUNT) * $(ROOTFS_UBI_ERASE_BLK_SIZE)))) \
|
|
ubinize -m $(ROOTFS_UBI_PAGE_SIZE) -p $(ROOTFS_UBI_BLK_SIZE) -s $(ROOTFS_UBI_PAGE_SIZE) -o bin/$(IMGNAME_UBIFS).ubi.raw bin/ubinize.cfg; \
|
|
$(BUILD_DIR)/nvt-tools/nvt-ld-op --packsum-src=bin/$(IMGNAME_UBIFS).ubi.raw --packsum-dst=bin/$(IMGNAME_UBIFS) --packsum-type=0x9; \
|
|
elif [ "$(NVT_ROOTFS_TYPE)" == "NVT_ROOTFS_TYPE_SQUASH" ] && [ "$(EMBMEM)" == "EMBMEM_SPI_NAND" ]; then \
|
|
cd $(ROOTFS_DIR); mksquashfs rootfs.tmp bin/$(IMGNAME_SQUASH_UBI).raw -comp $(ROOTFS_SQ_COMPRESS_MODE) -b $(ROOTFS_SQ_BLK_SIZE) -root-owned; \
|
|
$(call gen_rootfs_ubinize_cfg_param,bin/$(IMGNAME_SQUASH_UBI).raw,bin/ubinize.cfg,$$(($(ROOTFS_UBI_MAX_LEB_COUNT) * $(ROOTFS_UBI_ERASE_BLK_SIZE))))\
|
|
ubinize -m $(ROOTFS_UBI_PAGE_SIZE) -p $(ROOTFS_UBI_BLK_SIZE) -s $(ROOTFS_UBI_PAGE_SIZE) -o bin/$(IMGNAME_SQUASH_UBI).ubi.raw bin/ubinize.cfg; \
|
|
$(BUILD_DIR)/nvt-tools/nvt-ld-op --packsum-src=bin/$(IMGNAME_SQUASH_UBI).ubi.raw --packsum-dst=bin/$(IMGNAME_SQUASH_UBI) --packsum-type=0x9; \
|
|
elif [ "$(NVT_ROOTFS_TYPE)" == "NVT_ROOTFS_TYPE_SQUASH" ]; then \
|
|
cd $(ROOTFS_DIR); mksquashfs rootfs.tmp bin/$(IMGNAME_SQUASHFS).raw -comp $(ROOTFS_SQ_COMPRESS_MODE) -b $(ROOTFS_SQ_BLK_SIZE) -root-owned; \
|
|
$(BUILD_DIR)/nvt-tools/nvt-ld-op --packsum-src=bin/$(IMGNAME_SQUASHFS).raw --packsum-dst=bin/$(IMGNAME_SQUASHFS) --packsum-type=0x9; \
|
|
elif [ "$(NVT_ROOTFS_TYPE)" == "NVT_ROOTFS_TYPE_NAND_JFFS2" ]; then \
|
|
cd $(ROOTFS_DIR); mkfs.jffs2 -n -s $(ROOTFS_JFFS2_PAGE_SIZE) -e $(ROOTFS_JFFS2_BLK_SIZE) -r rootfs.tmp -U -X $(ROOTFS_JFFS2_COMPRESS_MODE) -p $(ROOTFS_JFFS2_SIZE) -o bin/$(IMGNAME_JFFS2).raw; \
|
|
$(BUILD_DIR)/nvt-tools/nvt-ld-op --packsum-src=bin/$(IMGNAME_JFFS2).raw --packsum-dst=bin/$(IMGNAME_JFFS2) --packsum-type=0x9; \
|
|
elif [ "$(NVT_ROOTFS_TYPE)" == "NVT_ROOTFS_TYPE_NOR_JFFS2" ]; then \
|
|
cd $(ROOTFS_DIR); mkfs.jffs2 -n -s $(ROOTFS_JFFS2_PAGE_SIZE) -e $(ROOTFS_JFFS2_BLK_SIZE) -r rootfs.tmp -U -X $(ROOTFS_JFFS2_COMPRESS_MODE) -o bin/$(IMGNAME_JFFS2).raw; \
|
|
$(BUILD_DIR)/nvt-tools/nvt-ld-op --packsum-src=bin/$(IMGNAME_JFFS2).raw --packsum-dst=bin/$(IMGNAME_JFFS2) --packsum-type=0x9; \
|
|
elif [ "$(NVT_ROOTFS_TYPE)" == "NVT_ROOTFS_TYPE_EXT4" ]; then \
|
|
cd $(ROOTFS_DIR); make_ext4fs -s -l $(ROOTFS_EXT4_SIZE) bin/$(IMGNAME_EXT4).raw rootfs.tmp; \
|
|
$(BUILD_DIR)/nvt-tools/nvt-ld-op --packsum-src=bin/$(IMGNAME_EXT4).raw --packsum-dst=bin/$(IMGNAME_EXT4) --packsum-type=0x9; \
|
|
else \
|
|
cd $(ROOTFS_DIR)/rootfs.tmp; find . | cpio -o -H newc > $(ROOTFS_DIR)/bin/initramfs.cpio; \
|
|
if [ "$(NVT_LINUX_COMPRESS)" == "NVT_LINUX_COMPRESS_GZ" ] || [ "$(NVT_LINUX_COMPRESS)" == "NVT_LINUX_COMPRESS_NONE" ]; then \
|
|
$(BUILD_DIR)/nvt-tools/bfc c gz $(ROOTFS_DIR)/bin/initramfs.cpio $(ROOTFS_DIR)/bin/$(IMGNAME_RAMDISK).raw 0 0 -align; \
|
|
else \
|
|
if [ ! -x $( command -v lz4) ]; then \
|
|
echo 'Error: lz4 is not installed.'; \
|
|
exit 1; \
|
|
fi; \
|
|
lz4 -l $(ROOTFS_DIR)/bin/initramfs.cpio $(ROOTFS_DIR)/bin/initramfs.cpio.lz4; \
|
|
$(ROOTFS_DIR)/tools/mkimage -A arm -T ramdisk -C none -n 'NVT initramfs' -d $(ROOTFS_DIR)/bin/initramfs.cpio.lz4 $(ROOTFS_DIR)/bin/$(IMGNAME_RAMDISK).raw; \
|
|
fi; \
|
|
$(BUILD_DIR)/nvt-tools/nvt-ld-op --packsum-src=$(ROOTFS_DIR)/bin/$(IMGNAME_RAMDISK).raw --packsum-dst=$(ROOTFS_DIR)/bin/$(IMGNAME_RAMDISK) --packsum-type=0x9; \
|
|
fi
|
|
@# tar.bz2 generate
|
|
rm -rf $(ROOTFS_DIR)/bin/$(IMGNAME_TARBZ2); cd $(ROOTFS_DIR)/rootfs.tmp; tar -jcf $(ROOTFS_DIR)/bin/$(IMGNAME_TARBZ2) .
|
|
endef
|
|
|
|
define rm_rootfs_tmp_dir
|
|
rm -rf $(ROOTFS_DIR)/rootfs.tmp
|
|
endef
|
|
|
|
define gen_selected_rootfs_rw
|
|
if [ "$(NVT_ROOTFS_TYPE)" == "NVT_ROOTFS_TYPE_NAND_UBI" ]; then \
|
|
./verify_leb.py -f $(dir $(NVT_PRJCFG_MODEL_CFG))$(DTBNAME) -l $(PARTITION_LABEL_UBIFS_RW) -b $(ROOTFS_UBI_RW_MAX_LEB_COUNT) && \
|
|
if [ $$? -ne 0 ]; then \
|
|
exit 1; \
|
|
fi; \
|
|
cd $(ROOTFS_DIR); mkfs.ubifs --squash-uids -x $(ROOTFS_UBI_COMPRESS_MODE) -m $(ROOTFS_UBI_PAGE_SIZE) -e $(ROOTFS_UBI_ERASE_BLK_SIZE) -c $(ROOTFS_UBI_RW_MAX_LEB_COUNT) -o bin/$(IMGNAME_UBIFS_RW).raw -r rootfs.tmp; \
|
|
$(call gen_rootfs_ubinize_cfg_param,bin/$(IMGNAME_UBIFS_RW).raw,bin/ubinize_rw.cfg,$$(($(ROOTFS_UBI_RW_MAX_LEB_COUNT) * $(ROOTFS_UBI_ERASE_BLK_SIZE)))) \
|
|
ubinize -m $(ROOTFS_UBI_PAGE_SIZE) -p $(ROOTFS_UBI_BLK_SIZE) -s $(ROOTFS_UBI_PAGE_SIZE) -o bin/$(IMGNAME_UBIFS_RW).ubi.raw bin/ubinize_rw.cfg; \
|
|
$(BUILD_DIR)/nvt-tools/nvt-ld-op --packsum-src=bin/$(IMGNAME_UBIFS_RW).ubi.raw --packsum-dst=bin/$(IMGNAME_UBIFS_RW) --packsum-type=0x9; \
|
|
elif [ "$(NVT_ROOTFS_TYPE)" == "NVT_ROOTFS_TYPE_NAND_JFFS2" ]; then \
|
|
cd $(ROOTFS_DIR); mkfs.jffs2 -n -s $(ROOTFS_JFFS2_PAGE_SIZE) -e $(ROOTFS_JFFS2_BLK_SIZE) -r rootfs.tmp -U -X $(ROOTFS_JFFS2_COMPRESS_MODE) -p $(ROOTFS_JFFS2_RW_SIZE) -o bin/$(IMGNAME_JFFS2_RW).raw; \
|
|
$(BUILD_DIR)/nvt-tools/nvt-ld-op --packsum-src=bin/$(IMGNAME_JFFS2_RW).raw --packsum-dst=bin/$(IMGNAME_JFFS2_RW) --packsum-type=0x9; \
|
|
elif [ "$(NVT_ROOTFS_TYPE)" == "NVT_ROOTFS_TYPE_EXT4" ]; then \
|
|
cd $(ROOTFS_DIR); $(BUILD_DIR)/gen_vfat_image.sh bin/$(IMGNAME_FAT_CACHE).raw tools/rootfs_recovery `expr $(ROOTFS_FAT_CACHE_SIZE) / 1024 / 1024`; \
|
|
$(BUILD_DIR)/nvt-tools/reduce_fat_bin.py bin/$(IMGNAME_FAT_CACHE).raw bin/$(IMGNAME_FAT_CACHE).raw.sparse; \
|
|
$(BUILD_DIR)/nvt-tools/nvt-ld-op --packsum-src=bin/$(IMGNAME_FAT_CACHE).raw.sparse --packsum-dst=bin/$(IMGNAME_FAT_CACHE) --packsum-type=0x9; \
|
|
elif [ "$(NVT_ROOTFS_TYPE)" == "NVT_ROOTFS_TYPE_SQUASH" ] && [ "$(EMBMEM)" != "EMBMEM_NONE" ]; then \
|
|
if [ "$(EMBMEM)" == "EMBMEM_EMMC" ]; then \
|
|
cd $(ROOTFS_DIR); make_ext4fs -s -l $(ROOTFS_EXT4_SIZE) bin/$(IMGNAME_EXT4_RW).raw rootfs.tmp; \
|
|
$(BUILD_DIR)/nvt-tools/nvt-ld-op --packsum-src=bin/$(IMGNAME_EXT4_RW).raw --packsum-dst=bin/$(IMGNAME_EXT4_RW) --packsum-type=0x9; \
|
|
elif [ "$(EMBMEM)" == "EMBMEM_SPI_NAND" ]; then \
|
|
./verify_leb.py -f $(dir $(NVT_PRJCFG_MODEL_CFG))$(DTBNAME) -l $(PARTITION_LABEL_UBIFS_RW) -b $(ROOTFS_UBI_RW_MAX_LEB_COUNT) && \
|
|
if [ $$? -ne 0 ]; then \
|
|
exit 1; \
|
|
fi; \
|
|
cd $(ROOTFS_DIR); mkfs.ubifs --squash-uids -x $(ROOTFS_UBI_COMPRESS_MODE) -m $(ROOTFS_UBI_PAGE_SIZE) -e $(ROOTFS_UBI_ERASE_BLK_SIZE) -c $(ROOTFS_UBI_RW_MAX_LEB_COUNT) -o bin/$(IMGNAME_UBIFS_RW).raw -r rootfs.tmp; \
|
|
$(call gen_rootfs_ubinize_cfg_param,bin/$(IMGNAME_UBIFS_RW).raw,bin/ubinize_rw.cfg,$$(($(ROOTFS_UBI_RW_MAX_LEB_COUNT) * $(ROOTFS_UBI_ERASE_BLK_SIZE)))) \
|
|
ubinize -m $(ROOTFS_UBI_PAGE_SIZE) -p $(ROOTFS_UBI_BLK_SIZE) -s $(ROOTFS_UBI_PAGE_SIZE) -o bin/$(IMGNAME_UBIFS_RW).ubi.raw bin/ubinize_rw.cfg; \
|
|
$(BUILD_DIR)/nvt-tools/nvt-ld-op --packsum-src=bin/$(IMGNAME_UBIFS_RW).ubi.raw --packsum-dst=bin/$(IMGNAME_UBIFS_RW) --packsum-type=0x9; \
|
|
fi; \
|
|
elif [ "$(NVT_ROOTFS_TYPE)" == "NVT_ROOTFS_TYPE_RAMDISK" ] && [ "$(EMBMEM)" != "EMBMEM_NONE" ]; then \
|
|
if [ "$(EMBMEM)" == "EMBMEM_SPI_NAND" ]; then \
|
|
./verify_leb.py -f $(dir $(NVT_PRJCFG_MODEL_CFG))$(DTBNAME) -l $(PARTITION_LABEL_UBIFS_RW) -b $(ROOTFS_UBI_RW_MAX_LEB_COUNT); \
|
|
if [ $$? -ne 0 ]; then \
|
|
exit 1; \
|
|
fi; \
|
|
cd $(ROOTFS_DIR); mkfs.ubifs --squash-uids -x $(ROOTFS_UBI_COMPRESS_MODE) -m $(ROOTFS_UBI_PAGE_SIZE) -e $(ROOTFS_UBI_ERASE_BLK_SIZE) -c $(ROOTFS_UBI_RW_MAX_LEB_COUNT) -o bin/$(IMGNAME_UBIFS_RW).raw -r rootfs.tmp; \
|
|
$(call gen_rootfs_ubinize_cfg_param,bin/$(IMGNAME_UBIFS_RW).raw,bin/ubinize_rw.cfg,$$(($(ROOTFS_UBI_RW_MAX_LEB_COUNT) * $(ROOTFS_UBI_ERASE_BLK_SIZE)))) \
|
|
ubinize -m $(ROOTFS_UBI_PAGE_SIZE) -p $(ROOTFS_UBI_BLK_SIZE) -s $(ROOTFS_UBI_PAGE_SIZE) -o bin/$(IMGNAME_UBIFS_RW).ubi.raw bin/ubinize_rw.cfg; \
|
|
$(BUILD_DIR)/nvt-tools/nvt-ld-op --packsum-src=bin/$(IMGNAME_UBIFS_RW).ubi.raw --packsum-dst=bin/$(IMGNAME_UBIFS_RW) --packsum-type=0x9; \
|
|
elif [ "$(EMBMEM)" == "EMBMEM_EMMC" ]; then \
|
|
cd $(ROOTFS_DIR); make_ext4fs -s -l $(ROOTFS_EXT4_SIZE) bin/$(IMGNAME_EXT4_RW).raw rootfs.tmp; \
|
|
$(BUILD_DIR)/nvt-tools/nvt-ld-op --packsum-src=bin/$(IMGNAME_EXT4_RW).raw --packsum-dst=bin/$(IMGNAME_EXT4_RW) --packsum-type=0x9; \
|
|
else \
|
|
if [ -f $(IMGNAME_SQUASHFS1_SORT) ]; then \
|
|
cd $(ROOTFS_DIR); mksquashfs rootfs.tmp bin/$(IMGNAME_SQUASHFS1).raw -comp $(ROOTFS_SQ_COMPRESS_MODE) -b $(ROOTFS_SQ_BLK_SIZE) -root-owned -sort $(IMGNAME_SQUASHFS1_SORT); \
|
|
else \
|
|
cd $(ROOTFS_DIR); mksquashfs rootfs.tmp bin/$(IMGNAME_SQUASHFS1).raw -comp $(ROOTFS_SQ_COMPRESS_MODE) -b $(ROOTFS_SQ_BLK_SIZE) -root-owned; \
|
|
fi; \
|
|
$(BUILD_DIR)/nvt-tools/nvt-ld-op --packsum-src=bin/$(IMGNAME_SQUASHFS1).raw --packsum-dst=bin/$(IMGNAME_SQUASHFS1) --packsum-type=0x9; \
|
|
fi; \
|
|
else \
|
|
continue; \
|
|
fi
|
|
endef
|
|
|
|
define rm_rootfs_tmp_files
|
|
rm -rf $(ROOTFS_DIR)/rootfs.tmp/*;
|
|
if [[ ( "$(NVT_ROOTFS_TYPE)" == "NVT_ROOTFS_TYPE_RAMDISK" && "$(EMBMEM)" != "EMBMEM_NONE" ) \
|
|
|| ( "$(EMBMEM)" == "EMBMEM_SPI_NAND" && "$(NVT_ROOTFS_TYPE)" == "NVT_ROOTFS_TYPE_SQUASH" ) \
|
|
|| ( "$(EMBMEM)" == "EMBMEM_EMMC" && "$(NVT_ROOTFS_TYPE)" == "NVT_ROOTFS_TYPE_SQUASH" ) ]]; then \
|
|
cp -r $(ROOTFS_DIR)/rootfs/lib/modules/* $(ROOTFS_DIR)/rootfs.tmp; \
|
|
mkdir -p $(ROOTFS_DIR)/rootfs.tmp/usr; \
|
|
cp -arf $(ROOTFS_DIR)/rootfs/usr/bin $(ROOTFS_DIR)/rootfs.tmp/usr; \
|
|
cp -arf $(ROOTFS_DIR)/rootfs/usr/lib $(ROOTFS_DIR)/rootfs.tmp/usr; \
|
|
fi
|
|
endef
|
|
|
|
define strip_binary_files
|
|
if [ "${STRIPDIRS}" != "" ]; then \
|
|
STRIPFILES=`file ${STRIPDIRS} 2> /dev/null | grep "not stripped" | awk 'BEGIN {FS=":"}; {print $$1}'`; \
|
|
for target_file in $$STRIPFILES; do \
|
|
chmod 755 $$target_file; \
|
|
${STRIP} $$target_file; \
|
|
done; \
|
|
fi
|
|
if [ "${STRIPLIBS}" != "" ]; then \
|
|
STRIPFILES=`for lib in ${STRIPLIBS}; do \
|
|
find $$lib -type f -exec file {} \; 2> /dev/null | grep "not stripped" | awk 'BEGIN {FS=":"}; {print $$1}'; \
|
|
done;`; \
|
|
for target_file in $$STRIPFILES; do \
|
|
chmod 755 $$target_file; \
|
|
${STRIP} -g --strip-unneeded $$target_file; \
|
|
done; \
|
|
fi
|
|
endef
|
|
|
|
define install_rootfs
|
|
echo -e "\e[1;44mRootfs are installing.....\e[0m"
|
|
cd $(ROOTFS_DIR)/bin/; cp rootfs*.bin $(LINUX_BUILD_TOP)/output/; \
|
|
RAW_IMAGE_LIST=`ls *.raw 2>/dev/null`; \
|
|
for file in $$RAW_IMAGE_LIST; do \
|
|
mkdir -p $(LINUX_BUILD_TOP)/output/raw; \
|
|
if [ -f $$file ]; then cp $$file $(LINUX_BUILD_TOP)/output/raw; fi; \
|
|
done;
|
|
endef
|
|
|
|
define gen_prjcfg_profile_init
|
|
echo -e "\e[1;44m To do rootfs/etc/profile_prjcfg is generating .....\e[0m"
|
|
if [ -z $(LINUX_BUILD_TOP) ]; then \
|
|
echo -e "\r\nERROR :Please source build/envsetup.sh in NA51000_Linux firstly to have auto copyso function\r\n"; \
|
|
exit 1; \
|
|
fi
|
|
echo "export MODEL=`echo ${NVT_PRJCFG_MODEL_CFG} | awk -F'ModelConfig_' '{print $$NF}' | awk -F'.txt' '{print $$1}'`" > $(MODELCFG_PROFILE_PATH);
|
|
grep '^[^#][[:alnum:]_]*[[:blank:]]*=[[:blank:]]*[[:alnum:][:blank:]_]*' ${NVT_PRJCFG_MODEL_CFG} | sed 's/\([[:alnum:]_]*\)[[:blank:]]*=[[:blank:]]*\([[:alnum:][:blank:]_\.$$\(\)\-]*\)/export \1="\2"/g' >> $(MODELCFG_PROFILE_PATH);
|
|
sed -i '/BIN_NAME/d' $(MODELCFG_PROFILE_PATH);
|
|
# echo "export LD_PRELOAD='libnvtlibc.so'" >> $(MODELCFG_PROFILE_PATH);
|
|
endef
|
|
|
|
define clean_specific_files_list
|
|
if [ -z $(LINUX_BUILD_TOP) ]; then \
|
|
echo -e "\r\nERROR :Please source build/envsetup.sh in NA51000_Linux firstly to have auto copyso function\r\n"; \
|
|
exit 1; \
|
|
fi
|
|
cd ${ROOTFS_DIR}; \
|
|
for n in $(CLEAR_FILE_LIST); do \
|
|
rm -rf $$n; \
|
|
done;
|
|
endef
|
|
|
|
define clean_rootfs
|
|
rm -rf ${ROOTFS_DIR}/bin
|
|
rm -rf ${ROOTFS_DIR}/rootfs/bin
|
|
rm -rf ${ROOTFS_DIR}/rootfs/sbin
|
|
rm -rf ${ROOTFS_DIR}/rootfs/lib/*
|
|
rm -rf ${ROOTFS_DIR}/rootfs/usr/bin
|
|
rm -rf ${ROOTFS_DIR}/rootfs/usr/local
|
|
rm -rf ${ROOTFS_DIR}/rootfs/usr/sbin
|
|
rm -rf ${ROOTFS_DIR}/rootfs/usr/lib/*
|
|
rm -rf ${ROOTFS_DIR}/rootfs/var/www/cgi-bin/*
|
|
rm -rf ${ROOTFS_DIR}/rootfs/etc
|
|
rm -rf ${ROOTFS_DIR}/rootfs/man
|
|
rm -rf ${ROOTFS_DIR}/rootfs/share
|
|
if [ -d $(LINUX_BUILD_TOP)/output ]; then cd $(LINUX_BUILD_TOP)/output; rm -rf $(IMGNAME_RAMDISK) $(IMGNAME_UBIFS) $(IMGNAME_EXT4_RW) $(IMGNAME_SQUASH_UBI) $(IMGNAME_TARBZ2); fi
|
|
endef
|
|
|
|
all:
|
|
@$(call gen_rootfs_init)
|
|
|
|
@$(call gen_rootfs_etc_link)
|
|
|
|
@$(call gen_prjcfg_profile_init)
|
|
|
|
@$(call strip_binary_files)
|
|
|
|
@$(call gen_rootfs_tmp)
|
|
|
|
@$(call gen_selected_rootfs_ro)
|
|
|
|
@$(call rm_rootfs_tmp_files)
|
|
ifneq ($(NVT_ROOTFS_RW_PART_EN), NVT_ROOTFS_RW_PART_EN_OFF)
|
|
@$(call gen_selected_rootfs_rw)
|
|
endif
|
|
@$(call rm_rootfs_tmp_dir)
|
|
|
|
gen_etc:
|
|
@$(call gen_rootfs_etc_link)
|
|
|
|
install:
|
|
@$(call install_rootfs)
|
|
|
|
clean:
|
|
@$(call clean_specific_files_list)
|
|
@$(call clean_rootfs)
|
|
@$(call rm_rootfs_tmp)
|