330 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			Makefile
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			330 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;
 | 
						|
	mkdir $(ROOTFS_DIR)/rootfs.tmp; cd $(ROOTFS_DIR)/rootfs; cp -arf `ls | grep -v etc` $(ROOTFS_DIR)/rootfs.tmp;
 | 
						|
	@# 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)
 |