1
1
Files
zyxel-vmg8825_b50b-cfw/target/linux/brcm963xx/image/Makefile
T
2026-04-17 18:33:03 +02:00

595 lines
32 KiB
Makefile
Executable File

#
# Copyright (C) 2006-2011 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/image.mk
include $(INCLUDE_DIR)/zyxel-zy_feature_bits.mk
CONFIG_BRCM_CFE_BOOT_FROM_NAND=y
ifeq ($(CONFIG_BRCM_CFE_BOOT_FROM_NAND),y)
-include $(BCM_BUILD_DIR)/make.common
endif
SQUASHFS_BLOCKSIZE = 64k
SQUASHFSOPT = -b 64k
####export "ARCH_ENDIAN" for BCM SDK 416L01RC1 hosttool "bcmImageMaker" compatible with old version tool##############
ifeq ($(CONFIG_BIG_ENDIAN),y)
export ARCH_ENDIAN=big
SUMTOOLOPT=-b
TOOL_ENDIAN=
else
export ARCH_ENDIAN=little
SUMTOOLOPT=-l
TOOL_ENDIAN=-e little
endif
ifeq ($(CONFIG_FILL_IN_PARTITION_INFO_INTO_NVRAM),y)
export FLASH_TOTAL_SIZE=$(CONFIG_TARGET_NAND_FLASH_TOTAL_SIZE)
else
export FLASH_TOTAL_SIZE=0
endif
FLASHBLK_SIZE=$($(shell echo CONFIG_BRCMSDK$(CONFIG_BRCM_SDK_VERSION)_BRCM_FLASHBLK_SIZE))
JFFS2_BLOCKSIZE:=$(FLASHBLK_SIZE)k
SUMTOOL_BLOCKSIZE:=$(FLASHBLK_SIZE)KiB
UBIFS_BLOCKSIZE:=$(FLASHBLK_SIZE)k
UBIFS_MAX_LEB_COUNT:=688
#depend on blocksize to set page size
ifeq ("$(FLASHBLK_SIZE)","128")
UBIFS_PAGESIZE=2048
endif
ifeq ("$(FLASHBLK_SIZE)","256")
UBIFS_PAGESIZE=4096
endif
ifeq ("$(FLASHBLK_SIZE)","512")
UBIFS_PAGESIZE=4096
endif
ifeq ("$(FLASHBLK_SIZE)","1024")
UBIFS_PAGESIZE=8192
endif
#caclulate LEB eraseblock size, transfer block to bytes - 2 page header(EC & VID)
UBIFS_LEB_BLOCKSIZE_BYTES=`expr $(FLASHBLK_SIZE) \* 1024 - 2 \* $(UBIFS_PAGESIZE)`
# Get bootloader image size in kB.
ifneq ($(call qstrip,$($(shell echo CONFIG_BRCMSDK$(CONFIG_BRCM_SDK_VERSION)_BTRM_BOOT_ONLY))),)
# Broadcom new mechanism, bootloader(bootrom+cferom) will occupy more than one block
BOOTLOADER_IMAGE_SIZE=$($(shell echo CONFIG_BRCMSDK$(CONFIG_BRCM_SDK_VERSION)_BTRM_NAND_BOOT_PARTITION_SIZE))
UNSECUREHDR="--unsecurehdr"
else
# default bootloader will occupy only one block.
BOOTLOADER_IMAGE_SIZE=$(FLASHBLK_SIZE)
UNSECUREHDR=""
endif
DDRTYPE=""
#CONFIG_BRCMSDK502L06_BRCM_CHIP="63158"
ifneq ($(findstring _$(call qstrip,$($(shell echo CONFIG_BRCMSDK$(CONFIG_BRCM_SDK_VERSION)_BRCM_CHIP)))_,_63158_47622_),)
# --ddrtype DDR3 --unsecurehdr ;
#CONFIG_BRCMSDK502L06_BUILD_CFE_DDR4
ifneq ($(call qstrip,$($(shell echo CONFIG_BRCMSDK$(CONFIG_BRCM_SDK_VERSION)_BUILD_CFE_DDR4))),)
DDRTYPE="--ddrtype DDR4 "
else
DDRTYPE="--ddrtype DDR3 "
endif
endif
# __zy_bsp__ >>>
ZYBSP_BCM_SDK_VER_CHK := $(findstring $(CONFIG_BRCM_SDK_VERSION),"502L04" "502L05" "502L06" "502L07")
ifneq ($(ZYBSP_BCM_SDK_VER_CHK),)
ZYBSP_BCM_SDK_VER=502L0X
CONFIG_BRCM963xx_SDK_VER_502L0X=y
endif
# __zy_bsp__ <<<
ifneq ($(call qstrip,$(CONFIG_BRCM963xx_SDK_VER_416L04) $(CONFIG_BRCM963xx_SDK_VER_416L05) $(CONFIG_BRCM963xx_SDK_VER_502L0X)),)
ifneq ($(call qstrip,$($(shell echo CONFIG_BRCMSDK$(CONFIG_BRCM_SDK_VERSION)_BUILD_NOR_KERNEL_LZ4))),)
KERNEL_COMPRESSION=lz4
KERNEL_FILE_TYPE=lz4
else
KERNEL_COMPRESSION=lzma
KERNEL_FILE_TYPE=lz
endif
else
KERNEL_COMPRESSION=lzma
KERNEL_FILE_TYPE=lz
endif
#HOSTTOOLS_DIR=$(BCM_BUILD_DIR)/hostTools
HOSTTOOLS_DIR=$(STAGING_DIR_HOST)/bin/$(shell echo $(CONFIG_BRCM_SDK_VERSION))
# Get MRD information, used for hosttool; do $(shell echo xxxx) twice because need to remove quotes
export BRCM_VOICE_BOARD_ID=$($(shell echo CONFIG_BRCMSDK$(CONFIG_BRCM_SDK_VERSION)_BRCM_VOICE_BOARD_ID))
export VENDORNAME=$(call qstrip,$(CONFIG_MRD_VENDOR_NAME))
export PRODUCTNAME=$(call qstrip,$(CONFIG_MRD_PRODUCT_NAME))
export SERIALNUMBER=$(call qstrip,$(CONFIG_MRD_SERIAL_NO))
export FIRMWARE_VERSION=$(call qstrip,$(CONFIG_ZYXEL_FIRMWARE_VERSION))
ifneq ($(CONFIG_ZYXEL_FIRMWARE_VERSION_EXT),"")
export FIRMWARE_VERSION_EX=$(call qstrip,$(CONFIG_ZYXEL_FIRMWARE_VERSION_EXT))
else
export FIRMWARE_VERSION_EX=$(call qstrip,$(CONFIG_ZYXEL_FIRMWARE_VERSION))
endif
export ZYXEL_MODEL_ID=$(call qstrip,$(CONFIG_MRD_MODEL_ID))
export MAINFEATUREBIT=$(call qstrip,$(CONFIG_MRD_MAIN_FEATURE_BIT))
export DEBUGBIT=$(call qstrip,$(CONFIG_MRD_DEBUG_BIT))
export COUNTRYCODE=$(call qstrip,$(CONFIG_MRD_COUNTRY_CODE))
export NVRAM_MEMORY_CONFIG=$(call qstrip,$(CONFIG_BCM63138_NVRAM_MEMORY_CONFIG))
export NVRAM_MC_MEMORY_ALLOCATION=$(call qstrip,$(CONFIG_BCM63138_NVRAM_MC_MEMORY_ALLOCATION))
export NVRAM_TM_MEMORY_ALLOCATION=$(call qstrip,$(CONFIG_BCM63138_NVRAM_TM_MEMORY_ALLOCATION))
export NVRAM_DHD0_MEMORY_ALLOCATION=$(call qstrip,$(CONFIG_BCM63138_NVRAM_DHD0_MEMORY_ALLOCATION))
export NVRAM_DHD1_MEMORY_ALLOCATION=$(call qstrip,$(CONFIG_BCM63138_NVRAM_DHD1_MEMORY_ALLOCATION))
export NVRAM_DHD2_MEMORY_ALLOCATION=$(call qstrip,$(CONFIG_BCM63138_NVRAM_DHD2_MEMORY_ALLOCATION))
export BRCM_MISC1_PARTITION_SIZE=$($(shell echo CONFIG_BRCMSDK$(CONFIG_BRCM_SDK_VERSION)_BRCM_MISC1_PARTITION_SIZE))
export BRCM_MISC2_PARTITION_SIZE=$($(shell echo CONFIG_BRCMSDK$(CONFIG_BRCM_SDK_VERSION)_BRCM_MISC2_PARTITION_SIZE))
export BRCM_MISC3_PARTITION_SIZE=$($(shell echo CONFIG_BRCMSDK$(CONFIG_BRCM_SDK_VERSION)_BRCM_MISC3_PARTITION_SIZE))
export BRCM_MISC4_PARTITION_SIZE=$($(shell echo CONFIG_BRCMSDK$(CONFIG_BRCM_SDK_VERSION)_BRCM_MISC4_PARTITION_SIZE))
export BRCM_GPON_SERIAL_NUMBER=$($(shell echo CONFIG_BRCMSDK$(CONFIG_BRCM_SDK_VERSION)_BRCM_GPON_SERIAL_NUMBER))
export BRCM_GPON_PASSWORD=$($(shell echo CONFIG_BRCMSDK$(CONFIG_BRCM_SDK_VERSION)_BRCM_GPON_PASSWORD))
# bcmImageMaker need this parameter
export BIN_DIR
# __zy_bsp__ >>>
# Due to BRCM_AUXFS_PERCENT will be filter out by non-NOR flash (BRCM_FLASH_BUILD_NOR) at 502L05,
# we export it here for NAND flash.
ifeq ("$($(shell echo CONFIG_BRCMSDK$(CONFIG_BRCM_SDK_VERSION)_BRCM_AUXFS_PERCENT))","")
BRCM_AUXFS_PERCENT=0
endif
# __zy_bsp__ <<<
# Get common options
ZYXEL_RAS_FORMAT=$($(shell echo CONFIG_BRCMSDK${CONFIG_BRCM_SDK_VERSION}_ZYXEL_RSA_FORMAT))
# For zytool generate multi zld.bin
ZYXEL_ZYTOOL_SCRIPT_DIR=$(TOPDIR)/target/linux/brcm963xx/$(SUBTARGET)
# For ubifs bootfs
TARGET_UBI_BOOTFS=$(BUILD_DIR)/bootfs
define Image/Build/multi_zld
##doing zytool shell script
if [ -e $(ZYXEL_ZYTOOL_SCRIPT_DIR)/zytool_multi_zld.sh ]; then \
if [ -e $(HOSTTOOLS_DIR)/zytool ]; then \
$(ZYXEL_ZYTOOL_SCRIPT_DIR)/zytool_multi_zld.sh $(HOSTTOOLS_DIR) $(1) $(BRCM_CHIP) $(ARCH_ENDIAN); \
elif [ ! -e $(HOSTTOOLS_DIR)/zytool ]; then \
echo "Please clean and rebuild host tools !!"; \
exit -1; \
fi \
elif [ ! -e $(ZYXEL_ZYTOOL_SCRIPT_DIR)/zytool_multi_zld.sh ]; then \
echo; \
fi
endef
define Image/Build/merge_firmware
echo;echo "!!! Package firmware for release !!!";echo
mkdir -p $(BIN_DIR)/zyxel/
ifneq ($(call qstrip, $(CONFIG_BRCM963xx_SDK_VER_502L0X)), )
###create fcs image dir for pureUbi and JFFS2withUBI
mkdir -p $(BIN_DIR)/zyxel_pureUbi/
mkdir -p $(BIN_DIR)/zyxel_ubi/
endif
# [BuildMergeFirmware]Generate the tagged image with BCM proprietary tool "bcmImageMaker/bcmImageBuilder"
ifeq ($(ZYXEL_RAS_FORMAT), y)
##doing ZyXEL image formate
$(call Image/mkfs/jffs2/sub/original,$(JFFS2_BLOCKSIZE))
$(HOSTTOOLS_DIR)/scripts/bcmImageMaker --cferom $(BIN_DIR)/brcm-cfe/cfe$(BRCM_CHIP)rom.bin --blocksize $(shell expr 1024 \* $(FLASHBLK_SIZE)) --flashtotalsize $(FLASH_TOTAL_SIZE) --bootofs $(FLASH_BOOT_OFS) --bootsize $(shell expr 1024 \* $(FLASHBLK_SIZE)) --kernelimg $(KERNEL_BUILD_DIR)/vmlinux.lz --rootfs $(KERNEL_BUILD_DIR)/root.jffs2-$(JFFS2_BLOCKSIZE) --fake_rootfs $(KERNEL_BUILD_DIR)/fake_root.jffs2-$(JFFS2_BLOCKSIZE) --image $(BIN_DIR)/openwrt-nand-$(BOARDNAME)-jffs2-$(JFFS2_BLOCKSIZE)-cfe.bin --fsonly $(BIN_DIR)/openwrt-nand-$(BOARDNAME)-jffs2-$(JFFS2_BLOCKSIZE).bin $(call qstrip,$(DDRTYPE)) $(call qstrip,$(UNSECUREHDR))
ifneq ($(call qstrip, $(CONFIG_BRCM963xx_SDK_VER_502L0X)), )
###START pureUBI, JFFS2withUBI
$(call Image/mkfs/ubifs/sub/original,$(UBIFS_BLOCKSIZE))
#pureUBI
$(HOSTTOOLS_DIR)/scripts/bcmImageMaker --cferom $(BIN_DIR)/brcm-cfe/cfe$(BRCM_CHIP)rom.bin --blocksize $(shell expr 1024 \* $(FLASHBLK_SIZE)) --flashtotalsize $(FLASH_TOTAL_SIZE) --bootofs $(FLASH_BOOT_OFS) --bootsize $(shell expr 1024 \* $(FLASHBLK_SIZE)) --kernelimg $(KERNEL_BUILD_DIR)/vmlinux.lz --rootfs $(KERNEL_BUILD_DIR)/root.pureubi-$(UBIFS_BLOCKSIZE) --fake_rootfs $(KERNEL_BUILD_DIR)/fake_root.ubifs-$(UBIFS_BLOCKSIZE) --image $(BIN_DIR)/openwrt-nand-$(BOARDNAME)-pureubi-$(UBIFS_BLOCKSIZE)-cfe.bin --fsonly $(BIN_DIR)/openwrt-nand-$(BOARDNAME)-pureubi-$(UBIFS_BLOCKSIZE).bin --ubionlyimage $(call qstrip,$(DDRTYPE)) $(call qstrip,$(UNSECUREHDR))
#JFFS2 bootfs + UBI rootfs
$(HOSTTOOLS_DIR)/scripts/bcmImageMaker --cferom $(BIN_DIR)/brcm-cfe/cfe$(BRCM_CHIP)rom.bin --blocksize $(shell expr 1024 \* $(FLASHBLK_SIZE)) --flashtotalsize $(FLASH_TOTAL_SIZE) --bootofs $(FLASH_BOOT_OFS) --bootsize $(shell expr 1024 \* $(FLASHBLK_SIZE)) --kernelimg $(KERNEL_BUILD_DIR)/vmlinux.lz --ubifs --bootfs $(KERNEL_BUILD_DIR)/bootfs$(FLASHBLK_SIZE)kb.img --rootfs $(KERNEL_BUILD_DIR)/root.ubifs-$(UBIFS_BLOCKSIZE) --fake_rootfs $(KERNEL_BUILD_DIR)/fake_root.ubifs-$(UBIFS_BLOCKSIZE) --image $(BIN_DIR)/openwrt-nand-$(BOARDNAME)-ubifs-$(UBIFS_BLOCKSIZE)-cfe.bin --fsonly $(BIN_DIR)/openwrt-nand-$(BOARDNAME)-ubifs-$(UBIFS_BLOCKSIZE).bin $(call qstrip,$(DDRTYPE)) $(call qstrip,$(UNSECUREHDR))
###END pureUBI, JFFS2withUBI
endif
else
$(HOSTTOOLS_DIR)/scripts/bcmImageMaker --cferom $(BIN_DIR)/brcm-cfe/cfe$(BRCM_CHIP)rom.bin --blocksize $(shell expr 1024 \* $(FLASHBLK_SIZE)) --bootofs $(FLASH_BOOT_OFS) --bootsize $(shell expr 1024 \* $(FLASHBLK_SIZE)) --rootfs $(KERNEL_BUILD_DIR)/root.jffs2-$(JFFS2_BLOCKSIZE) --image $(BIN_DIR)/zyxel/openwrt-nand-$(BOARDNAME)-jffs2-$(JFFS2_BLOCKSIZE)-cfe.bin --fsonly $(BIN_DIR)/openwrt-nand-$(BOARDNAME)-jffs2-$(JFFS2_BLOCKSIZE).bin $(call qstrip,$(DDRTYPE)) $(call qstrip,$(UNSECUREHDR))
endif
cp $(BIN_DIR)/openwrt-nand-$(BOARDNAME)-jffs2-$(JFFS2_BLOCKSIZE).bin.w $(BIN_DIR)/zyxel/ras.bin
dd if=$(BIN_DIR)/openwrt-nand-$(BOARDNAME)-jffs2-$(JFFS2_BLOCKSIZE)-cfe.bin.w of=$(BIN_DIR)/zyxel/zld.bin bs=1k count=$(BOOTLOADER_IMAGE_SIZE)
ifneq ($(call qstrip, $(CONFIG_BRCM963xx_SDK_VER_502L0X)), )
### START pureUbi, JFFS2withUBI
cp $(BIN_DIR)/openwrt-nand-$(BOARDNAME)-pureubi-$(UBIFS_BLOCKSIZE).bin.w $(BIN_DIR)/zyxel_pureUbi/ras.bin
dd if=$(BIN_DIR)/openwrt-nand-$(BOARDNAME)-pureubi-$(UBIFS_BLOCKSIZE)-cfe.bin.w of=$(BIN_DIR)/zyxel_pureUbi/zld.bin bs=1k count=$(BOOTLOADER_IMAGE_SIZE)
cp $(BIN_DIR)/openwrt-nand-$(BOARDNAME)-ubifs-$(UBIFS_BLOCKSIZE).bin.w $(BIN_DIR)/zyxel_ubi/ras.bin
dd if=$(BIN_DIR)/openwrt-nand-$(BOARDNAME)-ubifs-$(UBIFS_BLOCKSIZE)-cfe.bin.w of=$(BIN_DIR)/zyxel_ubi/zld.bin bs=1k count=$(BOOTLOADER_IMAGE_SIZE)
###END pureUbi, JFFS2withUBI
endif
ifneq ($(call qstrip,$(CONFIG_BRCM963xx_SDK_VER_416L05) $(CONFIG_BRCM963xx_SDK_VER_502L0X)), )
$(call Image/Build/multi_zld, $(BIN_DIR)/zyxel)
endif
ifneq ($(call qstrip, $(CONFIG_BRCM963xx_SDK_VER_502L0X)), )
$(call Image/Build/multi_zld, $(BIN_DIR)/zyxel_pureUbi)
$(call Image/Build/multi_zld, $(BIN_DIR)/zyxel_ubi)
endif
endef
define Image/Build/CFE
$(if $(findstring jffs2, $(1)), \
mkdir -p $(BIN_DIR)/zyxel/;)
$(if $(findstring pureubi, $(1)), \
mkdir -p $(BIN_DIR)/zyxel_pureUbi/;)
$(if $(findstring ubifs, $(1)), \
mkdir -p $(BIN_DIR)/zyxel_ubi/;)
$(if $(findstring squbi, $(1)), \
mkdir -p $(BIN_DIR)/zyxel_squbi/;)
# [BuildCFE]Generate the tagged image with BCM proprietary tool "bcmImageMaker/bcmImageBuilder"
ifeq ($(CONFIG_BRCM_CFE_BOOT_FROM_NAND),y)
ifeq ($(ZYXEL_RAS_FORMAT), y)
##doing ZyXEL image formate(including CFE)
#pureUBI
$(if $(findstring pureubi, $(1)), \
$(HOSTTOOLS_DIR)/scripts/bcmImageMaker --cferom $(BIN_DIR)/brcm-cfe/cfe$(BRCM_CHIP)rom.bin --blocksize $(shell expr 1024 \* $(FLASHBLK_SIZE)) --flashtotalsize $(FLASH_TOTAL_SIZE) --bootofs $(FLASH_BOOT_OFS) --bootsize $(shell expr 1024 \* $(FLASHBLK_SIZE)) --kernelimg $(KERNEL_BUILD_DIR)/vmlinux.lz --rootfs $(KERNEL_BUILD_DIR)/root.$(1) --fake_rootfs $(KERNEL_BUILD_DIR)/fake_root.ubifs-$(UBIFS_BLOCKSIZE) --image $(BIN_DIR)/openwrt-nand-$(4)-$(1)-cfe.bin --fsonly $(BIN_DIR)/openwrt-nand-$(4)-$(1).bin --ubionlyimage $(call qstrip,$(DDRTYPE)) $(call qstrip,$(UNSECUREHDR));)
#squbi
$(if $(findstring squbi, $(1)), \
$(HOSTTOOLS_DIR)/scripts/bcmImageMaker --cferom $(BIN_DIR)/brcm-cfe/cfe$(BRCM_CHIP)rom.bin --blocksize $(shell expr 1024 \* $(FLASHBLK_SIZE)) --flashtotalsize $(FLASH_TOTAL_SIZE) --bootofs $(FLASH_BOOT_OFS) --bootsize $(shell expr 1024 \* $(FLASHBLK_SIZE)) --kernelimg $(KERNEL_BUILD_DIR)/vmlinux.lz --rootfs $(KERNEL_BUILD_DIR)/root.$(1) --fake_rootfs $(KERNEL_BUILD_DIR)/fake_root.squbi-$(UBIFS_BLOCKSIZE) --image $(BIN_DIR)/openwrt-nand-$(4)-$(1)-cfe.bin --fsonly $(BIN_DIR)/openwrt-nand-$(4)-$(1).bin --ubionlyimage $(call qstrip,$(DDRTYPE)) $(call qstrip,$(UNSECUREHDR));)
#JFFS2 bootfs + UBI rootfs
$(if $(findstring ubifs, $(1)), \
$(HOSTTOOLS_DIR)/scripts/bcmImageMaker --cferom $(BIN_DIR)/brcm-cfe/cfe$(BRCM_CHIP)rom.bin --blocksize $(shell expr 1024 \* $(FLASHBLK_SIZE)) --flashtotalsize $(FLASH_TOTAL_SIZE) --bootofs $(FLASH_BOOT_OFS) --bootsize $(shell expr 1024 \* $(FLASHBLK_SIZE)) --kernelimg $(KERNEL_BUILD_DIR)/vmlinux.lz --ubifs --bootfs $(KERNEL_BUILD_DIR)/bootfs$(FLASHBLK_SIZE)kb.img --rootfs $(KERNEL_BUILD_DIR)/root.$(1) --fake_rootfs $(KERNEL_BUILD_DIR)/fake_root.ubifs-$(UBIFS_BLOCKSIZE) --image $(BIN_DIR)/openwrt-nand-$(4)-$(1)-cfe.bin --fsonly $(BIN_DIR)/openwrt-nand-$(4)-$(1).bin $(call qstrip,$(DDRTYPE)) $(call qstrip,$(UNSECUREHDR));)
#JFFS2
$(if $(findstring jffs2, $(1)), \
$(HOSTTOOLS_DIR)/scripts/bcmImageMaker --cferom $(BIN_DIR)/brcm-cfe/cfe$(BRCM_CHIP)rom.bin --blocksize $(shell expr 1024 \* $(FLASHBLK_SIZE)) --flashtotalsize $(FLASH_TOTAL_SIZE) --bootofs $(FLASH_BOOT_OFS) --bootsize $(shell expr 1024 \* $(FLASHBLK_SIZE)) --kernelimg $(KERNEL_BUILD_DIR)/vmlinux.lz --rootfs $(KERNEL_BUILD_DIR)/root.$(1) --fake_rootfs $(KERNEL_BUILD_DIR)/fake_root.jffs2-$(JFFS2_BLOCKSIZE) --image $(BIN_DIR)/openwrt-nand-$(4)-$(1)-cfe.bin --fsonly $(BIN_DIR)/openwrt-nand-$(4)-$(1).bin $(call qstrip,$(DDRTYPE)) $(call qstrip,$(UNSECUREHDR));)
else
#####else($(ZYXEL_RAS_FORMAT), y)
$(HOSTTOOLS_DIR)/scripts/bcmImageMaker --cferom $(BIN_DIR)/brcm-cfe/cfe$(BRCM_CHIP)rom.bin --blocksize $(shell expr 1024 \* $(FLASHBLK_SIZE)) --bootofs $(FLASH_BOOT_OFS) --bootsize $(shell expr 1024 \* $(FLASHBLK_SIZE)) --rootfs $(KERNEL_BUILD_DIR)/root.$(1) --image $(BIN_DIR)/openwrt-nand-$(4)-$(1)-cfe.bin --fsonly $(BIN_DIR)/openwrt-nand-$(4)-$(1).bin $(call qstrip,$(DDRTYPE)) $(call qstrip,$(UNSECUREHDR))
#END ($(ZYXEL_RAS_FORMAT), y)
endif
$(if $(findstring jffs2, $(1)), \
cp $(BIN_DIR)/openwrt-nand-$(4)-$(1).bin.w $(BIN_DIR)/zyxel/ras.bin
dd if=$(BIN_DIR)/openwrt-nand-$(4)-$(1)-cfe.bin.w of=$(BIN_DIR)/zyxel/zld.bin bs=1k count=$(BOOTLOADER_IMAGE_SIZE)
$(call Image/Build/multi_zld, $(BIN_DIR)/zyxel);)
$(if $(findstring pureubi, $(1)), \
cp $(BIN_DIR)/openwrt-nand-$(4)-$(1).bin.w $(BIN_DIR)/zyxel_pureUbi/ras.bin
dd if=$(BIN_DIR)/openwrt-nand-$(4)-$(1)-cfe.bin.w of=$(BIN_DIR)/zyxel_pureUbi/zld.bin bs=1k count=$(BOOTLOADER_IMAGE_SIZE)
$(call Image/Build/multi_zld, $(BIN_DIR)/zyxel_pureUbi);)
$(if $(findstring squbi, $(1)), \
cp $(BIN_DIR)/openwrt-nand-$(4)-$(1).bin.w $(BIN_DIR)/zyxel_squbi/ras.bin
dd if=$(BIN_DIR)/openwrt-nand-$(4)-$(1)-cfe.bin.w of=$(BIN_DIR)/zyxel_squbi/zld.bin bs=1k count=$(BOOTLOADER_IMAGE_SIZE)
$(call Image/Build/multi_zld, $(BIN_DIR)/zyxel_pureUbi);)
$(if $(findstring ubifs, $(1)), \
cp $(BIN_DIR)/openwrt-nand-$(4)-$(1).bin.w $(BIN_DIR)/zyxel_ubi/ras.bin
dd if=$(BIN_DIR)/openwrt-nand-$(4)-$(1)-cfe.bin.w of=$(BIN_DIR)/zyxel_ubi/zld.bin bs=1k count=$(BOOTLOADER_IMAGE_SIZE)
$(call Image/Build/multi_zld, $(BIN_DIR)/zyxel_ubi);)
else
$(HOSTTOOLS_DIR)/bcmImageBuilder --output $(BIN_DIR)/openwrt-$(4)-$(1).bin --chip $(3) --board $(2) --blocksize $(SQUASHFS_BLOCKSIZE) --image-version 4143GW2801456 --cfefile $(BIN_DIR)/brcm-cfe/cfe$(BRCM_CHIP).bin --rootfsfile $(BIN_DIR)/$(IMG_PREFIX)-root.$(1) --kernelfile $(KDIR)/vmlinux.lz
cp $(BIN_DIR)/openwrt-$(4)-$(1).bin $(BIN_DIR)/zyxel/ras.bin
cp $(BIN_DIR)/brcm-cfe/cfe$(BRCM_CHIP).bin $(BIN_DIR)/zyxel/zld.bin
$(HOSTTOOLS_DIR)/bcmImageBuilder --output $(BIN_DIR)/openwrt-$(4)-$(1)-cfe.bin --chip $(3) --board $(2) --blocksize $(SQUASHFS_BLOCKSIZE) --image-version 4143GW2801456 --cfefile $(BIN_DIR)/brcm-cfe/cfe$(BRCM_CHIP).bin --rootfsfile $(KERNEL_BUILD_DIR)/root.$(1) --kernelfile $(KDIR)/vmlinux.lz --include-cfe
endif
endef
define Build/Clean
endef
define Image/mkfs/jffs2/sub/fake
# Prepare a fake rootfs without default config and cferam.000(JFFS2 fake)
rm -rf $(TARGET_DIR)_fake
cp -afp $(TARGET_DIR) $(TARGET_DIR)_fake
rm -f $(TARGET_DIR)_fake/etc/sysconfig.tar.gz $(TARGET_DIR)_fake/cferam.000
rm -f $(TARGET_DIR)_fake/etc/zcfg_schema.tar.gz
rm -f $(TARGET_DIR)_fake/etc/zcfg_defaultStr.bin
rm -f $(TARGET_DIR)_fake/etc/zcfg_objName.bin
rm -f $(TARGET_DIR)_fake/etc/zcfg_paramName.bin
rm -rf $(TARGET_DIR)_fake/usr/lib/opkg
ifneq ($(call qstrip,$(CONFIG_KERNEL_JFFS2_SUMMARY)),y)
$(STAGING_DIR_HOST)/bin/mkfs.jffs2 $(JFFS2OPTS) -e $(patsubst %k,%KiB,$(1)) -o $(KDIR)/fake_root.jffs2-$(1) -d $(TARGET_DIR)_fake -N $(BUILD_DIR)/nocomprlist -v 2>&1 1>/dev/null | awk '/^.+$$$$/'
else
$(STAGING_DIR_HOST)/bin/mkfs.jffs2 $(JFFS2OPTS) -e $(patsubst %k,%KiB,$(1)) -o $(KDIR)/tmp_root.jffs2-$(1) -d $(TARGET_DIR)_fake -N $(BUILD_DIR)/nocomprlist -v 2>&1 1>/dev/null | awk '/^.+$$$$/'
$(STAGING_DIR_HOST)/bin/sumtool $(SUMTOOLOPT) -p -i $(KDIR)/tmp_root.jffs2-$(1) -o $(KDIR)/fake_root.jffs2-$(1) -e $(SUMTOOL_BLOCKSIZE) -n
rm $(KDIR)/tmp_root.jffs2-$(1)
endif
endef
define Image/mkfs/jffs2/fcs_RD0_checksum
$(call Image/mkfs/jffs2/sub/fake,$(JFFS2_BLOCKSIZE))
endef
define Image/mkfs/jffs2/sub/original
ifeq ("$(call qstrip,$(ZYXEL_RAS_FORMAT))","y")
$(HOSTTOOLS_DIR)/zyfwinfo -f $(TARGET_DIR)/cferam.000 -s -k $(KERNEL_BUILD_DIR)/vmlinux.lz -r $(KDIR)/fake_root.jffs2-$(1) $(TOOL_ENDIAN)
endif
touch -a -m -t 197001010000.00 $(TARGET_DIR)/cferam.000
# FIXME: removing this line will cause strange behaviour in the foreach loop below
ifneq ($(call qstrip,$(CONFIG_KERNEL_JFFS2_SUMMARY)),y)
$(STAGING_DIR_HOST)/bin/mkfs.jffs2 $(JFFS2OPTS) -e $(patsubst %k,%KiB,$(1)) -o $(KDIR)/root.jffs2-$(1) -d $(TARGET_DIR) -N $(BUILD_DIR)/nocomprlist -v 2>&1 1>/dev/null | awk '/^.+$$$$/'
else
$(STAGING_DIR_HOST)/bin/mkfs.jffs2 $(JFFS2OPTS) -e $(patsubst %k,%KiB,$(1)) -o $(KDIR)/tmp_root.jffs2-$(1) -d $(TARGET_DIR) -N $(BUILD_DIR)/nocomprlist -v 2>&1 1>/dev/null | awk '/^.+$$$$/'
$(STAGING_DIR_HOST)/bin/sumtool $(SUMTOOLOPT) -p -i $(KDIR)/tmp_root.jffs2-$(1) -o $(KDIR)/root.jffs2-$(1) -e $(SUMTOOL_BLOCKSIZE) -n
rm $(KDIR)/tmp_root.jffs2-$(1)
endif
endef
define Image/mkfs/jffs2/sub
# Add nocomprlist for compress whole rootfs but those two image cferam.000 and vmlinux.lz
echo -e "/cferam.000" > $(BUILD_DIR)/nocomprlist
if [ -e $(TARGET_DIR)/.ethWanAsLan ]; then \
echo -e "/.ethWanAsLan" >> $(BUILD_DIR)/nocomprlist; \
fi
echo -e "/vmlinux.lz" >> $(BUILD_DIR)/nocomprlist
if [ -e $(TARGET_DIR)/$(BRCM_DTB) ]; then \
echo -e "/$(BRCM_DTB)" >> $(BUILD_DIR)/nocomprlist; \
fi
$(call Image/mkfs/jffs2/sub/original,$(1))
$(call Image/Build,jffs2-$(1))
# no need to remove it
#rm -rf $(BUILD_DIR)/nocomprlist
endef
ifneq ($(CONFIG_TARGET_ROOTFS_SQUASHFS),)
define Image/mkfs/squashfs
@mkdir -p $(TARGET_DIR)/overlay
$(STAGING_DIR_HOST)/bin/mksquashfs4 $(TARGET_DIR) $(KDIR)/root.squashfs -nopad -noappend -root-owned -comp $(SQUASHFSCOMP) $(SQUASHFSOPT) -processors $(if $(CONFIG_PKG_BUILD_JOBS),$(CONFIG_PKG_BUILD_JOBS),1)
dd if=$(KDIR)/root.squashfs of=$(BIN_DIR)/$(IMG_PREFIX)-root.squashfs bs=$(SQUASHFS_BLOCKSIZE) conv=sync
$(call Image/Build,squashfs)
endef
endif
ifneq ($(CONFIG_TARGET_ROOTFS_UBIFS),)
define Image/mkfs/ubifs/sub/fake
# Prepare a fake rootfs without default config and cferam.000(UBI fake)
rm -rf $(TARGET_DIR)_fake
cp -afp $(TARGET_DIR) $(TARGET_DIR)_fake
rm -f $(TARGET_DIR)_fake/etc/sysconfig.tar.gz $(TARGET_DIR)_fake/cferam.000
rm -f $(TARGET_DIR)_fake/etc/zcfg_schema.tar.gz
rm -f $(TARGET_DIR)_fake/etc/zcfg_defaultStr.bin
rm -f $(TARGET_DIR)_fake/etc/zcfg_objName.bin
rm -f $(TARGET_DIR)_fake/etc/zcfg_paramName.bin
rm -rf $(TARGET_DIR)_fake/usr/lib/opkg
#reduce ubi ras.bin size
rm -f $(TARGET_DIR)_fake/vmlinux.$(KERNEL_FILE_TYPE)
$(STAGING_DIR_HOST)/bin/mkfs.ubifs $(UBIFS_OPTS) -c $(UBIFS_MAX_LEB_COUNT) -m $(UBIFS_PAGESIZE) -e $(UBIFS_LEB_BLOCKSIZE_BYTES) -o $(KDIR)/fake_root.ubifs-$(1) -r $(TARGET_DIR)_fake
## add squbi
echo -e "[ubifs]" > $(KDIR)/squbi.ini
echo -e "mode=ubi" >> $$(KDIR)/squbi.ini
echo -e "image=$(KDIR)/squashfs_fake.img" >> $(KDIR)/squbi.ini
echo -e "vol_id=0" >> $(KDIR)/squbi.ini
echo -e "vol_type=static" >> $(KDIR)/squbi.ini
echo -e "vol_name=rootfs_squashfs" >> $(KDIR)/squbi.ini
fakeroot $(STAGING_DIR_HOST)/bin/mksquashfs4 $(TARGET_DIR)_fake $(KDIR)/squashfs_fake.img -noappend -all-root -comp xz
#restore vmlinux.lz for JFFS2 use
cp $(KDIR)/vmlinux.$(KERNEL_FILE_TYPE) $(TARGET_DIR)_fake
# END Image/mkfs/ubifs/sub/fake
endef
define Image/mkfs/ubifs/fcs_RD0_checksum
$(call Image/mkfs/ubifs/sub/fake,$(UBIFS_BLOCKSIZE))
endef
define Image/mkfs/ubifs/sub/original
# for make fcs use
ifeq ("$(call qstrip,$(ZYXEL_RAS_FORMAT))","y")
$(HOSTTOOLS_DIR)/zyfwinfo -f $(TARGET_DIR)/cferam.000 -s -k $(KERNEL_BUILD_DIR)/vmlinux.lz -r $(KDIR)/fake_root.ubifs-$(UBIFS_BLOCKSIZE) $(TOOL_ENDIAN)
endif
touch -a -m -t 197001010000.00 $(TARGET_DIR)/cferam.000
#zyfwinfo will update FirmwareVersion string in cferam.000, so update it to bootfs for filestruct_full.bin use
cp $(TARGET_DIR)/cferam.000 $(TARGET_UBI_BOOTFS)
ifeq ($(CONFIG_ALTIBOX_CUSTOMIZATION),y)
fakeroot ./buildUBI_dynamic -u $(KDIR)/ubinize.cfg -m $(KDIR)/metadata.bin -f $(KDIR)/filestruct_full.bin -t $(TARGET_UBI_BOOTFS) -y $(KDIR)/rootfs.ubifs
else
fakeroot ./buildUBI -u $(KDIR)/ubinize.cfg -m $(KDIR)/metadata.bin -f $(KDIR)/filestruct_full.bin -t $(TARGET_UBI_BOOTFS) -y $(KDIR)/rootfs.ubifs
endif
#for pureUbi rootfs
fakeroot $(STAGING_DIR_HOST)/bin/ubinize -v -o $(KDIR)/root.pureubi-$(UBIFS_BLOCKSIZE) -m $(UBIFS_PAGESIZE) -p $(patsubst %k,%KiB,$(UBIFS_BLOCKSIZE)) $(KDIR)/ubinize.cfg
#for JFFS2withUBI rootfs
# JFFS2withUBI save cferam in bootfs
fakeroot $(STAGING_DIR_HOST)/bin/mkfs.jffs2 $(JFFS2OPTS) -p -n -e $(patsubst %k,%KiB,$(UBIFS_BLOCKSIZE)) -r $(TARGET_UBI_BOOTFS) -o $(KDIR)/ibootfs$(FLASHBLK_SIZE)kb.img -N $(BUILD_DIR)/nocomprlist
fakeroot $(STAGING_DIR_HOST)/bin/sumtool $(SUMTOOLOPT) -p -i $(KDIR)/ibootfs$(FLASHBLK_SIZE)kb.img -o $(KDIR)/bootfs$(FLASHBLK_SIZE)kb.img -e $(SUMTOOL_BLOCKSIZE) -n
rm -f $(KDIR)/ibootfs$(FLASHBLK_SIZE)kb.img
#END define Image/mkfs/ubifs/sub/original
endef
define Image/mkfs/ubifs
ifeq ("$(call qstrip,$(ZYXEL_RAS_FORMAT))","y")
$(HOSTTOOLS_DIR)/zyfwinfo -f $(TARGET_DIR)/cferam.000 -s -k $(KERNEL_BUILD_DIR)/vmlinux.lz -r $(KDIR)/fake_root.ubifs-$(UBIFS_BLOCKSIZE) $(TOOL_ENDIAN)
endif
touch -a -m -t 197001010000.00 $(TARGET_DIR)/cferam.000
# START====Create boot file system dir
rm -rf $(TARGET_UBI_BOOTFS)
mkdir $(TARGET_UBI_BOOTFS)
chmod 777 $(TARGET_UBI_BOOTFS)
cp $(TARGET_DIR)/cferam.000 $(TARGET_UBI_BOOTFS)
cp $(TARGET_DIR)/$(BRCM_DTB) $(TARGET_UBI_BOOTFS)
cp $(KERNEL_BUILD_DIR)/vmlinux.lz $(TARGET_UBI_BOOTFS)
mkdir -p $(TARGET_UBI_BOOTFS)/etc
cp $(TARGET_DIR)/etc/image_version $(TARGET_UBI_BOOTFS)/etc
echo -n "@(#) $$$$"imageversion:" " > $(TARGET_UBI_BOOTFS)/etc/image_ident
cat $(TARGET_DIR)/etc/image_version | tr -d "\n" >> $(TARGET_UBI_BOOTFS)/etc/image_ident
echo " $$$$" >> $(TARGET_UBI_BOOTFS)/etc/image_ident
echo -n "@(#) $$$$"imageversion:" " >> $(TARGET_UBI_BOOTFS)/etc/image_ident
cat $(TARGET_DIR)/etc/image_version | tr -d "\n" >> $(TARGET_UBI_BOOTFS)/etc/image_ident
echo " $$$$" >> $(TARGET_UBI_BOOTFS)/etc/image_ident
# END====Create boot file system dir
#reduce ubi ras.bin size
rm -f $(TARGET_DIR)/vmlinux.$(KERNEL_FILE_TYPE)
rm -f $(TARGET_DIR)/cferam.000
fakeroot $(STAGING_DIR_HOST)/bin/mkfs.ubifs $(UBIFS_OPTS) -c $(UBIFS_MAX_LEB_COUNT) -m $(UBIFS_PAGESIZE) -e $(UBIFS_LEB_BLOCKSIZE_BYTES) -o $(KDIR)/rootfs.ubifs -r $(TARGET_DIR)
ifeq ($(CONFIG_ALTIBOX_CUSTOMIZATION),y)
fakeroot ./buildUBI_dynamic -u $(KDIR)/ubinize.cfg -m $(KDIR)/metadata.bin -f $(KDIR)/filestruct_full.bin -t $(TARGET_UBI_BOOTFS) -y $(KDIR)/rootfs.ubifs
else
fakeroot ./buildUBI -u $(KDIR)/ubinize.cfg -m $(KDIR)/metadata.bin -f $(KDIR)/filestruct_full.bin -t $(TARGET_UBI_BOOTFS) -y $(KDIR)/rootfs.ubifs
endif
fakeroot $(STAGING_DIR_HOST)/bin/ubinize -v -o $(KDIR)/root.pureubi-$(UBIFS_BLOCKSIZE) -m $(UBIFS_PAGESIZE) -p $(patsubst %k,%KiB,$(UBIFS_BLOCKSIZE)) $(KDIR)/ubinize.cfg
$(call Image/Build,pureubi-$(UBIFS_BLOCKSIZE))
echo;echo "squbi part";echo
fakeroot ./buildUBI -u $(KDIR)/fake_squbinize.cfg -m $(KDIR)/metadata.bin -f $(KDIR)/filestruct_full.bin -t $(TARGET_UBI_BOOTFS) -y $(KDIR)/squashfs_fake.img -s 1
fakeroot $(STAGING_DIR_HOST)/bin/ubinize -v -o $(KDIR)/fake_root.squbi-$(UBIFS_BLOCKSIZE) -m $(UBIFS_PAGESIZE) -p $(patsubst %k,%KiB,$(UBIFS_BLOCKSIZE)) $(KDIR)/fake_squbinize.cfg
echo -e "[ubifs]" > $(KDIR)/squbi.ini
echo -e "mode=ubi" >> $$(KDIR)/squbi.ini
echo -e "image=$(KDIR)/squashfs.img" >> $(KDIR)/squbi.ini
echo -e "vol_id=0" >> $(KDIR)/squbi.ini
echo -e "vol_type=static" >> $(KDIR)/squbi.ini
echo -e "vol_name=rootfs_squashfs" >> $(KDIR)/squbi.ini
fakeroot $(STAGING_DIR_HOST)/bin/mksquashfs4 $(TARGET_DIR) $(KDIR)/squashfs.img -noappend -all-root -comp xz
fakeroot ./buildUBI -u $(KDIR)/squbinize.cfg -m $(KDIR)/metadata.bin -f $(KDIR)/filestruct_full.bin -t $(TARGET_UBI_BOOTFS) -y $(KDIR)/squashfs.img -s 1
fakeroot $(STAGING_DIR_HOST)/bin/ubinize -v -o $(KDIR)/root.squbi-$(UBIFS_BLOCKSIZE) -m $(UBIFS_PAGESIZE) -p $(patsubst %k,%KiB,$(UBIFS_BLOCKSIZE)) $(KDIR)/squbinize.cfg
$(call Image/Build,squbi-$(UBIFS_BLOCKSIZE))
#restore vmlinux.lz, cferam.000 for JFFS2 use
cp $(TARGET_UBI_BOOTFS)/vmlinux.$(KERNEL_FILE_TYPE) $(TARGET_DIR)
cp $(TARGET_UBI_BOOTFS)/cferam.000 $(TARGET_DIR)
#### JFFS2 BootFS/UBI RootFS Start
#prepare config file for JFFS+UBI image
echo -e "[ubifs]" > $(KDIR)/bootfsJFFS2_rootfsUbi.ini
echo -e "mode=ubi" >> $(KDIR)/bootfsJFFS2_rootfsUbi.ini
echo -e "image= $(KDIR)/rootfs.ubifs" >> $(KDIR)/bootfsJFFS2_rootfsUbi.ini
echo -e "vol_id=0" >> $(KDIR)/bootfsJFFS2_rootfsUbi.ini
echo -e "vol_type=static" >> $(KDIR)/bootfsJFFS2_rootfsUbi.ini
echo -e "vol_name=rootfs_ubifs" >> $(KDIR)/bootfsJFFS2_rootfsUbi.ini
# echo -e "vol_flags=autoresize" >> $(KDIR)/bootfsJFFS2_rootfsUbi.ini
fakeroot $(STAGING_DIR_HOST)/bin/mkfs.jffs2 $(JFFS2OPTS) -p -n -e $(patsubst %k,%KiB,$(UBIFS_BLOCKSIZE)) -r $(TARGET_UBI_BOOTFS) -o $(KDIR)/ibootfs$(FLASHBLK_SIZE)kb.img -N $(BUILD_DIR)/nocomprlist
fakeroot $(STAGING_DIR_HOST)/bin/sumtool $(SUMTOOLOPT) -p -i $(KDIR)/ibootfs$(FLASHBLK_SIZE)kb.img -o $(KDIR)/bootfs$(FLASHBLK_SIZE)kb.img -e $(SUMTOOL_BLOCKSIZE) -n
rm -f $(KDIR)/ibootfs$(FLASHBLK_SIZE)kb.img
fakeroot $(STAGING_DIR_HOST)/bin/ubinize -v -o $(KDIR)/root.ubifs-$(UBIFS_BLOCKSIZE) -m $(UBIFS_PAGESIZE) -p $(patsubst %k,%KiB,$(UBIFS_BLOCKSIZE)) $(KDIR)/bootfsJFFS2_rootfsUbi.ini
#### JFFS2 BootFS/UBI RootFS End
$(call Image/Build,ubifs-$(UBIFS_BLOCKSIZE))
# END define Image/mkfs/ubifs
endef
# END ifneq ($(CONFIG_TARGET_ROOTFS_UBIFS),)
endif
define Image/mkfs/prepare
#workaround: copy all *.ko to rootfs/lib/modules/xxx/; the correct way is modify package/kernel/modules/netfilter.mk, but it should care dependence.
cp `find $(LINUX_DIR)/ -name "*.ko"` $(TARGET_DIR)/lib/modules/$(LINUX_VERSION)/
#cp `find $(BROADCOM_SDK_DIR)/bcmdrivers/ -name "*.ko"` $(TARGET_DIR)/lib/modules/$(LINUX_VERSION)/
#prevent duplicate binary, "wl/impl61/main/src/*/linux/prebuilt/*.ko", let cp command fail.
cp `find $(BROADCOM_SDK_DIR)/bcmdrivers/ -path "*/prebuilt" -prune -o -name "*.ko" -print` $(TARGET_DIR)/lib/modules/$(LINUX_VERSION)/
#In SDK 502L04, some kernel module locate at "bcm963xx\rdp\" directory.
#In SDK 502L07, "bcm963xx/rdp/" will not contain kernel module.
if [ -d $(BROADCOM_SDK_DIR)/rdp ]; then \
for f in `find $(BROADCOM_SDK_DIR)/rdp -name *.ko`; \
do \
cp $$$$f $(TARGET_DIR)/lib/modules/$(LINUX_VERSION)/; \
done \
fi
#./depmod.pl -F $(KDIR)/linux-$(LINUX_VERSION)/System.map -b $(TARGET_DIR)/lib/modules/
#due to depmod can't generate file at read-only file system, so modify the path that generate file
#ifneq ($($(shell echo CONFIG_BRCMSDK$(CONFIG_BRCM_SDK_VERSION)_ZYXEL)),)
ifneq ($(CONFIG_PACKAGE_zcfg),)
mkdir -p $(TARGET_DIR)/var/
touch $(TARGET_DIR)/var/modules.dep
touch $(TARGET_DIR)/var/modules.symbols
touch $(TARGET_DIR)/var/modules.alias
ln -fs /var/modules.dep $(TARGET_DIR)/lib/modules/$(LINUX_VERSION)/
ln -fs /var/modules.symbols $(TARGET_DIR)/lib/modules/$(LINUX_VERSION)/
ln -fs /var/modules.alias $(TARGET_DIR)/lib/modules/$(LINUX_VERSION)/
endif
$(RSTRIP) $(TARGET_DIR)/lib/modules/$(LINUX_VERSION)/
#do not rsyne modules due to conflict directory name on kernel---ChihYuan Yang
rsync -av --exclude 'modules' $(BCM_BUILD_DIR)/targets/$(BCM_PROFILE)/fs.install/ $(TARGET_DIR)/
ifeq ($(CONFIG_PACKAGE_base-files), )
ifneq ($(CONFIG_PACKAGE_zcfg),)
ifeq ($(CONFIG_BRCM_SDK_VERSION), "416L02A")
$(CP) $(TOPDIR)/target/linux/brcm963xx/base-files/* $(TARGET_DIR)/
else
$(CP) $(TOPDIR)/target/linux/brcm963xx/base-files-$(CONFIG_BRCM_SDK_VERSION)/* $(TARGET_DIR)/
if [ -d $(TOPDIR)/target/linux/brcm963xx/$(SUBTARGET)/base-files-$(CONFIG_BRCM_SDK_VERSION) ]; then \
$(CP) $(TOPDIR)/target/linux/brcm963xx//$(SUBTARGET)/base-files-$(CONFIG_BRCM_SDK_VERSION)/* $(TARGET_DIR)/; \
fi
endif
else
# not select zcfg means want to have Broadcom like firmware.
ifeq ("$(call qstrip,$(CONFIG_BRCM963xx_SDK_VER_502L0X))","y")
$(CP) $(TOPDIR)/target/linux/brcm963xx/base-files-bsp-502Lx/* $(TARGET_DIR)/
ifeq ($(CONFIG_BRCM_SDK_VERSION), "502L07")
$(CP) $(TARGET_DIR)/etc/make_static_devnodes_502L07.sh $(TARGET_DIR)/etc/make_static_devnodes.sh
rm $(TARGET_DIR)/etc/make_static_devnodes_502L07.sh
endif
else
$(CP) $(TOPDIR)/target/linux/brcm963xx/base-files-bsp/* $(TARGET_DIR)/
endif
endif
rm `find $(TARGET_DIR)/ -name ".gitkeep"`
ifeq ($(call qstrip,$(CONFIG_BRCM963xx_SDK_VER_416L04) $(CONFIG_BRCM963xx_SDK_VER_416L05) $(CONFIG_BRCM963xx_SDK_VER_502L0X)),)
ln -sf /lib/public/libcms_boardctl.so $(TARGET_DIR)/lib/libcms_boardctl.so
ln -sf /lib/public/libcms_msg.so $(TARGET_DIR)/lib/libcms_msg.so
ln -sf /lib/public/libcms_util.so $(TARGET_DIR)/lib/libcms_util.so
endif
endif
#Need to strip the rootfs to reduce the image size.
#Don`t strip $(BCM_BUILD_DIR)/targets/$(BCM_PROFILE)/fs.install when you using "sstrip"
#It may cause compile error when you compile the second time.
$(RSTRIP) $(TARGET_DIR)/
ifneq ($(CONFIG_DSL_SUPPORT),)
mkdir -p $(TARGET_DIR)/etc/adsl;cp -av $(BROADCOM_SDK_DIR)/bcmdrivers/broadcom/char/adsl/bcm9$(BRCM_CHIP)/*.bin $(TARGET_DIR)/etc/adsl
endif
ifeq ($(CONFIG_BRCM_CFE_BOOT_FROM_NAND),y)
cp $(KDIR)/vmlinux.$(KERNEL_FILE_TYPE) $(TARGET_DIR)
cp $(BIN_DIR)/brcm-cfe/cfe$(BRCM_CHIP)ram.bin $(TARGET_DIR)/cferam.000
touch -a -m -t 197001010000.00 $(TARGET_DIR)/cferam.000
endif
ifneq ($(call qstrip,$(CONFIG_BRCM963xx_SDK_VER_502L0X)),)
# Copy the *.dtb file from SDK into rootfs and make sure the timestamp will not changed.
rsync -av $(DTB_FILE) $(TARGET_DIR)/
touch -a -m -t 197001010000.00 $(TARGET_DIR)/$(BRCM_DTB)
endif
$(call Image/mkfs/prepare/default)
ifneq ($(call qstrip,$(CONFIG_BRCM963xx_SDK_VER_416L04) $(CONFIG_BRCM963xx_SDK_VER_416L05) $(CONFIG_BRCM963xx_SDK_VER_502L0X)),)
#in 416L04,416L05, check if we need to do below action?
#find $INSTALL_DIR -type f -perm /u=x,g=x,o=x -print |xargs -L1 $EXECSTACK -c 2> /dev/null
endif
endef
define Image/Prepare
# Using BCM proprietary tool "cmplzma" to compress vmlinux
ifneq ($(call qstrip,$(CONFIG_BRCM963xx_SDK_VER_416L04) $(CONFIG_BRCM963xx_SDK_VER_416L05) $(CONFIG_BRCM963xx_SDK_VER_502L0X)),)
$(HOSTTOOLS_DIR)/cmplzma -k -2 -$(KERNEL_COMPRESSION) $(KDIR)/vmlinux.elf $(KDIR)/vmlinux $(KDIR)/vmlinux.$(KERNEL_FILE_TYPE)
else
$(HOSTTOOLS_DIR)/cmplzma -k -2 $(KDIR)/vmlinux.elf $(KDIR)/vmlinux $(KDIR)/vmlinux.$(KERNEL_FILE_TYPE)
endif
endef
define Image/Build
$(call Image/Build/CFE,$(1),$(BCM_BOARD_NAME),$(BRCM_CHIP),$(BOARDNAME))
endef
$(eval $(call BuildImage))