#
# Basic targets for special product
#
sinclude $(CONFIG_DIR)/product_prep.mk
EXT_PREPARE := toolchain_relocate toolchain_mtk_uboot ipf_hosttools
EXT_PHONY :=
LUAC?=$(PLATFORM_DIR)/staging_dir/host/bin/luac
LUA_PATH?=$(IMAGE_ROOTFS_DIR)/usr/lib/lua
PRODUCT_NAME?=bn68v1
HARDWARE_VERSION?="v1"
CFG_VERSION?="cfg_ver:bn68v1h1.0.0V1.0.0P1"
CHIP_NAME?=MT7988
# include $(SDK_BUILD_DIR)/targets/94908HND/94908HND
#include $(CONFIG_DIR)/sdk.config
sinclude $(CONFIG_DIR)/common.mk
SSTRIP:=$(TOOLCHAIN_ROOT_DIR)/usr/bin/$(TOOLCHAIN_PREFIX)-strip
export TOOLCHAIN_PREFIX
export CONFIG_DIR
#基本原则:
#1. ko从sdk拿
#2. so从toolchain拿,编译时也会复制到sdk中
#3. 无线、有线相关应用,从sdk拿
#4. 上层功能,从ipf拿
# 需要从sdk拿的文件列表,如果需要重命名,则逗号后跟文件路径,否则复制路径相同
# TODO: swconfig、iwinfo依赖于ubox和ubus的sdk版本
SDK_FILE_LIST:= \
/usr/bin/regs, \
/usr/bin/ated, \
/sbin/ated_iwpriv, \
/usr/bin/wificonf, \
/usr/bin/8021xd, \
/usr/bin/rt2860apd, \
/usr/bin/rt2860apd_x, \
/usr/sbin/iw*, \
/usr/sbin/mwctl, \
/usr/sbin/hostapd, \
/usr/sbin/hostapd_cli, \
/usr/sbin/wpa_supplicant, \
/usr/sbin/wpa_cli, \
/usr/sbin/wpad, \
/usr/sbin/mii_mgr*, \
/usr/sbin/switch, \
/sbin/swconfig, \
/usr/sbin/ethtool, \
/etc/init.d/mtkhnat, \
/etc/init.d/ksmbd, \
/etc/ksmbd/, \
/usr/sbin/ubiattach, \
/usr/sbin/ubidetach, \
/usr/sbin/ubiformat, \
/usr/sbin/ubimkvol, \
/usr/sbin/ubirmvol, \
/usr/sbin/ubinfo, \
/usr/sbin/ksmbd.*, \
/lib/modules/$(KERNELVERSION)/*, \
/lib/firmware/*, \
/usr/lib/libiwinfo.so.20230701, \
/usr/lib/libnl-*, \
/lib/libc.so, \
/lib/libgcc_s.so.1, \
/lib/libubox.so.20251114, \
/lib/libubus.so.20251118, \
/lib/ld-musl-aarch64.so.1 \
/usr/lib/libcrypto.so.3 \
/usr/lib/libssl.so.3 \
/usr/lib/libnl-tiny.so.1 \
/usr/lib/libdnet.so.1 \
/usr/lib/libdnet.so* \
xml_check:
@sh $(BUILD_DIR)/hostTools/xml_check.sh $(CONFIG_DIR)/FlashMaker
toolchain_relocate:
@if test -d $(TOOLCHAIN_ROOT_DIR); \
then \
cp $(TOOLCHAIN_DIR)/libstdc++.a $(TOOLCHAIN_ROOT_DIR)/usr/mipsel-buildroot-linux-uclibc/lib/; \
cp $(TOOLCHAIN_DIR)/libstdc++.so $(TOOLCHAIN_ROOT_DIR)/usr/mipsel-buildroot-linux-uclibc/lib/; \
echo "relocate toolchain directory path..."; \
$(TOOLCHAIN_DIR)/relocate_toolchain_library.sh $(TOOLCHAIN_ROOT_DIR) /opt/buildroot-gcc463; \
fi;
rootfs_prep:
# profile check for xml
@$(MAKE) xml_check
@[ ! -d $(IMAGE_ROOTFS_DIR) ] || rm -rf $(IMAGE_ROOTFS_DIR)
@install -d $(IMAGE_ROOTFS_DIR)
@# copy kernel modules
@[ -d "$(IMAGE_ROOTFS_DIR)/lib/modules/$(KERNELVERSION)" ] || mkdir -p $(IMAGE_ROOTFS_DIR)/lib/modules/$(KERNELVERSION)
@# copy iplatform rootfs
#@echo "copy IPF rootfs..."
@cp -af $(IPF_ROOTFS_DIR)/* $(IMAGE_ROOTFS_DIR)
@# copy SDK modules
@echo "copy SDK modules ..."
@-find $(SDK_KERNEL_DIR)/lib/modules -name 'CVS' -o -name '.svn' -o -name '.#*' -o -name '*~' -o -name '.gitignore' | xargs rm -rf
cp -af $(SDK_KERNEL_DIR)/lib/modules/$(SDK_LINUX_VERSION)/* $(IMAGE_ROOTFS_DIR)/lib/modules/$(SDK_LINUX_VERSION)
# remove the linked source folder,to avoid beyond compare find the source codes... by liuqu 20190829
find $(IMAGE_ROOTFS_DIR)/lib/modules/$(SDK_LINUX_VERSION)/ -type l |xargs rm -f
@# copy SDK apps
@echo "copy SDK apps ..."
@mkdir -p $(IMAGE_ROOTFS_DIR)/usr/bin
@mkdir -p $(IMAGE_ROOTFS_DIR)/usr/sbin
@mkdir -p $(IMAGE_ROOTFS_DIR)/sbin
@mkdir $(IMAGE_ROOTFS_DIR)/usr/lib/daq
#$$(dirname "$$src") *号在shell中会自动展开,因此需要加上双引号
for file in $(SDK_FILE_LIST); do \
src=$$(echo $$file | awk -F, '{print $$1}'); \
dest=$$(echo $$file | awk -F, '{print $$2}'); \
if [ -n "$$dest" ]; then \
cp -af $(SDK_APPS_DIR)$$src $(IMAGE_ROOTFS_DIR)$$dest; \
else \
destdir=$(IMAGE_ROOTFS_DIR)$$(dirname "$$src"); \
echo $$destdir; \
cp -af $(SDK_APPS_DIR)$$src $$destdir; \
fi \
done
cp -af $(SDK_ROOT_DIR)/staging_dir/$(SDK_TOOLCHAIN_NAME)/lib/libstdc++.s* $(IMAGE_ROOTFS_DIR)/lib/
@# remove redundance
@echo "remove redundance..."
@for mod in `ls $(IMAGE_ROOTFS_DIR)/lib/modules/iplatform/*.ko` ; \
do \
find $(IMAGE_ROOTFS_DIR)/lib/modules/$(SDK_LINUX_VERSION)/ -type f -name `basename $$mod` | xargs rm -f;\
done \
@# copy board rootfs
@echo "copy board rootfs..."
@cp -af $(CONFIG_DIR)/filesystems/ $(CONFIG_DIR)/filesystems_tmp/
@-find $(CONFIG_DIR)/filesystems_tmp/ -name 'CVS' -o -name '.svn' -o -name '.#*' -o -name '*~' -o -name '.gitignore' | xargs rm -rf
@cp -af $(CONFIG_DIR)/filesystems_tmp/* $(IMAGE_ROOTFS_DIR)
@rm -rf $(CONFIG_DIR)/filesystems_tmp/
@cp -af $(CONFIG_DIR)/wireless/filesystems/* $(IMAGE_ROOTFS_DIR)
@rm -f $(IMAGE_ROOTFS_DIR)/etc/rc.d/S68avirasentinelfull
@rm -f $(IMAGE_ROOTFS_DIR)/etc/rc.d/S68avirasentinellite
@rm -f $(IMAGE_ROOTFS_DIR)/etc/rc.d/S66aviraserviceselector
@rm -f $(IMAGE_ROOTFS_DIR)/etc/rc.d/S65avirawatchdog
@rm -f $(IMAGE_ROOTFS_DIR)/etc/rc.d/S80url_class
@# copy uboot tools
# fw_printenv工具由uboot生成
cp -f $(UBOOT_BUILD_DIR)/bin/fw_printenv $(IMAGE_ROOTFS_DIR)/usr/sbin/
cd $(IMAGE_ROOTFS_DIR)/usr/sbin && ln -sf fw_printenv fw_setenv
mkjffs2:
@# make firmware
@echo "make firmware..."
# prepare bootfs
[ -d $(IMAGE_DIR)/bootfs ] || mkdir -p $(IMAGE_DIR)/bootfs
#@cp -f $(SDK_BIN_DIR)/linux.7z $(IMAGE_BIN_DIR)/vmlinuz
@cp -f $(SDK_LINUX_DIR)/mediatek_mt7988d-rfb-kernel.bin $(IMAGE_BIN_DIR)/vmlinuz
#@cp $(IMAGE_BIN_DIR)/imageuboot.bin $(IMAGE_DIR)/bootfs/imageuboot
@cp $(IMAGE_BIN_DIR)/vmlinuz $(IMAGE_DIR)/bootfs/
@dd if=/dev/zero of=$(IMAGE_DIR)/bootfs/tag_kernel bs=512 count=1
@cp -pf $(IMAGE_DIR)/bootfs/* $(IMAGE_ROOTFS_DIR)/
#@echo "/imageuboot" > $(IMAGE_DIR)/nocomprlist
@echo "/vmlinuz" >> $(IMAGE_DIR)/nocomprlist
@echo "/tag_kernel" >> $(IMAGE_DIR)/nocomprlist
@mkdir -p $(IMAGE_ROOTFS_DIR)/data
@mkdir -p $(IMAGE_ROOTFS_DIR)/tp_data
#@mkdir -p $(IMAGE_ROOTFS_DIR)/radio
@ln -sf /tag_kernel $(IMAGE_ROOTFS_DIR)/etc/tag_kernel
#$(HOSTTOOLS_DIR)/fakeroot $(HOSTTOOLS_DIR)/mkfs.jffs2 -l -p -n -e 131072 -r $(IMAGE_ROOTFS_DIR)/ -o $(IMAGE_BIN_DIR)/rootfs.jffs2 -N $(IMAGE_DIR)/nocomprlist
#$(HOSTTOOLS_DIR)/fakeroot $(HOSTTOOLS_DIR)/mktag_jffs2 -E 1 -s 42 -f $(IMAGE_BIN_DIR)/rootfs.jffs2 -o $(IMAGE_BIN_DIR)/rootfs.img
@chmod 777 -R $(IMAGE_ROOTFS_DIR)
$(SDK_HOST_TOOL_DIR)/mksquashfs4 $(IMAGE_ROOTFS_DIR) $(IMAGE_BIN_DIR)/rootfs.jffs2 -noappend -root-owned -comp xz -Xpreset 9 -Xe -Xlc 0 -Xlp 2 -Xpb 2 -b 256k -p '/dev d 755 0 0' -p '/dev/console c 600 0 0 5 1'
cp -pf $(FLASH_MAKER_DIR)/root.cfg $(IMAGE_BIN_DIR) && \
cd $(IMAGE_BIN_DIR) && \
$(SDK_HOST_TOOL_DIR)/ubinize -m 2048 -p 128KiB -E 5 -o $(IMAGE_BIN_DIR)/rootfs.img $(IMAGE_BIN_DIR)/root.cfg ;
@rm -rf $(IMAGE_DIR)/nocomprlist
timestamp_webpages:
@for line in `cat $(HOSTTOOLS_DIR)/../../config_sh_tables`; \
do \
$(HOSTTOOLS_DIR)/../../$$line $(PRODUCT_NAME); \
done
@# rename webpages by grunt for webpages cache
rm -rf $(IMAGE_ROOTFS_DIR)/../webpages
# for portal jpg link file
-mv -f $(IMAGE_ROOTFS_DIR)/www/webpages/themes/green/img/portal_back.jpg $(IMAGE_ROOTFS_DIR)/www/webpages/themes/green/img/portal_logo.jpg $(IMAGE_ROOTFS_DIR)/
mv -f $(IMAGE_ROOTFS_DIR)/www/webpages $(IMAGE_ROOTFS_DIR)/../
cp -af $(BUILD_DIR)/hostTools/change_pages_name/* $(IMAGE_ROOTFS_DIR)/../webpages/
cd $(IMAGE_ROOTFS_DIR)/../webpages/; ./node_modules/grunt/bin/grunt
mv -f $(IMAGE_ROOTFS_DIR)/../webpages/build/web $(IMAGE_ROOTFS_DIR)/www/webpages
echo -en `[ -f $(IMAGE_ROOTFS_DIR)/www/webpages/app.*.manifest ] && basename $(IMAGE_ROOTFS_DIR)/www/webpages/app.*.manifest |awk -F '.' '{print $$2}'` > $(IMAGE_ROOTFS_DIR)/etc/webpage_time
shrink_webpages:timestamp_webpages
@echo "shrink webpages done..."
prepare_partition_files:
@echo "build default config"
@# prepare partition files
@chmod 777 -R $(IMAGE_ROOTFS_DIR)
#@[ -d $(IMAGE_ROOTFS_DIR)/etc/partition_config ] || mkdir -p $(IMAGE_ROOTFS_DIR)/etc/partition_config
#@$(HOSTTOOLS_DIR)/gather -p $(CONFIG_DIR)/partition.conf -i $(CONFIG_DIR)/ -o $(IMAGE_ROOTFS_DIR)/etc/partition_config/ -s $(SOFTWARE_VERSION)
#@echo $(CFG_VERSION) >> $(IMAGE_ROOTFS_DIR)/etc/partition_config/soft-version
#@cp -pf $(IMAGE_ROOTFS_DIR)/etc/partition_config/soft-version $(IMAGE_DIR)/
#@mv -f $(BUILD_DIR)/flashname $(IMAGE_DIR)/
#@ZLIB_FLATE=$(ZLIB_FLATE) $(XML2BIN) $(CONFIG_DIR)/partition.conf $(CONFIG_DIR) $(IMAGE_DIR)
mkdir -p $(IMAGE_ROOTFS_DIR)/$(FW_CONF_DIR)
mkdir -p $(IMAGE_ROOTFS_DIR)/$(FW_CONF_DIR)/$(USER_CONF_DIR)
mkdir -p $(IMAGE_BIN_DIR)/$(FW_CONF_DIR)/$(USER_CONF_DIR)
mkdir -p $(IMAGE_ROOTFS_DIR)/$(FW_CONF_DIR)/$(MANU_CONF_DIR)
mkdir -p $(IMAGE_ROOTFS_DIR)/tp_data
mkdir -p $(IMAGE_ROOTFS_DIR)/tp_data/$(USER_CONF_DIR)
mkdir -p $(IMAGE_ROOTFS_DIR)/tp_data/$(MANU_CONF_DIR)
@ZLIB_FLATE=$(ZLIB_FLATE) $(XML2BIN) $(FLASH_MAKER_DIR)/partition.conf $(FLASH_MAKER_DIR) $(IMAGE_BIN_DIR)
@cp $(FLASH_MAKER_DIR)/product-info.bin.EU $(IMAGE_BIN_DIR)/product-info.bin
@cp $(FLASH_MAKER_DIR)/supportlist.bin $(IMAGE_BIN_DIR)
@cp $(FLASH_MAKER_DIR)/partition.conf $(IMAGE_DIR)
@cp $(FLASH_MAKER_DIR)/cloudinfo.conf $(IMAGE_DIR)
@cp $(FLASH_MAKER_DIR)/group-info.bin $(IMAGE_BIN_DIR)
@cp $(FLASH_MAKER_DIR)/fw_env.config $(IMAGE_BIN_DIR)
# Create softversion
cd $(IMAGE_BIN_DIR) && \
$(GEN_SOFTVER) -d -c $(FLASH_MAKER_DIR)/cloudinfo.conf -p $(IMAGE_BIN_DIR)/product-info.bin -o $(IMAGE_BIN_DIR)/soft-version.bin -s $(SOFTVER) -r $(IMAGE_BIN_DIR)/$(RELEASE_FILE)
cd $(IMAGE_BIN_DIR) && \
cp supportlist.bin $(IMAGE_ROOTFS_DIR)/$(FW_CONF_DIR)/support-list && \
cp profile.bin $(IMAGE_ROOTFS_DIR)/$(FW_CONF_DIR)/profile && \
cp default-config.bin $(IMAGE_ROOTFS_DIR)/$(FW_CONF_DIR)/default-config && \
cp soft-version.bin $(IMAGE_ROOTFS_DIR)/$(FW_CONF_DIR)/soft-version && \
cp $(FLASH_MAKER_DIR)/partition.conf $(IMAGE_ROOTFS_DIR)/$(FW_CONF_DIR)/partition-table && \
cp product-info.bin $(IMAGE_ROOTFS_DIR)/$(FW_CONF_DIR)/$(MANU_CONF_DIR)/product-info && \
cp group-info.bin $(IMAGE_BIN_DIR)/$(FW_CONF_DIR)/$(USER_CONF_DIR)/group-info && \
cp manufacture-deviceconf.bin $(IMAGE_BIN_DIR)/$(FW_CONF_DIR)/$(USER_CONF_DIR)/device-config && \
cp manufacture-userconf.bin $(IMAGE_BIN_DIR)/$(FW_CONF_DIR)/$(USER_CONF_DIR)/user-config && \
cp fw_env.config $(IMAGE_ROOTFS_DIR)/etc/fw_env.config
cp $(FLASH_MAKER_DIR)/factory_data.cfg $(IMAGE_BIN_DIR)
cp $(FLASH_MAKER_DIR)/runtime_data.cfg $(IMAGE_BIN_DIR)
cd $(IMAGE_BIN_DIR) && \
$(SDK_HOST_TOOL_DIR)/mkfs.ubifs -F -m 2048 -e 124KiB -c 48 -r $(IMAGE_ROOTFS_DIR)/$(FW_CONF_DIR)/$(MANU_CONF_DIR) -o factory_data.ubifs && \
$(SDK_HOST_TOOL_DIR)/mkfs.ubifs -F -m 2048 -e 124KiB -c 88 -r $(IMAGE_BIN_DIR)/$(FW_CONF_DIR)/$(USER_CONF_DIR) -o runtime_data.ubifs && \
$(SDK_HOST_TOOL_DIR)/ubinize -m 2048 -p 128KiB -o $(IMAGE_BIN_DIR)/factory_data.ubi $(IMAGE_BIN_DIR)/factory_data.cfg && \
$(SDK_HOST_TOOL_DIR)/ubinize -m 2048 -p 128KiB -o $(IMAGE_BIN_DIR)/runtime_data.ubi $(IMAGE_BIN_DIR)/runtime_data.cfg
@echo "prepare partitions done..."
__nand_make_ubi:
@echo "build extra flash default config"
@# prepare partition files
cp $(FLASH_MAKER_DIR)/factory_data.cfg $(IMAGE_BIN_DIR)
cp $(FLASH_MAKER_DIR)/runtime_data.cfg $(IMAGE_BIN_DIR)
cd $(IMAGE_BIN_DIR) && \
$(SDK_HOST_TOOL_DIR)/mkfs.ubifs -F -m 2048 -e 124KiB -c 48 -r $(IMAGE_ROOTFS_DIR)/$(FW_CONF_DIR)/$(MANU_CONF_DIR) -o factory_data.ubifs && \
$(SDK_HOST_TOOL_DIR)/mkfs.ubifs -F -m 2048 -e 124KiB -c 88 -r $(IMAGE_BIN_DIR)/$(FW_CONF_DIR)/$(USER_CONF_DIR) -o runtime_data.ubifs && \
$(SDK_HOST_TOOL_DIR)/ubinize -m 2048 -p 128KiB -o $(IMAGE_BIN_DIR)/factory_data.ubi $(IMAGE_BIN_DIR)/factory_data.cfg && \
$(SDK_HOST_TOOL_DIR)/ubinize -m 2048 -p 128KiB -o $(IMAGE_BIN_DIR)/runtime_data.ubi $(IMAGE_BIN_DIR)/runtime_data.cfg
@echo "prepare extra flash partitions done..."
define make_extra_flash
@echo "make extra flash"
cp $(FLASH_MAKER_DIR)/product-info.bin.$(1) $(IMAGE_BIN_DIR)/product-info.bin
cd $(IMAGE_BIN_DIR) && \
cp product-info.bin $(IMAGE_ROOTFS_DIR)/$(FW_CONF_DIR)/$(MANU_CONF_DIR)/product-info
$(MAKE) __nand_make_ubi
$(MAKE) mkjffs2
cd $(IMAGE_DIR) && \
$(MAKE_FLASH) -p $(FLASH_MAKER_DIR)/partition.conf -c $(FLASH_MAKER_DIR)/cloudinfo.conf -s $(SOFTVER) -o $(PRODUCT_LIST)-$(BOARDDATA_VERSION)-$(1) -b $(FLASH_BLOCK_SIZE_KB) -r $(IMAGE_BIN_DIR)/$(RELEASE_FILE) -n $(IMAGE_DIR)/flashname -d -m -f
# insert ecc tag to flash
$(CONFIG_DIR)/tools/mktag.sh "$(IMAGE_DIR)/`cat $(IMAGE_DIR)/flashname`"
# The following blank line is critical, preserve it during editing
endef
compile_lua:
@echo "compile lua files"
@mv -f $(LUA_PATH)/luci/debug.lua $(LUA_PATH)/luci/debug.tmp
for i in $$(find $(LUA_PATH) -name '*.lua'); do \
$(LUAC) -s -o $$i $$i; \
done
@mv $(LUA_PATH)/luci/debug.tmp $(LUA_PATH)/luci/debug.lua
cloud_lua_files_prep:
@echo "should collect cloud-lua files which needed for luci-apps"
mkdir -p $(IMAGE_ROOTFS_DIR)/usr/lib/lua/cloud
cp $(BUILD_DIR)/../../../platform/iplatform/stable/private/libcloud-cli/filesystem/usr/lib/lua/cloud/* $(IMAGE_ROOTFS_DIR)/usr/lib/lua/cloud -rf
mkdir -p $(IMAGE_ROOTFS_DIR)/usr/lib/lua/cloud_req
cp $(BUILD_DIR)/../../../platform/iplatform/stable/private/libcloud-cli/filesystem/usr/lib/lua/cloud_req/*.lua $(IMAGE_ROOTFS_DIR)/usr/lib/lua/cloud_req
cp $(BUILD_DIR)/../../../platform/iplatform/stable/private/libcloud-https/filesystem/usr/lib/lua/cloud_req/*.lua $(IMAGE_ROOTFS_DIR)/usr/lib/lua/cloud_req
mksquashfs:
echo "make squashfs..."
$(CONFIG_DIR)/mksquashfs4.2 $(IMAGE_DIR)/rootfs $(IMAGE_DIR)/rootfs_$(PRODUCT_NAME) -noappend -always-use-fragments -all-root -comp xz -b 128k
@echo make $@ done.
make_flash_prep:
$(MAKE) -C $(MAKE_FLASH_TOOLPATH)/src clean mkjffs2 mktag_jffs2 fakeroot
#cp -f $(MAKE_FLASH_TOOLPATH)/make_flash $(CONFIG_DIR)/make_flash_cloud_v2
#chmod 777 $(CONFIG_DIR)/make_flash_cloud_v2
$(MAKE) -C $(MAKE_FLASH_PATH) all
install -d $(IMAGE_TOOLS_DIR)
cp -f $(MAKE_FLASH_PATH)/make_flash $(MAKE_FLASH)
cp -f $(MAKE_FLASH_PATH)/gen_softver $(GEN_SOFTVER)
firmware:make_flash_prep rootfs_prep cloud_lua_files_prep prepare_partition_files compile_lua mkjffs2
image_prep:
# combine first uboot with main uboot
# $(CONFIG_DIR)/tools/mkuboot.sh $(IMAGE_BIN_DIR)/firstuboot.bin $(IMAGE_BIN_DIR)/mainuboot.bin $(IMAGE_BIN_DIR)/factory_boot.img
rm -rf $(IMAGE_DIR)/factory_boot.img
rm -rf $(IMAGE_DIR)/$(PRODUCT_LIST)*
$(call padFileWithFF,$(UBOOT_BUILD_DIR)/bin/bl2.img,$(IMAGE_BIN_DIR)/bl2.img,0x20000)
$(call padFileWithFF,$(UBOOT_BUILD_DIR)/bin/fip.bin,$(IMAGE_BIN_DIR)/fip.bin,0x20000)
$(call concatFile,$(IMAGE_BIN_DIR)/bl2.img,$(IMAGE_BIN_DIR)/fip.bin,$(IMAGE_BIN_DIR)/factory_boot.img)
image:image_prep
# cp $(CONFIG_DIR)/partition.conf $(CONFIG_DIR)/partition.conf.tmp
# sed -ie 's:TOP_DIR:$(BUILD_DIR)/..:g' $(CONFIG_DIR)/partition.conf.tmp
# sed -ie 's:PRODUCT_NAME:$(PRODUCT_NAME):g' $(CONFIG_DIR)/partition.conf.tmp
# cd $(IMAGE_DIR) ;\
# [ -z "$(DEBUG_NO_SIGN)" ] && $(CONFIG_DIR)/make_flash_cloud_v2 -p $(CONFIG_DIR)/partition.conf.tmp -o "$(TMP_PRODUCT_NAME)" -s "$(SOFTVER)" -d -c $(CONFIG_DIR)/cloudinfo.conf -m || $(CONFIG_DIR)/make_flash_cloud_v2 -p $(CONFIG_DIR)/partition.conf.tmp -o "$(TMP_PRODUCT_NAME)" -s "$(SOFTVER)" -d -m
@if grep -q 'CONFIG_BUSYBOX_CONFIG_TELNETD=y' $(PLATFORM_DIR)/.config; then \
echo "CONFIG_BUSYBOX_CONFIG_TELNETD=y in $(PLATFORM_DIR)/.config, make 'iplatform.config iplatform firmware' to update"; \
exit 1; \
elif find $(IMAGE_ROOTFS_DIR) -name '*telnetd*' | grep -q .; then \
echo "telnetd in rootfs, make 'iplatform.config iplatform firmware' to update"; \
exit 1; \
fi
@echo 'building *_[flash|up|manu].bin ...'
cd $(IMAGE_DIR) && \
$(MAKE_FLASH) -p $(FLASH_MAKER_DIR)/partition.conf -c $(FLASH_MAKER_DIR)/cloudinfo.conf -s $(SOFTVER) -o $(PRODUCT_LIST)-RSA2048-$(BOARDDATA_VERSION)-$(SUPPORT_COUNTRY) -b $(FLASH_BLOCK_SIZE_KB) -r $(IMAGE_BIN_DIR)/$(RELEASE_FILE) -n $(IMAGE_DIR)/flashname -R 2048 -d -m -u
ifneq ($(strip $(EXTRA_FLASH_SID)),)
$(foreach sid,$(EXTRA_FLASH_SID),$(call make_extra_flash,$(sid)))
endif
__beta_image_prep:
$(call padFileWithFF,$(UBOOT_BUILD_DIR)/bin/bl2.img,$(IMAGE_BIN_DIR)/bl2.img,0x20000)
$(call padFileWithFF,$(UBOOT_BUILD_DIR)/bin/fip.bin,$(IMAGE_BIN_DIR)/fip.bin,0x20000)
$(call concatFile,$(IMAGE_BIN_DIR)/bl2.img,$(IMAGE_BIN_DIR)/fip.bin,$(IMAGE_BIN_DIR)/factory_boot.img)
__beta_image:__beta_image_prep
@echo 'building beta *BETA_[up|manu].bin ...'
cd $(IMAGE_DIR) && \
$(MAKE_FLASH) -p $(FLASH_MAKER_DIR)/partition.conf -c $(FLASH_MAKER_DIR)/cloudinfo.conf -s $(SOFTVER) -o $(PRODUCT_LIST)-RSA2048-$(BOARDDATA_VERSION)-$(SUPPORT_COUNTRY)_BETA -b $(FLASH_BLOCK_SIZE_KB) -r $(IMAGE_BIN_DIR)/$(RELEASE_FILE) -n $(IMAGE_DIR)/flashname -R 2048 -d -m -u
__beta_prepare:
@if grep -q 'CONFIG_BUSYBOX_CONFIG_TELNETD' $(PLATFORM_DIR)/.config; then \
sed -i 's/.*CONFIG_BUSYBOX_CONFIG_TELNETD.*/CONFIG_BUSYBOX_CONFIG_TELNETD=y/' $(PLATFORM_DIR)/.config; \
else \
echo "CONFIG_BUSYBOX_CONFIG_TELNETD=y" >> $(PLATFORM_DIR)/.config; \
fi
@echo '###### $(PLATFORM_DIR)/.config ######'
@cat $(PLATFORM_DIR)/.config | grep "CONFIG_BUSYBOX_CONFIG_TELNETD"
@echo '###### $(PLATFORM_DIR)/.config ######'
__beta_build:
@$(MAKE) iplatform firmware __beta_image V=s
__beta_revert:
@sed -i 's/.*CONFIG_BUSYBOX_CONFIG_TELNETD.*/# CONFIG_BUSYBOX_CONFIG_TELNETD is not set/' $(PLATFORM_DIR)/.config
@$(MAKE) iplatform firmware V=s
@echo '###### $(PLATFORM_DIR)/.config ######'
@cat $(PLATFORM_DIR)/.config | grep "CONFIG_BUSYBOX_CONFIG_TELNETD"
@echo '###### $(PLATFORM_DIR)/.config ######'
powerfile:
@cp -f $(CONFIG_DIR)/powerfile/*.c $(SDK_BUILD_DIR)/bcmdrivers/broadcom/net/wl/impl51/4365/src/wl/clm/src/
# @cp -f $(CONFIG_DIR)/powerfile/*.h $(SDK_BUILD_DIR)/kernel/linux-4.1/include/linux/
kernel_config:sdk_prep
@echo "copy kernel.config"
$(call copyFile,$(CONFIG_DIR)/kernel.config,$(SDK_ROOT_DIR)/target/linux/mediatek/$(CHIPS_NAME)/config-6.12)
@echo "copy dts file"
$(call copyFile,$(CONFIG_DIR)/mt7988a-rfb.dts,$(SDK_ROOT_DIR)/target/linux/linux-$(KERNELVERSION)/arch/arm64/boot/dts/mediatek/)
$(call copyFile,$(CONFIG_DIR)/mt7988a.dtsi,$(SDK_ROOT_DIR)/target/linux/linux-$(KERNELVERSION)/arch/arm64/boot/dts/mediatek/)
$(call copyFile,$(CONFIG_DIR)/mt7988d-rfb.dts,$(SDK_ROOT_DIR)/target/linux/linux-$(KERNELVERSION)/arch/arm64/boot/dts/mediatek/)
sdk_config:
@echo "copy sdk.config"
$(call copyFile,$(CONFIG_DIR)/sdk.config.tmp,$(SDK_ROOT_DIR)/.config)
kernel:kernel_config
cd $(SDK_ROOT_DIR) && $(MAKE) target/linux/install V=s
kernel_menuconfig:kernel_config
cd $(SDK_ROOT_DIR) && $(MAKE) kernel_menuconfig
cp $(SDK_ROOT_DIR)/target/linux/linux-$(KERNELVERSION)/.config $(CONFIG_DIR)/kernel.config
kernel_clean:
cd $(SDK_ROOT_DIR) && $(MAKE) target/linux/clean V=s
sdk_prep:
if [ ! -e $(SDK_ROOT_DIR)/.prepared ]; then \
cd $(SDK_ROOT_DIR) && ./autobuild/autobuild.sh mt7988-blackhawk-BN22000 prepare; \
touch $(SDK_ROOT_DIR)/.prepared; \
fi
#ln -snf $(DRIVER_DIR) $(SDK_ROOT_DIR)/$(WIFI_DRIVER_DIR_NAME)
# copy to Sku_($SKU_IDX+1).dat, where $SKU_IDX should be same as definition in $(CONFIG_DIR)\wireless\filesystems\lib\wifi\dualband\wlan.ini
#SYNCHRONIZED TO Router AX80v1 skuTableIdx: EU = 0; JP = 1; US = 2; CA=3; RU = 4; TW = 5; KR = 6; AU = 7; AS = 8;UN=9;NZ=10;BR = 11; Sku_idx.dat start with 01;
@echo "copy sku.dat"
#@cp -f $(CONFIG_DIR)/wireless/Sku_EU.dat $(DRIVER_DIR)/mt_wifi/hw_ctrl/phy/txpwr/sku_tables/Sku_01.dat
#@cp -f $(CONFIG_DIR)/wireless/Sku_JP.dat $(DRIVER_DIR)/mt_wifi/hw_ctrl/phy/txpwr/sku_tables/Sku_02.dat
#@cp -f $(CONFIG_DIR)/wireless/Sku_US.dat $(DRIVER_DIR)/mt_wifi/hw_ctrl/phy/txpwr/sku_tables/Sku_03.dat
#@cp -f $(CONFIG_DIR)/wireless/Sku_CA.dat $(DRIVER_DIR)/mt_wifi/hw_ctrl/phy/txpwr/sku_tables/Sku_04.dat
#@cp -f $(CONFIG_DIR)/wireless/Sku_AU.dat $(DRIVER_DIR)/mt_wifi/hw_ctrl/phy/txpwr/sku_tables/Sku_08.dat
#@cp -f $(CONFIG_DIR)/wireless/Sku_AS.dat $(DRIVER_DIR)/mt_wifi/hw_ctrl/phy/txpwr/sku_tables/Sku_09.dat
@echo "copy Backoff.dat"
#@cp -f $(CONFIG_DIR)/wireless/Backoff_EU.dat $(DRIVER_DIR)/mt_wifi/hw_ctrl/phy/txpwr/sku_tables/Backoff_01.dat
#@cp -f $(CONFIG_DIR)/wireless/Backoff_JP.dat $(DRIVER_DIR)/mt_wifi/hw_ctrl/phy/txpwr/sku_tables/Backoff_02.dat
#@cp -f $(CONFIG_DIR)/wireless/Backoff_US.dat $(DRIVER_DIR)/mt_wifi/hw_ctrl/phy/txpwr/sku_tables/Backoff_03.dat
#@cp -f $(CONFIG_DIR)/wireless/Backoff_CA.dat $(DRIVER_DIR)/mt_wifi/hw_ctrl/phy/txpwr/sku_tables/Backoff_04.dat
#@cp -f $(CONFIG_DIR)/wireless/Backoff_AU.dat $(DRIVER_DIR)/mt_wifi/hw_ctrl/phy/txpwr/sku_tables/Backoff_08.dat
#@cp -f $(CONFIG_DIR)/wireless/Backoff_AS.dat $(DRIVER_DIR)/mt_wifi/hw_ctrl/phy/txpwr/sku_tables/Backoff_09.dat
sdk:sdk_prep sdk_config kernel_config sdk_build
sdk_build:
cd $(SDK_ROOT_DIR) && $(MAKE) V=s
sdk_menuconfig:sdk_config
cd $(SDK_ROOT_DIR) && $(MAKE) menuconfig V=s
cp $(SDK_ROOT_DIR)/.config $(CONFIG_DIR)/sdk.config.tmp
sdk_clean:
cd $(SDK_ROOT_DIR) && $(MAKE) clean V=s
cd $(SDK_ROOT_DIR) && ./patch_clean.sh
firstuboot:
@echo "copy uboot.config"
@cp -f $(CONFIG_DIR)/firstuboot.config $(UBOOT_BUILD_DIR)/uboot.config
@echo "copy atf.config"
@cp -f $(CONFIG_DIR)/atf.config $(UBOOT_BUILD_DIR)/atf.config
@echo "copy dts"
@cp -f $(CONFIG_DIR)/$(UBOOT_DTS_NAME) $(UBOOT_BUILD_DIR)/uboot/arch/arm/dts/$(UBOOT_DTS_NAME)
@echo firstuboot: making ...
@cd $(UBOOT_BUILD_DIR) && $(MAKE) V=s \
TOOLCHAIN_PREFIX=$(SDK_ROOT_DIR)/staging_dir/$(SDK_TOOLCHAIN_NAME)/bin/$(SDK_TOOLCHAIN_PREFIX) \
STAGING_DIR=$(SDK_ROOT_DIR)/staging_dir/$(SDK_TARGET_NAME)
#[ -d $(IMAGE_DIR) ] || mkdir -p $(IMAGE_DIR)
@install -d $(IMAGE_BIN_DIR)
@cp $(UBOOT_BUILD_DIR)/bin/* $(IMAGE_BIN_DIR)/
seconduboot:
@echo "copy uboot.config"
@cp -f $(CONFIG_DIR)/seconduboot.config $(UBOOT_BUILD_DIR)/uboot.config
@echo "copy atf.config"
@cp -f $(CONFIG_DIR)/atf.config $(UBOOT_BUILD_DIR)/atf.config
#mt7986b-rfb 配置位于uboot.config CONFIG_DEFAULT_DEVICE_TREE
@echo "copy dts"
@cp -f $(CONFIG_DIR)/$(UBOOT_DTS_NAME) $(UBOOT_BUILD_DIR)/uboot/arch/arm/dts/$(UBOOT_DTS_NAME)
@echo seconduboot: making ...
@cd $(UBOOT_BUILD_DIR) && $(MAKE) seconduboot V=s \
TOOLCHAIN_PREFIX=$(SDK_ROOT_DIR)/staging_dir/$(SDK_TOOLCHAIN_NAME)/bin/$(SDK_TOOLCHAIN_PREFIX) \
STAGING_DIR=$(SDK_ROOT_DIR)/staging_dir/$(SDK_TARGET_NAME)
#[ -d $(IMAGE_DIR) ] || mkdir -p $(IMAGE_DIR)
@install -d $(IMAGE_BIN_DIR)
@cp $(UBOOT_BUILD_DIR)/bin/* $(IMAGE_BIN_DIR)/
fs-uboot:uboot_clean
@cp -f $(CONFIG_DIR)/uboot.config $(UBOOT_BUILD_DIR)/.config
@echo mainuboot: making ...
cd $(UBOOT_BUILD_DIR) && make silentconfig CONFIG_CROSS_COMPILER_PATH=$(UBOOT_TOOLCHAIN_COMPILER_PATH)
cd $(UBOOT_BUILD_DIR) && make CONFIG_CROSS_COMPILER_PATH=$(UBOOT_TOOLCHAIN_COMPILER_PATH)
@install -d $(IMAGE_DIR)
@cp $(UBOOT_BUILD_DIR)/uboot.bin $(IMAGE_DIR)/uboot.bin
uboot:seconduboot firstuboot
@echo uboot: make.. done
uboot_clean:
@echo uboot: clean ...
$(MAKE) -C $(UBOOT_BUILD_DIR) clean CONFIG_CROSS_COMPILER_PATH=$(UBOOT_TOOLCHAIN_COMPILER_PATH);
编译firmware image时,是否能用mkimage加头变成uimage或者fit标准格式