mirror of
https://github.com/gnuton/asuswrt-merlin.ng.git
synced 2025-05-18 15:31:54 +02:00
1772 lines
79 KiB
Text
1772 lines
79 KiB
Text
#***********************************************************************
|
|
#
|
|
# Copyright (c) 2004 Broadcom Corporation
|
|
# All Rights Reserved
|
|
#
|
|
#***********************************************************************/
|
|
export MY_DEFAULT_ANY_FIRST_RUN := 0
|
|
|
|
# Top-level Makefile
|
|
show_vars = $(info $(foreach v,$1,$v='$(value $v)'))
|
|
$(call show_vars,MAKELEVEL MAKEFLAGS MAKECMDGOALS MAKEOVERRIDES MAKEFILE_LIST)
|
|
$(call show_vars,MY_DEFAULT_ANY_FIRST_RUN MY_MKENV_FIRST_RECURSION)
|
|
|
|
###########################################
|
|
# Wrapper to call the real part
|
|
###########################################
|
|
ifneq ($(MY_DEFAULT_ANY_FIRST_RUN),0)
|
|
export MY_DEFAULT_ANY_FIRST_RUN := 0
|
|
# Build everything in parallel by default.
|
|
# Use "$make BRCM_MAX_JOBS=1 ..." to build all in serial.
|
|
default:
|
|
$(MAKE) -j$(ACTUAL_MAX_JOBS) $@
|
|
%:: force
|
|
$(MAKE) -j$(ACTUAL_MAX_JOBS) $@
|
|
|
|
.PHONY : default force
|
|
|
|
# By default, let make spawn 1 job per core.
|
|
# To set max jobs, specify on command line, BRCM_MAX_JOBS=8
|
|
# To also specify a max load, BRCM_MAX_JOBS="6 --max-load=3.0"
|
|
# To specify max load without max jobs, BRCM_MAX_JOBS=" --max-load=3.5"
|
|
ifneq ($(strip $(BRCM_MAX_JOBS)),)
|
|
ACTUAL_MAX_JOBS := $(BRCM_MAX_JOBS)
|
|
else
|
|
NUM_CORES := $(shell grep processor /proc/cpuinfo | wc -l)
|
|
ACTUAL_MAX_JOBS := $(NUM_CORES)
|
|
endif
|
|
# Since tms driver is called with -j1 and will call its sub-make with -j,
|
|
# We want it to use this value. Although the jobserver is disabled for tms,
|
|
# at least tms is compiled with no more than this variable value jobs.
|
|
export ACTUAL_MAX_JOBS
|
|
|
|
else #ifneq ($(MY_DEFAULT_ANY_FIRST_RUN),0)
|
|
###########################################
|
|
# Start of the real part
|
|
###########################################
|
|
###########################################
|
|
# This is the first target in the Makefile,
|
|
# so it is also the default target.
|
|
############################################
|
|
default: mkenv prebuild_checks all_postcheck1
|
|
|
|
#all: cfebuild
|
|
all:
|
|
$(MAKE) default
|
|
|
|
all_postcheck1: profile_saved_check sanity_check rdp_link\
|
|
create_install pinmuxcheck dynamic_cfe #kernelbuild #modbuild\
|
|
parallel_targets #gdbserver buildimage
|
|
|
|
# Order-only rules
|
|
#----------------------------------------------------------------------------
|
|
# work around the following targets/recipes in cfe/build/broadcom/bcm63xx_ram/Makefile
|
|
# ALL:
|
|
# find $(SHARED_DIR) -name "*.o" -exec rm -f "{}" ";"
|
|
# find $(BOARDPARMS_DIR) -name "*.o" -exec rm -f "{}" ";"
|
|
#
|
|
# rdp_clean:
|
|
#----------------------------------------------------------------------------
|
|
|
|
# FIXME - the following should be an order-only rule, but it doesn't seem to work unless it is a real rule
|
|
kernelbuild : dynamic_cfe
|
|
|
|
#----------------------------------------------------------------------------
|
|
# work around ld internal bug when building/linking the same obj concurrently:
|
|
# make[3]: Entering directory `/auto/jenkins_workspace_pre/workspace/Preflight_CommEngine_Dev_962118GW/cfe/build/broadcom/build_cferam_emmc'
|
|
# make[4]: Entering directory `/auto/jenkins_workspace_pre/workspace/Preflight_CommEngine_Dev_962118GW/hostTools'
|
|
# building lzma host tool ...
|
|
# make[3]: Entering directory `/auto/jenkins_workspace_pre/workspace/Preflight_CommEngine_Dev_962118GW/cfe/build/broadcom/build_cferam_nand'
|
|
# make[4]: Entering directory `/auto/jenkins_workspace_pre/workspace/Preflight_CommEngine_Dev_962118GW/hostTools'
|
|
# building lzma host tool ...
|
|
# /tools/oss/packages/x86_64-rhel6/binutils/default/bin/ld: BFD (GNU Binutils) 2.22 internal error, aborting at merge.c line 873 in _bfd_merged_section_offset
|
|
#
|
|
# /tools/oss/packages/x86_64-rhel6/binutils/default/bin/ld: Please report this bug.
|
|
#
|
|
# collect2: ld returned 1 exit status
|
|
# make[4]: *** [build_cmplzma] Error 1
|
|
#----------------------------------------------------------------------------
|
|
build_cfe_nand : | build_cfe_emmc
|
|
build_cfe_emmc : | build_cfe_sec_nand
|
|
build_cfe_sec_nand : | build_cfe_sec_emmc
|
|
|
|
prebuild_checks : mkenv
|
|
|
|
profile_saved_check : prebuild_checks
|
|
|
|
sanity_check : profile_saved_check
|
|
|
|
rdp_link create_install pinmuxcheck kernelbuild : sanity_check
|
|
|
|
modbuild : kernelbuild rdp_link
|
|
|
|
parallel_targets : modbuild create_install
|
|
|
|
gdbserver : create_install
|
|
|
|
ifneq ($(FB),y)
|
|
buildimage dtbs libcreduction gen_credits linux_tools : parallel_targets gdbserver kernelbuild
|
|
endif
|
|
|
|
.PHONY: mkenv all_postcheck1
|
|
|
|
# These post kernel top level targets can compile concurrently
|
|
parallel_targets: hosttools
|
|
$(MAKE) __parallel_targets
|
|
|
|
__parallel_targets: userspace hosttools
|
|
|
|
dynamic_cfe: hosttools
|
|
|
|
mkenv:
|
|
ifneq ($(MY_MKENV_FIRST_RECURSION),0) # run the recipes only once per build
|
|
@echo "############### parallel build environment start ################";
|
|
@echo "brcm_max_jobs: "$(BRCM_MAX_JOBS)
|
|
@echo "actual_max_jobs: "$(ACTUAL_MAX_JOBS)
|
|
@echo -n "hostname: "; hostname
|
|
@echo -n "uname: "; uname -a
|
|
@which nproc &> /dev/null && (echo -n "processors: "; nproc) || echo "nproc not available"
|
|
@which vmstat &> /dev/null && vmstat -SM || echo "vmstat is not available"
|
|
@which lscpu &> /dev/null && lscpu || echo "lscpu is not available"
|
|
@which xargs &> /dev/null && echo "" | xargs --show-limits
|
|
@echo "################ parallel build environment end ##################"
|
|
|
|
export MY_MKENV_FIRST_RECURSION := 0
|
|
endif #ifneq ($(MY_MKENV_FIRST_RECURSION),0)
|
|
|
|
############################################################################
|
|
#
|
|
# A lot of the stuff in the original Makefile has been moved over
|
|
# to make.common.
|
|
#
|
|
############################################################################
|
|
BUILD_DIR = $(shell pwd)
|
|
include $(BUILD_DIR)/make.common
|
|
|
|
export LINUXDIR = $(BUILD_DIR)/kernel/linux-4.1
|
|
|
|
############################################################################
|
|
#
|
|
# Make info for voice
|
|
#
|
|
############################################################################
|
|
ifneq ($(strip $(BRCM_VOICE_SUPPORT)),)
|
|
export BRCM_VOICE_SUPPORT
|
|
BRCM_VOICE_INCLUDE_MAKE_TARGETS=1
|
|
include $(BUILD_DIR)/make.voice
|
|
endif
|
|
|
|
############################################################################
|
|
#
|
|
# Make info for RDP modules
|
|
#
|
|
############################################################################
|
|
|
|
rdp_link:
|
|
ifneq ($(strip $(RDP_PROJECT)),)
|
|
$(shell echo $(INC_RDP_FLAGS) > $(KERNEL_DIR)/rdp_flags.txt)
|
|
$(MAKE) -C $(RDPSDK_DIR) PROJECT=$(RDP_PROJECT) rdp_link
|
|
endif
|
|
|
|
|
|
rdp_clean:
|
|
ifneq ($(strip $(RDP_PROJECT)),)
|
|
$(MAKE) -C $(RDPSDK_DIR) PROJECT=$(RDP_PROJECT) clean
|
|
ifneq ($(strip $(RELEASE_BUILD)),)
|
|
$(MAKE) -C $(RDPSDK_DIR) PROJECT=$(RDP_PROJECT) distclean
|
|
endif
|
|
endif
|
|
|
|
.PHONY: rdp_link rdp_clean
|
|
|
|
############################################################################
|
|
#
|
|
# Make info for secure OS and ATF
|
|
#
|
|
############################################################################
|
|
ifeq ($(strip $(BCM_OPTEE)),y)
|
|
|
|
export BCM_OPTEE
|
|
export BUILD_ARMTF
|
|
optee:
|
|
$(MAKE) -C $(BUILD_DIR)/secureos optee_os
|
|
ifeq ($(strip $(SECURE_BOOT_ARCH))$(strip $(BUILD_CFE_SUPPORT_HASH_BLOCK)),GEN3y)
|
|
@echo "############### Building final image with HASH ################";
|
|
$(MAKE) -f build/make.image nand
|
|
$(MAKE) -f build/make.image emmc
|
|
else
|
|
@echo "############### Building final image with OPTEE ################";
|
|
$(MAKE) -f Makefile buildimage
|
|
endif
|
|
|
|
optee_clean:
|
|
$(MAKE) -C $(BUILD_DIR)/secureos clean
|
|
endif
|
|
|
|
###########################################################################
|
|
#
|
|
# dsl, kernel defines
|
|
#
|
|
############################################################################
|
|
ifeq ($(strip $(BUILD_NOR_KERNEL_LZ4)),y)
|
|
KERNEL_COMPRESSION=lz4
|
|
else
|
|
KERNEL_COMPRESSION=lzma
|
|
endif
|
|
|
|
ifeq ($(strip $(BRCM_KERNEL_KALLSYMS)),y)
|
|
KERNEL_KALLSYMS=1
|
|
endif
|
|
|
|
#Set up ADSL standard
|
|
export ADSL=$(BRCM_ADSL_STANDARD)
|
|
|
|
#Set up ADSL_PHY_MODE {file | obj}
|
|
export ADSL_PHY_MODE=file
|
|
|
|
#Set up ADSL_SELF_TEST
|
|
export ADSL_SELF_TEST=$(BRCM_ADSL_SELF_TEST)
|
|
|
|
#Set up ADSL_PLN_TEST
|
|
export ADSL_PLN_TEST=$(BUILD_TR69_XBRCM)
|
|
|
|
#WLIMPL command
|
|
ifneq ($(strip $(WLIMPL)),)
|
|
export WLIMPL
|
|
|
|
SVN_IMPL:=$(patsubst IMPL%,%,$(WLIMPL))
|
|
export SVN_IMPL
|
|
#SVNTAG command
|
|
ifneq ($(strip $(SVNTAG)),)
|
|
WL_BASE := $(BUILD_DIR)/bcmdrivers/broadcom/net/wl
|
|
SVNTAG_DIR := $(shell if [ -d $(WL_BASE)/$(SVNTAG)/src ]; then echo 1; else echo 0; fi)
|
|
ifeq ($(strip $(SVNTAG_DIR)),1)
|
|
$(shell ln -sf $(WL_BASE)/$(SVNTAG)/src $(WL_BASE)/impl$(SVN_IMPL))
|
|
else
|
|
$(error There is no directory $(WL_BASE)/$(SVNTAG)/src)
|
|
endif
|
|
endif
|
|
|
|
endif
|
|
|
|
ifneq ($(strip $(BRCM_DRIVER_WIRELESS_USBAP)),)
|
|
WLBUS ?= "usbpci"
|
|
endif
|
|
#default WLBUS for wlan pci driver
|
|
WLBUS ?="pci"
|
|
export WLBUS
|
|
|
|
|
|
############################################################################
|
|
#
|
|
# When there is a directory name with the same name as a Make target,
|
|
# make gets confused. PHONY tells Make to ignore the directory when
|
|
# trying to make these targets.
|
|
#
|
|
############################################################################
|
|
.PHONY: userspace unittests data-model hostTools kernellinks kernelbuild pre_kernelbuild
|
|
|
|
#
|
|
# create a bcm_relversion.h which has our release version number, e.g.
|
|
# 4 10 02. This allows device drivers which support multiple releases
|
|
# with a single driver image to test for version numbers.
|
|
#
|
|
BCM_SWVERSION_FILE := $(KERNEL_DIR)/include/linux/bcm_swversion.h
|
|
BCM_VERSION_LEVEL := $(strip $(BRCM_VERSION))
|
|
BCM_RELEASE_LEVEL := $(strip $(BRCM_RELEASE))
|
|
BCM_RELEASE_LEVEL := $(shell echo $(BCM_RELEASE_LEVEL) | sed -e 's/^0*//')
|
|
BCM_PATCH_LEVEL := $(strip $(shell echo $(BRCM_EXTRAVERSION) | cut -c1-2))
|
|
BCM_PATCH_LEVEL := $(shell echo $(BCM_PATCH_LEVEL) | sed -e 's/^0*//')
|
|
|
|
$(BCM_SWVERSION_FILE): $(BUILD_DIR)/version.make
|
|
ifneq ($(RELEASE_BUILD),)
|
|
@if egrep -q '^BRCM_(VERSION|RELEASE|EXTRAVERSION)=.*[^a-zA-Z0-9]' version.make ; then \
|
|
echo "error ... illegal character detected within version in version.make" ; \
|
|
exit 1 ; \
|
|
fi
|
|
endif
|
|
@echo "creating bcm release version header file"
|
|
@echo "/* IGNORE_BCM_KF_EXCEPTION */" > $(BCM_SWVERSION_FILE)
|
|
@echo "/* this file is automatically generated from top level Makefile */" >> $(BCM_SWVERSION_FILE)
|
|
@echo "#ifndef __BCM_SWVERSION_H__" >> $(BCM_SWVERSION_FILE)
|
|
@echo "#define __BCM_SWVERSION_H__" >> $(BCM_SWVERSION_FILE)
|
|
@echo "#define BCM_REL_VERSION $(BCM_VERSION_LEVEL)" >> $(BCM_SWVERSION_FILE)
|
|
@echo "#define BCM_REL_RELEASE $(BCM_RELEASE_LEVEL)" >> $(BCM_SWVERSION_FILE)
|
|
@echo "#define BCM_REL_PATCH $(BCM_PATCH_LEVEL)" >> $(BCM_SWVERSION_FILE)
|
|
@echo "#define BCM_SW_VERSIONCODE ($(BCM_VERSION_LEVEL)*65536+$(BCM_RELEASE_LEVEL)*256+$(BCM_PATCH_LEVEL))" >> $(BCM_SWVERSION_FILE)
|
|
@echo "#define BCM_SW_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))" >> $(BCM_SWVERSION_FILE)
|
|
@echo "#endif" >> $(BCM_SWVERSION_FILE)
|
|
|
|
BCM_KF_TXT_FILE := $(BUILD_DIR)/kernel/BcmKernelFeatures.txt
|
|
BCM_KF_KCONFIG_FILE := $(KERNEL_DIR)/Kconfig.bcm_kf
|
|
MAKEFNOTES_PL := $(HOSTTOOLS_DIR)/makefpatch/makefnotes.pl
|
|
|
|
havefeatures := $(wildcard $(BCM_KF_TXT_FILE))
|
|
|
|
ifneq ($(strip $(havefeatures)),)
|
|
.PHONY: bcm_kf_auto
|
|
# Add support for compiling vanilla kernel if BCM_KF is unset, to better
|
|
# utilize the Coverity tool.
|
|
# Use "BCM_KF= " in the command line to trigger, e.g.,
|
|
# $make PROFILE=962118GW BCM_KF= kernelbuild
|
|
# Back to normal with the usual command line, e.g.,
|
|
# $make PROFILE=962118GW kernelbuild
|
|
|
|
$(BCM_KF_KCONFIG_FILE) : $(BCM_KF_TXT_FILE) bcm_kf_auto
|
|
perl $(MAKEFNOTES_PL) -kconfig -fl $(BCM_KF_TXT_FILE) > $(BCM_KF_KCONFIG_FILE)
|
|
endif
|
|
|
|
|
|
|
|
|
|
prepare_userspace: sanity_check create_install data-model $(BCM_SWVERSION_FILE) kernellinks rdp_link hosttools
|
|
$(MAKE) -C userspace public-include
|
|
|
|
.PHONY: prepare_userspace
|
|
|
|
userspace: prepare_userspace modbuild
|
|
@echo "USERSPACE STARTED"
|
|
$(MAKE) -C userspace
|
|
@echo "USERSPACE ENDED"
|
|
|
|
#
|
|
# Always run Make in the libcreduction directory. In most non-voice configs,
|
|
# mklibs.py will be invoked to analyze user applications
|
|
# and libraries to eliminate unused functions thereby reducing image size.
|
|
# However, for voice configs, gdb server, oprofile and maybe some other
|
|
# special cases, the libcreduction makefile will just copy unstripped
|
|
# system libraries to fs.install for inclusion in the image.
|
|
#
|
|
libcreduction:
|
|
$(MAKE) -C hostTools/libcreduction install
|
|
|
|
.PHONY : libcreduction menuconfig
|
|
|
|
menuconfig:
|
|
@cd $(INC_KERNEL_BASE); \
|
|
$(MAKE) -C $(HOSTTOOLS_DIR)/scripts/lxdialog HOSTCC=gcc && \
|
|
$(CONFIG_SHELL) $(HOSTTOOLS_DIR)/scripts/Menuconfig $(TARGETS_DIR)/config.in $(PROFILE)
|
|
|
|
|
|
#
|
|
# the userspace apps and libs make their own directories before
|
|
# they install, so they don't depend on this target to make the
|
|
# directory for them anymore.
|
|
#
|
|
create_install:
|
|
-mkdir -p $(PROFILE_DIR)/fs.install/etc
|
|
-mkdir -p $(INSTALL_DIR)/bin
|
|
-mkdir -p $(INSTALL_DIR)/lib
|
|
-mkdir -p $(INSTALL_DIR)/etc/snmp
|
|
-mkdir -p $(INSTALL_DIR)/etc/iproute2
|
|
-mkdir -p $(INSTALL_DIR)/rom/bin
|
|
-mkdir -p $(INSTALL_DIR)/rom/modules
|
|
-mkdir -p $(INSTALL_DIR)/rom/scripts
|
|
|
|
.PHONY: create_install
|
|
|
|
kernellinks: $(KERNEL_INCLUDE_LINK) $(KERNEL_MIPS_INCLUDE_LINK) $(KERNEL_ARM_INCLUDE_LINK)
|
|
|
|
$(KERNEL_INCLUDE_LINK):
|
|
ln -s -f $(KERNEL_DIR)/$(INC_DIR) $(KERNEL_INCLUDE_LINK);
|
|
|
|
$(KERNEL_MIPS_INCLUDE_LINK):
|
|
ln -s -f $(KERNEL_DIR)/arch/mips/$(INC_DIR) $(KERNEL_MIPS_INCLUDE_LINK);
|
|
|
|
$(KERNEL_ARM_INCLUDE_LINK):
|
|
ln -s -f $(KERNEL_DIR)/arch/arm/$(INC_DIR) $(KERNEL_ARM_INCLUDE_LINK);
|
|
|
|
define android_kernel_merge_cfg
|
|
cd $(KERNEL_DIR); \
|
|
ARCH=${ARCH} scripts/kconfig/merge_config.sh -m arch/$(ARCH)/defconfig android/configs/android-base.cfg android/configs/android-recommended.cfg android/configs/android-bcm-recommended.cfg ;
|
|
endef
|
|
|
|
.PHONY: bcmdrivers_autogen clean_bcmdrivers_autogen
|
|
|
|
|
|
BCMD_AG_MAKEFILE:=Makefile.autogen
|
|
BCMD_AG_KCONFIG:=Kconfig.autogen
|
|
BCMD_AG_MAKEFILE_TMP:=$(BCMD_AG_MAKEFILE).tmp
|
|
BCMD_AG_KCONFIG_TMP:=$(BCMD_AG_KCONFIG).tmp
|
|
|
|
bcmdrivers_autogen:
|
|
cd $(BRCMDRIVERS_DIR); echo -e "\n# Automatically generated file -- do not modify manually\n\n" > $(BCMD_AG_KCONFIG_TMP)
|
|
cd $(BRCMDRIVERS_DIR); echo -e "\n# Automatically generated file -- do not modify manually\n\n" > $(BCMD_AG_MAKEFILE_TMP)
|
|
cd $(BRCMDRIVERS_DIR); echo -e "\n\$$(info READING AG MAKEFILE)\n\n" >> $(BCMD_AG_MAKEFILE_TMP)
|
|
alldrivers=""; \
|
|
cd $(BRCMDRIVERS_DIR); \
|
|
for autodetect in $$(find * -type f -name autodetect); do \
|
|
dir=$${autodetect%/*}; \
|
|
driver=$$(grep -i "^DRIVER\|FEATURE:" $$autodetect | awk -F ': *' '{ print $$2 }'); \
|
|
[ $$driver ] || driver=$${dir##*/}; \
|
|
[ $$(echo $$driver | wc -w) -ne 1 ] && echo "Error parsing $$autodetect" >2 && exit 1; \
|
|
echo "Processing $$driver ($$dir)"; \
|
|
DRIVER=$$(echo "$${driver}" | tr '[:lower:]' '[:upper:]'); \
|
|
echo "\$$(eval \$$(call LN_RULE_AG, CONFIG_BCM_$${DRIVER}, $$dir, \$$(LN_NAME)))" >> $(BCMD_AG_MAKEFILE_TMP); \
|
|
if [ -e $$dir/Kconfig.autodetect ]; then \
|
|
echo "menu \"$${DRIVER}\"" >> $(BCMD_AG_KCONFIG_TMP);\
|
|
echo "source \"../../bcmdrivers/$$dir/Kconfig.autodetect\"" >> $(BCMD_AG_KCONFIG_TMP); \
|
|
echo "endmenu " >> $(BCMD_AG_KCONFIG_TMP); \
|
|
echo "" >> $(BCMD_AG_KCONFIG_TMP);\
|
|
fi; \
|
|
true; \
|
|
done; \
|
|
duplicates=$$(echo $$alldrivers | tr " " "\n" | sort | uniq -d | tr "\n" " "); echo $$duplicates; \
|
|
[ $V ] && echo "alldrivers: $$alldrivers" && echo "duplicates: $$duplicates" || true; \
|
|
if [ $$duplicates ]; then \
|
|
echo "ERROR: duplicate drivers found in autodetect -- $$duplicates" >&2; \
|
|
exit 1; \
|
|
fi
|
|
@# only update the $(BCMD_AG_KCONFIG) and makefile.autogen files if they haven't changed (to prevent rebuilding):
|
|
cd $(BRCMDRIVERS_DIR); [ -e $(BCMD_AG_MAKEFILE) ] && cmp -s $(BCMD_AG_MAKEFILE) $(BCMD_AG_MAKEFILE_TMP) || mv $(BCMD_AG_MAKEFILE_TMP) $(BCMD_AG_MAKEFILE)
|
|
cd $(BRCMDRIVERS_DIR);[ -e $(BCMD_AG_KCONFIG) ] && cmp -s $(BCMD_AG_KCONFIG) $(BCMD_AG_KCONFIG_TMP) || mv $(BCMD_AG_KCONFIG_TMP) $(BCMD_AG_KCONFIG)
|
|
cd $(BRCMDRIVERS_DIR); rm -f $(BCMD_AG_MAKEFILE_TMP) $(BCMD_AG_KCONFIG_TMP)
|
|
|
|
clean1: clean_bcmdrivers_autogen
|
|
|
|
clean_bcmdrivers_autogen: kernel_clean
|
|
rm -f $(BRCMDRIVERS_DIR)/$(BCMD_AG_MAKEFILE_TMP) $(BRCMDRIVERS_DIR)/$(BCMD_AG_KCONFIG_TMP) $(BRCMDRIVERS_DIR)/$(BCMD_AG_MAKEFILE) $(BRCMDRIVERS_DIR)/$(BCMD_AG_KCONFIG)
|
|
|
|
|
|
.PHONY: bcmdrivers_autogen kernellinks
|
|
|
|
pre_kernelbuild: $(KERNEL_DIR)/.pre_kernelbuild;
|
|
|
|
define kernel_cfg_rm_bcm_kf
|
|
sed -i.bak -e "/^CONFIG_BCM_.*=[my]/d" $(KERNEL_DIR)/.config && \
|
|
sed -i.bak -e "/default [my]/d" $(BCM_KF_KCONFIG_FILE) && \
|
|
$(MAKE) -C $(KERNEL_DIR) oldnoconfig
|
|
endef
|
|
|
|
ifdef BCM_KF
|
|
prek $(KERNEL_DIR)/.pre_kernelbuild: $(BCM_SWVERSION_FILE) $(BCM_KF_KCONFIG_FILE) bcmdrivers_autogen kernellinks
|
|
else
|
|
prek $(KERNEL_DIR)/.pre_kernelbuild: $(BCM_KF_KCONFIG_FILE)
|
|
endif
|
|
echo
|
|
echo -------------------------------------------
|
|
echo ... starting kernel build at $(KERNEL_DIR)
|
|
echo ARCH=$(ARCH)
|
|
echo KERNEL_ARCH=$(KERNEL_ARCH)
|
|
echo BCM_SWVERSION_FILE=$(BCM_SWVERSION_FILE)
|
|
echo BCM_KF_KCONFIG_FILE=$(BCM_KF_KCONFIG_FILE)
|
|
echo PROFILE_KERNEL_VER is $(PROFILE_KERNEL_VER)
|
|
echo BCM_KF is $(if $(BCM_KF),,un)defined
|
|
cd $(INC_KERNEL_BASE); \
|
|
if [ ! -e $(KERNEL_DIR)/.untar_complete ]; then \
|
|
echo "Untarring original Linux kernel source: $(LINUX_ZIP_FILE)"; \
|
|
(tar xkfpj $(LINUX_ZIP_FILE) 2> /dev/null || true); \
|
|
touch $(KERNEL_DIR)/.untar_complete; \
|
|
fi && \
|
|
#$(GENDEFCONFIG_CMD) $(PROFILE_PATH) ${MAKEFLAGS} && \
|
|
#cp -f $(KERNEL_DIR)/arch/$(ARCH)/defconfig $(KERNEL_DIR)/.config && \
|
|
#$(if $(strip $(BRCM_ANDROID)), $(call android_kernel_merge_cfg), true) && \
|
|
$(MAKE) -C $(KERNEL_DIR) oldnoconfig && \
|
|
$(if $(BCM_KF), true, $(call kernel_cfg_rm_bcm_kf)) && \
|
|
touch $@;
|
|
|
|
ifdef BCM_KF
|
|
kernelbuild: rdp_link shared_link
|
|
else
|
|
kernelbuild: shared_link
|
|
endif
|
|
CURRENT_ARCH=$(KERNEL_ARCH) TOOLCHAIN_TOP= $(MAKE) inner_kernelbuild
|
|
|
|
ifdef BCM_KF
|
|
inner_kernelbuild: pre_kernelbuild hnd_dongle
|
|
else
|
|
inner_kernelbuild: pre_kernelbuild
|
|
endif
|
|
$(MAKE) $(PARALLEL_BUILD) -C $(KERNEL_DIR)
|
|
|
|
linux_tools: linux_tools_perf
|
|
|
|
ifneq ($(strip $(BUILD_LINUX_PERF)),)
|
|
linux_tools_perf: pre_kernelbuild
|
|
$(MAKE) -C $(KERNEL_DIR)/tools/perf WERROR=0
|
|
install -m 755 $(KERNEL_DIR)/tools/perf/perf $(INSTALL_DIR)/bin
|
|
else
|
|
linux_tools_perf:
|
|
endif
|
|
|
|
|
|
kernel_config_test: pre_kernelbuild
|
|
@echo
|
|
@echo "Building $(DIR)/config_$(PROFILE)";
|
|
-@mkdir $(DIR) 2> /dev/null || true
|
|
sort $(KERNEL_DIR)/.config | grep -v "^\#.*$$" | grep -v "^[[:space:]]*$$" > $(DIR)/config_$(PROFILE)
|
|
@echo " ... done building $(DIR)/config_$(PROFILE)";
|
|
|
|
.PHONY: kernel_config_test
|
|
|
|
ifneq ($(findstring $(strip $(KERNEL_ARCH)),aarch64 arm mips mipsel),)
|
|
.PHONY:dtbs
|
|
dtbs:
|
|
CURRENT_ARCH=$(KERNEL_ARCH) TOOLCHAIN_TOP= $(MAKE) inner_dtbs
|
|
inner_dtbs:bcmdrivers_autogen
|
|
echo "Build dts for chip $(BRCM_CHIP)... "
|
|
@echo "$(MAKE) -C $(KERNEL_DIR) boot=$(DTS_DIR) dtbs"
|
|
$(call pre_kernelbuild)
|
|
$(MAKE) -C $(KERNEL_DIR) boot=$(DTS_DIR) dtbs
|
|
DTBS := dtbs
|
|
|
|
.PHONY:dtbs_clean
|
|
dtbs_clean:
|
|
CURRENT_ARCH=$(KERNEL_ARCH) TOOLCHAIN_TOP= $(MAKE) inner_dtbs_clean
|
|
inner_dtbs_clean:
|
|
@echo "Clean dts for chip $(BRCM_CHIP)... "
|
|
$(MAKE) -C $(DTS_DIR)/dts/$(BRCM_CHIP) dtbs_clean
|
|
DTBS_CLEAN := dtbs_clean
|
|
else
|
|
DTBS :=
|
|
DTBS_CLEAN :=
|
|
endif
|
|
|
|
|
|
kernel: sanity_check create_install kernelbuild hosttools buildimage
|
|
|
|
shared_link:
|
|
if [ ! -L '$(SRCBASE)/router/hnd_shared' ]; then \
|
|
ln -sf $(SRCBASE)/shared $(SRCBASE)/router/hnd_shared; \
|
|
fi
|
|
if [ ! -L '$(SRCBASE)/router-sysdep/hnd_shared' ]; then \
|
|
ln -sf $(SRCBASE)/shared $(SRCBASE)/router-sysdep/hnd_shared; \
|
|
fi
|
|
|
|
modbuild: shared_link
|
|
CURRENT_ARCH=$(KERNEL_ARCH) TOOLCHAIN_TOP= $(MAKE) inner_modbuild
|
|
|
|
PREBUILT_EXTRAMOD=$(shell if [ ! -f "$(HND_SRC)/upb.mak" -o "$(PRBM)" = "1" ]; then echo 1; else echo 0; fi)
|
|
export PREBUILT_EXTRAMOD
|
|
export PRBM_EXT=_preb
|
|
PREBUILT_BCMBIN=$(PREBUILT_EXTRAMOD)
|
|
export PREBUILT_BCMBIN
|
|
export PRBM_DIR=prebuilt
|
|
|
|
inner_modbuild:
|
|
@echo "******************** Starting modbuild ********************";
|
|
rm -rf $(HND_SRC)/targets/$(PROFILE)/modules
|
|
cd $(KERNEL_DIR); $(MAKE) $(PARALLEL_BUILD) modules && $(MAKE) modules_install
|
|
@echo "******************** DONE modbuild ********************";
|
|
|
|
mocamodbuild:
|
|
cd $(KERNEL_DIR); $(MAKE) M=$(INC_MOCACFGDRV_PATH) modules
|
|
mocamodclean:
|
|
cd $(KERNEL_DIR); $(MAKE) M=$(INC_MOCACFGDRV_PATH) clean
|
|
|
|
adslmodbuild:
|
|
cd $(KERNEL_DIR); $(MAKE) M=$(INC_ADSLDRV_PATH) modules
|
|
adslmodbuildclean:
|
|
cd $(KERNEL_DIR); $(MAKE) M=$(INC_ADSLDRV_PATH) clean
|
|
|
|
spumodbuild:
|
|
cd $(KERNEL_DIR); $(MAKE) M=$(INC_SPUDRV_PATH) modules
|
|
spumodbuildclean:
|
|
cd $(KERNEL_DIR); $(MAKE) M=$(INC_SPUDRV_PATH) clean
|
|
|
|
pwrmngtmodbuild:
|
|
cd $(KERNEL_DIR); $(MAKE) M=$(INC_PWRMNGTDRV_PATH) modules
|
|
pwrmngtmodclean:
|
|
cd $(KERNEL_DIR); $(MAKE) M=$(INC_PWRMNGTDRV_PATH) clean
|
|
|
|
enetmodbuild:
|
|
cd $(KERNEL_DIR); $(MAKE) M=$(INC_ENETDRV_PATH) modules
|
|
enetmodclean:
|
|
cd $(KERNEL_DIR); $(MAKE) M=$(INC_ENETDRV_PATH) clean
|
|
|
|
.PHONY: modbuild inner_modbuild mocamodbuild adslmodbuild spumodbuild pwrmngtmodbuild enetmodbuild modules eponmodbuild gponmodbuild adslmodule
|
|
|
|
eponmodbuild:
|
|
cd $(KERNEL_DIR); $(MAKE) M=$(INC_EPONDRV_PATH) modules
|
|
eponmodclean:
|
|
cd $(KERNEL_DIR); $(MAKE) M=$(INC_EPONDRV_PATH) clean
|
|
|
|
gponmodbuild:
|
|
cd $(KERNEL_DIR); $(MAKE) M=$(INC_GPON_PATH) modules
|
|
gponmodclean:
|
|
cd $(KERNEL_DIR); $(MAKE) M=$(INC_GPON_PATH) clean
|
|
|
|
modules: sanity_check create_install modbuild hosttools buildimage
|
|
|
|
adslmodule: adslmodbuild
|
|
adslmoduleclean: adslmodbuildclean
|
|
|
|
spumodule: spumodbuild
|
|
spumoduleclean: spumodbuildclean
|
|
|
|
pwrmngtmodule: pwrmngtmodbuild
|
|
pwrmngtmoduleclean: pwrmngtmodclean
|
|
|
|
CMS2BBF_APP := cms2bbf
|
|
CMS2BBF_DIR := $(HOSTTOOLS_DIR)/$(CMS2BBF_APP)
|
|
|
|
cms2bbf_build:
|
|
ifneq ($(strip $(BUILD_PROFILE_SUPPORTED_DATA_MODEL)),)
|
|
ifneq ($(wildcard $(CMS2BBF_DIR)/Makefile),)
|
|
$(MAKE) -C hostTools build_cms2bbf
|
|
else
|
|
@echo "Skip $(CMS2BBF_APP) (sources not found)"
|
|
endif
|
|
else
|
|
@echo "Skip $(CMS2BBF_APP) (not configured)"
|
|
endif
|
|
|
|
data-model: cms2bbf_build
|
|
ifeq ($(strip $(BUILD_BRCM_HNDROUTER_ALONE)),)
|
|
$(MAKE) -C data-model
|
|
else
|
|
# skip for HND router builds
|
|
@true
|
|
endif
|
|
|
|
unittests:
|
|
$(MAKE) -C unittests
|
|
|
|
unittests_run:
|
|
$(MAKE) -C unittests unittests_run
|
|
|
|
doxygen_build:
|
|
$(MAKE) -C hostTools build_doxygen
|
|
|
|
doxygen_docs: doxygen_build
|
|
rm -rf $(BUILD_DIR)/docs/doxygen;
|
|
mkdir $(BUILD_DIR)/docs/doxygen;
|
|
cd hostTools/doxygen/bin; ./doxygen
|
|
|
|
doxygen_clean:
|
|
-$(MAKE) -C hostTools clean_doxygen
|
|
|
|
|
|
|
|
############################################################################
|
|
#
|
|
# Build user applications depending on if they are
|
|
# specified in the profile. Most of these BUILD_ checks should eventually get
|
|
# moved down to the userspace directory.
|
|
#
|
|
############################################################################
|
|
|
|
ifneq ($(strip $(BUILD_VCONFIG)),)
|
|
export BUILD_VCONFIG=y
|
|
endif
|
|
|
|
|
|
ifneq ($(strip $(BUILD_GDBSERVER)),)
|
|
gdbserver:
|
|
install -m 755 $(TOOLCHAIN_TOP)/usr/$(TOOLCHAIN_PREFIX)/target_utils/gdbserver $(INSTALL_DIR)/bin
|
|
else
|
|
gdbserver:
|
|
endif
|
|
|
|
ifneq ($(strip $(BUILD_ETHWAN)),)
|
|
export BUILD_ETHWAN=y
|
|
endif
|
|
|
|
ifneq ($(strip $(BUILD_4_LEVEL_QOS)),)
|
|
export BUILD_4_LEVEL_QOS=y
|
|
endif
|
|
|
|
hnd_dongle: version_info
|
|
$(MAKE) -C $(BUILD_DIR)/router version
|
|
$(MAKE) -C $(BUILD_DIR)/router pciefd
|
|
|
|
ifneq ($(strip $(BUILD_HND_NIC)),)
|
|
$(MAKE) -C $(BRCMDRIVERS_DIR)/broadcom/net/wl/bcm9$(BRCM_CHIP) version
|
|
else
|
|
@true
|
|
endif
|
|
|
|
# Leave it for the future when soap server is decoupled from cfm
|
|
ifneq ($(strip $(BUILD_SOAP)),)
|
|
ifeq ($(strip $(BUILD_SOAP_VER)),2)
|
|
soapserver:
|
|
$(MAKE) -C $(BROADCOM_DIR)/SoapToolkit/SoapServer $(BUILD_SOAP)
|
|
else
|
|
soap:
|
|
$(MAKE) -C $(BROADCOM_DIR)/soap $(BUILD_SOAP)
|
|
endif
|
|
else
|
|
soap:
|
|
endif
|
|
|
|
|
|
|
|
ifneq ($(strip $(BUILD_DIAGAPP)),)
|
|
diagapp:
|
|
$(MAKE) -C $(BROADCOM_DIR)/diagapp $(BUILD_DIAGAPP)
|
|
else
|
|
diagapp:
|
|
endif
|
|
|
|
|
|
|
|
ifneq ($(strip $(BUILD_IPPD)),)
|
|
ippd:
|
|
$(MAKE) -C $(BROADCOM_DIR)/ippd $(BUILD_IPPD)
|
|
else
|
|
ippd:
|
|
endif
|
|
|
|
|
|
ifneq ($(strip $(BUILD_PORT_MIRRORING)),)
|
|
export BUILD_PORT_MIRRORING=1
|
|
else
|
|
export BUILD_PORT_MIRRORING=0
|
|
endif
|
|
|
|
ifeq ($(BRCM_USE_SUDO_IFNOT_ROOT),y)
|
|
BRCM_BUILD_USR=$(shell whoami)
|
|
BRCM_BUILD_USR1=$(shell sudo touch foo;ls -l foo | awk '{print $$3}';sudo rm -rf foo)
|
|
else
|
|
BRCM_BUILD_USR=root
|
|
endif
|
|
|
|
hosttools:
|
|
$(MAKE) -C $(HOSTTOOLS_DIR)
|
|
|
|
hosttools_nandcfe:
|
|
$(MAKE) -C $(HOSTTOOLS_DIR) perlmods mkjffs2 build_imageutil build_cmplzma build_secbtutils build_mtdutils
|
|
|
|
.PHONY: hosttools hosttools_nandcfe
|
|
|
|
############################################################################
|
|
#
|
|
# IKOS defines
|
|
#
|
|
############################################################################
|
|
|
|
CMS_VERSION_FILE=$(BUILD_DIR)/userspace/public/include/version.h
|
|
|
|
ifeq ($(strip $(BRCM_IKOS)),y)
|
|
FS_COMPRESSION=-noD -noI -no-fragments
|
|
else
|
|
FS_COMPRESSION=
|
|
endif
|
|
|
|
export BRCM_IKOS FS_COMPRESSION
|
|
|
|
|
|
|
|
# IKOS Emulator build that does not include the CFE boot loader.
|
|
# Edit targets/ikos/ikos and change the chip and board id to desired values.
|
|
# Then build: make PROFILE=ikos ikos
|
|
ikos:
|
|
@echo -e '#define SOFTWARE_VERSION ""\n#define RELEASE_VERSION ""\n#define PSI_VERSION ""\n' > $(CMS_VERSION_FILE)
|
|
@-mv -f $(FSSRC_DIR)/etc/profile $(FSSRC_DIR)/etc/profile.dontuse >& /dev/null
|
|
@-mv -f $(FSSRC_DIR)/etc/init.d $(FSSRC_DIR)/etc/init.dontuse >& /dev/null
|
|
@-mv -f $(FSSRC_DIR)/etc/inittab $(FSSRC_DIR)/etc/inittab.dontuse >& /dev/null
|
|
@sed -e 's/^::respawn.*sh.*/::respawn:-\/bin\/sh/' $(FSSRC_DIR)/etc/inittab.dontuse > $(FSSRC_DIR)/etc/inittab
|
|
@if [ ! -a $(CFE_FILE) ] ; then echo "no cfe" > $(CFE_FILE); echo "no cfe" > $(CFE_FILE).del; fi
|
|
@-rm $(HOSTTOOLS_DIR)/bcmImageBuilder >& /dev/null
|
|
$(MAKE) PROFILE=$(PROFILE)
|
|
@-rm $(HOSTTOOLS_DIR)/bcmImageBuilder >& /dev/null
|
|
@mv -f $(FSSRC_DIR)/etc/profile.dontuse $(FSSRC_DIR)/etc/profile
|
|
@-mv -f $(FSSRC_DIR)/etc/init.dontuse $(FSSRC_DIR)/etc/init.d >& /dev/null
|
|
@-mv -f $(FSSRC_DIR)/etc/inittab.dontuse $(FSSRC_DIR)/etc/inittab >& /dev/null
|
|
@cd $(PROFILE_DIR); \
|
|
$(KOBJCOPY) --output-target=srec vmlinux vmlinux.srec; \
|
|
xxd $(FS_KERNEL_IMAGE_NAME) | grep "^00000..:" | xxd -r > bcmtag.bin; \
|
|
$(KOBJCOPY) --output-target=srec --input-target=binary --change-addresses=0xb8010000 bcmtag.bin bcmtag.srec; \
|
|
$(KOBJCOPY) --output-target=srec --input-target=binary --change-addresses=0xb8010100 rootfs.img rootfs.srec; \
|
|
rm bcmtag.bin; \
|
|
grep -v "^S7" vmlinux.srec > bcm9$(BRCM_CHIP)_$(PROFILE).srec; \
|
|
grep "^S3" bcmtag.srec >> bcm9$(BRCM_CHIP)_$(PROFILE).srec; \
|
|
grep -v "^S0" rootfs.srec >> bcm9$(BRCM_CHIP)_$(PROFILE).srec
|
|
@if [ ! -a $(CFE_FILE).del ] ; then rm -f $(CFE_FILE) $(CFE_FILE).del; fi
|
|
@echo -e "\nAn image without CFE for the IKOS emulator has been built. It is named"
|
|
@echo -e "targets/$(PROFILE)/bcm9$(BRCM_CHIP)_$(PROFILE).srec\n"
|
|
|
|
# IKOS Emulator build that includes the CFE boot loader.
|
|
# Both Linux and CFE boot loader toolchains need to be installed.
|
|
# Edit targets/ikos/ikos and change the chip and board id to desired values.
|
|
# Then build: make PROFILE=ikos ikoscfe
|
|
ikoscfe:
|
|
@echo -e '#define SOFTWARE_VERSION ""\n#define RELEASE_VERSION ""\n#define PSI_VERSION ""\n' > $(CMS_VERSION_FILE)
|
|
@-mv -f $(FSSRC_DIR)/etc/profile $(FSSRC_DIR)/etc/profile.dontuse >& /dev/null
|
|
$(MAKE) PROFILE=$(PROFILE)
|
|
@mv -f $(FSSRC_DIR)/etc/profile.dontuse $(FSSRC_DIR)/etc/profile
|
|
$(MAKE) -C $(BL_BUILD_DIR) clean
|
|
$(MAKE) -C $(BL_BUILD_DIR)
|
|
$(MAKE) -C $(BL_BUILD_DIR) ikos_finish
|
|
cd $(PROFILE_DIR); \
|
|
echo -n "** no kernel **" > kernelfile; \
|
|
$(HOSTTOOLS_DIR)/bcmImageBuilder $(BRCM_ENDIAN_FLAGS) --output $(CFE_FS_KERNEL_IMAGE_NAME) --chip $(BRCM_CHIP) --board $(BRCM_BOARD_ID) --blocksize $(BRCM_FLASHBLK_SIZE) --cfefile $(BL_BUILD_DIR)/cfe$(BRCM_CHIP).bin --rootfsfile rootfs.img --kernelfile kernelfile --dtbfile $(DTB_FILE) --include-cfe; \
|
|
$(HOSTTOOLS_DIR)/createimg.pl --set boardid=$(BRCM_BOARD_ID) voiceboardid=$(BRCM_VOICE_BOARD_ID) numbermac=$(BRCM_NUM_MAC_ADDRESSES) macaddr=$(BRCM_BASE_MAC_ADDRESS) tp=$(BRCM_MAIN_TP_NUM) psisize=$(BRCM_PSI_SIZE) --inputfile=$(CFE_FS_KERNEL_IMAGE_NAME) --outputfile=$(FLASH_IMAGE_NAME) --nvramfile $(HOSTTOOLS_DIR)/nvram.h --nvramdefsfile $(HOSTTOOLS_DIR)/nvram_defaults.h --config=$(HOSTTOOLS_DIR)/local_install/conf/$(TOOLCHAIN_PREFIX).conf;\
|
|
$(HOSTTOOLS_DIR)/addvtoken --endian $(ARCH_ENDIAN) $(FLASH_IMAGE_NAME) $(FLASH_IMAGE_NAME).w; \
|
|
$(KOBJCOPY) --output-target=srec --input-target=binary --change-addresses=0xb8000000 $(FLASH_IMAGE_NAME).w $(FLASH_IMAGE_NAME).srec; \
|
|
$(KOBJCOPY) --output-target=srec vmlinux vmlinux.srec; \
|
|
@rm kernelfile; \
|
|
grep -v "^S7" vmlinux.srec > bcm9$(BRCM_CHIP)_$(PROFILE).srec; \
|
|
grep "^S3" $(BL_BUILD_DIR)/cferam$(BRCM_CHIP).srec >> bcm9$(BRCM_CHIP)_$(PROFILE).srec; \
|
|
grep -v "^S0" $(FLASH_IMAGE_NAME).srec >> bcm9$(BRCM_CHIP)_$(PROFILE).srec; \
|
|
grep -v "^S7" vmlinux.srec > bcm9$(BRCM_CHIP)_$(PROFILE).utram.srec; \
|
|
grep -v "^S0" $(BL_BUILD_DIR)/cferam$(BRCM_CHIP).srec >> bcm9$(BRCM_CHIP)_$(PROFILE).utram.srec;
|
|
@echo -e "\nAn image with CFE for the IKOS emulator has been built. It is named"
|
|
@echo -e "targets/$(PROFILE)/bcm9$(BRCM_CHIP)_$(PROFILE).srec"
|
|
@echo -e "\nBefore testing with the IKOS emulator, this build can be unit tested"
|
|
@echo -e "with an existing chip and board as follows."
|
|
@echo -e "1. Flash targets/$(PROFILE)/$(FLASH_IMAGE_NAME).w onto an existing board."
|
|
@echo -e "2. Start the EPI EDB debugger. At the edbice prompt, enter:"
|
|
@echo -e " edbice> fr m targets/$(PROFILE)/bcm9$(BRCM_CHIP)_$(PROFILE).utram.srec"
|
|
@echo -e " edbice> r"
|
|
@echo -e "3. Program execution will start at 0xb8000000 (or 0xbfc00000) and,"
|
|
@echo -e " if successful, will enter the Linux shell.\n"
|
|
|
|
|
|
############################################################################
|
|
#
|
|
# Generate the credits
|
|
#
|
|
############################################################################
|
|
ifneq ($(LIVE_UPDATE_RSA),)
|
|
KEY_PATH= $(SRCBASE)/../../../key
|
|
endif
|
|
|
|
gen_credits:
|
|
cd $(RELEASE_DIR); \
|
|
if [ -e gen_credits.pl ]; then \
|
|
perl gen_credits.pl; \
|
|
fi
|
|
|
|
genrsa:
|
|
ifneq ($(LIVE_UPDATE_RSA),)
|
|
ifneq (,$(wildcard $(KEY_PATH)/private*.pem))
|
|
for f in $(KEY_PATH)/private*.pem; do \
|
|
rsa_idx=$$(echo $${f} | sed "s/.*\///" | sed "s/private//" | sed "s/.pem//"); \
|
|
$$(openssl sha1 -sign $(KEY_PATH)/private$${rsa_idx}.pem -out image/$(IMGNAME)_ubi_rsa$${rsa_idx}.zip $(HND_SRC)/targets/$(PROFILE)/$(IMGNAME)_ubi.w); \
|
|
$$(openssl sha1 -sign $(KEY_PATH)/private$${rsa_idx}.pem -out image/$(IMGNAME)_cferom_ubi_rsa$${rsa_idx}.zip $(HND_SRC)/targets/$(PROFILE)/$(IMGNAME)_cferom_ubi.w); \
|
|
done
|
|
else
|
|
ifneq (,$(wildcard $(SRC_ROOT)/../../buildtools/private.pem))
|
|
openssl sha1 -sign $(SRC_ROOT)/../../buildtools/private.pem -out image/$(IMGNAME)_ubi_rsa.zip $(HND_SRC)/targets/$(PROFILE)/$(IMGNAME)_ubi.w
|
|
openssl sha1 -sign $(SRC_ROOT)/../../buildtools/private.pem -out image/$(IMGNAME)_cferom_ubi_rsa.zip $(HND_SRC)/targets/$(PROFILE)/$(IMGNAME)_cferom_ubi.w
|
|
endif
|
|
endif
|
|
else
|
|
ifneq (,$(wildcard $(SRC_ROOT)/../../buildtools/private.pem))
|
|
openssl sha1 -sign $(SRC_ROOT)/../../buildtools/private.pem -out image/$(IMGNAME)_ubi_rsa.zip $(HND_SRC)/targets/$(PROFILE)/$(IMGNAME)_ubi.w
|
|
openssl sha1 -sign $(SRC_ROOT)/../../buildtools/private.pem -out image/$(IMGNAME)_cferom_ubi_rsa.zip $(HND_SRC)/targets/$(PROFILE)/$(IMGNAME)_cferom_ubi.w
|
|
endif
|
|
endif
|
|
|
|
############################################################################
|
|
#
|
|
# PinMuxCheck
|
|
#
|
|
############################################################################
|
|
pinmuxcheck:
|
|
ifeq ($(wildcard $(HOSTTOOLS_DIR)/PinMuxCheck/Makefile),)
|
|
@echo "No PinMuxCheck needed"
|
|
else
|
|
cd $(HOSTTOOLS_DIR); $(MAKE) build_pinmuxcheck;
|
|
endif
|
|
|
|
.PHONY: pinmuxcheck
|
|
|
|
############################################################################
|
|
#
|
|
# This is where we build the image
|
|
#
|
|
############################################################################
|
|
ifeq ($(strip $(SECURE_BOOT_HWA)),y)
|
|
SECUREHDR:=--securehdr "$(SECURE_BOOT_HWA_OPT)"
|
|
else
|
|
SECUREHDR:=--securehdr " "
|
|
endif
|
|
|
|
buildfs:
|
|
cd $(TARGETS_DIR); ./buildFS;
|
|
|
|
execstack_exec=$(shell which execstack)
|
|
|
|
# Emmc images are built for BOOTROM enabled devices only
|
|
ifeq ($(strip $(BUILD_EMMC_IMG)),y)
|
|
ifeq ($(strip $(BRCM_CHIP)),63138)
|
|
BLD_EMMC_BTROM_BOOT_IMAGES=y
|
|
else
|
|
ifeq ($(strip $(BTRM_BOOT_ONLY)),y)
|
|
BLD_EMMC_BTROM_BOOT_IMAGES=y
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
# build_images_unsecure and build_images_secure functions takes 6 argmuments
|
|
# arg0 - function name, ignored
|
|
# arg1 - concatination of B_$(BUILD_NAND_IMG_BLKSIZE_$(3)KB)_$(BRCM_FLASH_NAND_LAYOUT_SPLIT)_L_$(BUILD_NAND_IMG_BLKSIZE_$(3)KB)_$(BRCM_FLASH_NAND_LAYOUT_PUREUBI)
|
|
# 3 above stands for the block size e.g. 128,256,512 and 1024
|
|
# arg2 - cferom file
|
|
# arg3 - block size
|
|
# arg4 - bootofs
|
|
# arg5 - precferom or securehdr
|
|
# arg6 - --unsecurehdr
|
|
# arg7 - u$(BRCM_FLASH_NAND_ROOTFS_UBIFS)
|
|
# arg8 - s$(BRCM_FLASH_NAND_ROOTFS_SQUBI)
|
|
|
|
|
|
BUILD_NAND_IMG_BLKSIZE_ALL := $(filter BUILD_NAND_IMG_BLKSIZE_%,$(.VARIABLES))
|
|
BUILD_NAND_IMG_BLKSIZE=$(foreach var,$(BUILD_NAND_IMG_BLKSIZE_ALL),$(if $(findstring $($(var)),y),$(subst KB,,$(subst BUILD_NAND_IMG_BLKSIZE_,,$(var)))))
|
|
#BRCM_FLASH_NAND_LAYOUT:= $(filter BRCM_FLASH_NAND_LAYOUT_%,$(.VARIABLES))
|
|
#BRCM_FLASH_NAND_ROOTFS := $(filter BRCM_FLASH_NAND_ROOTFS_%,$(.VARIABLES))
|
|
|
|
|
|
define build_images_unsecure
|
|
$(if $(findstring B_y, $(1)), \
|
|
$(if $(findstring uy, $(7)), \
|
|
$(HOSTTOOLS_DIR)/scripts/bcmImageMaker --cferom $(2) --blocksize $(FLASH_NAND_BLOCK_$(3)KB) --bootofs $(4) --bootsize $(FLASH_NAND_BLOCK_$(3)KB) --ubifs --bootfs bootfs$(3)kb.img --rootfs ubi_rootfs$(3)kb.img --image $(FLASH_NAND_CFEROM_FS_IMAGE_NAME_$(3))_ubi --fsonly $(FLASH_NAND_FS_IMAGE_NAME_$(3))_ubi $(6) $(5);)\
|
|
#$(if $(findstring sy, $(8)), \
|
|
# $(HOSTTOOLS_DIR)/scripts/bcmImageMaker --cferom $(2) --blocksize $(FLASH_NAND_BLOCK_$(3)KB) --bootofs $(4) --bootsize $(FLASH_NAND_BLOCK_$(3)KB) --squbifs --bootfs bootfs$(3)kb.img --rootfs squbi_rootfs$(3)kb.img --image $(FLASH_NAND_CFEROM_FS_IMAGE_NAME_$(3))_squbi --fsonly $(FLASH_NAND_FS_IMAGE_NAME_$(3))_squbi $(6) $(5);)\
|
|
)
|
|
$(if $(findstring L_y, $(1)), \
|
|
#$(if $(findstring uy, $(7)), \
|
|
# $(HOSTTOOLS_DIR)/scripts/bcmImageMaker --cferom $(2) --blocksize $(FLASH_NAND_BLOCK_$(3)KB) --bootofs $(4) --bootsize $(FLASH_NAND_BLOCK_$(3)KB) --rootfs ubi_rootfs$(3)kb_pureubi.img --image $(FLASH_NAND_CFEROM_FS_IMAGE_NAME_$(3))_pureubi --fsonly $(FLASH_NAND_FS_IMAGE_NAME_$(3))_pureubi --ubionlyimage $(6) $(5);)\
|
|
#$(if $(findstring sy, $(8)), \
|
|
# $(HOSTTOOLS_DIR)/scripts/bcmImageMaker --cferom $(2) --blocksize $(FLASH_NAND_BLOCK_$(3)KB) --bootofs $(4) --bootsize $(FLASH_NAND_BLOCK_$(3)KB) --rootfs squbi_rootfs$(3)kb_pureubi.img --image $(FLASH_NAND_CFEROM_FS_IMAGE_NAME_$(3))_puresqubi --fsonly $(FLASH_NAND_FS_IMAGE_NAME_$(3))_puresqubi --ubionlyimage $(6) $(5);)\
|
|
)
|
|
endef
|
|
|
|
define build_images_secure
|
|
$(if $(findstring B_y, $(1)), \
|
|
$(if $(findstring uy, $(6)),\
|
|
$(HOSTTOOLS_DIR)/scripts/bcmImageMaker --cferom $(2) --cfesecrom $(8) --blocksize $(FLASH_NAND_BLOCK_$(3)KB) --bootofs $(4) --bootsize $(FLASH_NAND_BLOCK_$(3)KB) --ubifs --bootfs bootfs$(3)kb_secureboot.img --rootfs ubi_rootfs$(3)kb.img --image $(FLASH_NAND_CFEROM_FS_IMAGE_NAME_$(3))_ubi_secureboot --fsonly $(FLASH_NAND_FS_IMAGE_NAME_$(3))_ubi_secureboot $(5);)\
|
|
#$(if $(findstring sy, $(7)),\
|
|
# $(HOSTTOOLS_DIR)/scripts/bcmImageMaker --cferom $(2) --cfesecrom $(8) --blocksize $(FLASH_NAND_BLOCK_$(3)KB) --bootofs $(4) --bootsize $(FLASH_NAND_BLOCK_$(3)KB) --squbifs --bootfs bootfs$(3)kb_secureboot.img --rootfs squbi_rootfs$(3)kb.img --image $(FLASH_NAND_CFEROM_FS_IMAGE_NAME_$(3))_squbi_secureboot --fsonly $(FLASH_NAND_FS_IMAGE_NAME_$(3))_squbi_secureboot $(5);)\
|
|
)
|
|
$(if $(findstring L_y, $(1)), \
|
|
# w/wo CFEROM + UBI CFERAM + UBI VMLINUX + UBIFS
|
|
#$(if $(findstring uy, $(6)),\
|
|
# $(HOSTTOOLS_DIR)/scripts/bcmImageMaker --cferom $(2) --cfesecrom $(8) --blocksize $(FLASH_NAND_BLOCK_$(3)KB) --bootofs $(4) --bootsize $(FLASH_NAND_BLOCK_$(3)KB) --bootfs bootfs$(3)kb_secureboot.img --rootfs ubi_rootfs$(3)kb_pureubi.img --image $(FLASH_NAND_CFEROM_FS_IMAGE_NAME_$(3))_pureubi_secureboot --fsonly $(FLASH_NAND_FS_IMAGE_NAME_$(3))_pureubi_secureboot $(5);)\
|
|
#$(if $(findstring sy, $(7)),\
|
|
# $(HOSTTOOLS_DIR)/scripts/bcmImageMaker --cferom $(2) --cfesecrom $(8) --blocksize $(FLASH_NAND_BLOCK_$(3)KB) --bootofs $(4) --bootsize $(FLASH_NAND_BLOCK_$(3)KB) --bootfs bootfs$(3)kb_secureboot.img --rootfs squbi_rootfs$(3)kb_pureubi.img --image $(FLASH_NAND_CFEROM_FS_IMAGE_NAME_$(3))_puresqubi_secureboot --fsonly $(FLASH_NAND_FS_IMAGE_NAME_$(3))_puresqubi_secureboot $(5);)\
|
|
)
|
|
endef
|
|
|
|
|
|
define build_cfeonly_images_unsecure
|
|
$(HOSTTOOLS_DIR)/scripts/bcmImageMaker --cferom $(2) --blocksize $(FLASH_NAND_BLOCK_$(3)KB) --bootofs $(4) --bootsize $(FLASH_NAND_BLOCK_$(3)KB) --rootfs rootfs$(3)kb.img --image $(FLASH_BASE_IMAGE_NAME)_nand_cfeonly.$(3) $(6) $(5);\
|
|
$(TARGETS_DIR)/buildUBI -u $(PROFILE_DIR)/ubi_cfe.ini -m $(TARGET_FS)/../metadata.bin -f $(PROFILE_DIR)/filestruct_cfe.bin -t $(TARGET_FS);\
|
|
# $(HOSTTOOLS_DIR)/mtd-utils*/ubinize -v -o $(PROFILE_DIR)/ubi_rootfs$(3)kb_cferam_pureubi.img -m 2048 -p $(FLASH_NAND_BLOCK_$(3)KB) $(PROFILE_DIR)/ubi_cfe.ini;\
|
|
# $(HOSTTOOLS_DIR)/scripts/bcmImageMaker --cferom $(2) --blocksize $(FLASH_NAND_BLOCK_$(3)KB) --bootofs $(4) --bootsize $(FLASH_NAND_BLOCK_$(3)KB) --rootfs ubi_rootfs$(3)kb_cferam_pureubi.img --image $(FLASH_BASE_IMAGE_NAME)_nand_cfeonly_pureubi.$(3) $(6) $(5);
|
|
endef
|
|
|
|
|
|
|
|
define build_cfeonly_images_secure
|
|
$(HOSTTOOLS_DIR)/scripts/bcmImageMaker --cferom $(2) --cfesecrom $(6) --blocksize $(FLASH_NAND_BLOCK_$(3)KB) --bootofs $(4) --bootsize $(FLASH_NAND_BLOCK_$(3)KB) --rootfs rootfs$(3)kb_secureboot.img --image $(FLASH_BASE_IMAGE_NAME)_nand_cfeonly_secureboot.$(3) $(5);\
|
|
$(TARGETS_DIR)/buildUBI -u $(PROFILE_DIR)/ubi_cfe.ini -m $(TARGET_FS)/../metadata.bin -f $(PROFILE_DIR)/filestruct_cfe.bin -t $(TARGET_FS);\
|
|
# $(HOSTTOOLS_DIR)/mtd-utils*/ubinize -v -o $(PROFILE_DIR)/ubi_rootfs$(3)kb_cferam_pureubi.img -m 2048 -p $(FLASH_NAND_BLOCK_$(3)KB) $(PROFILE_DIR)/ubi_cfe.ini;\
|
|
# $(HOSTTOOLS_DIR)/scripts/bcmImageMaker --cferom $(2) --cfesecrom $(6) --blocksize $(FLASH_NAND_BLOCK_$(3)KB) --bootofs $(4) --bootsize $(FLASH_NAND_BLOCK_$(3)KB) --rootfs ubi_rootfs$(3)kb_cferam_pureubi.img --image $(FLASH_BASE_IMAGE_NAME)_nand_cfeonly_pureubi_secureboot.$(3) $(5);
|
|
endef
|
|
|
|
cfebuild: sanity_check
|
|
ifeq ($(strip $(SECURE_BOOT_TURNKEY)),y)
|
|
@echo Start cfebuild
|
|
if [ "$(FORCE)" == "1" -o ! -e $(LAST_PROFILE_COOKIE) -o -e $(LAST_PROFILE_COOKIE) -a targets/cfe/cfe$(BRCM_CHIP)rom.bin -ot $(LAST_PROFILE_COOKIE) ]; then \
|
|
$(MAKE) -C cfe/build/broadcom/bcm63xx_rom $(BRCM_CHIP)_SEC_TK; \
|
|
fi
|
|
else
|
|
@echo Start cfebuild
|
|
if [ "$(FORCE)" == "1" -o ! -e $(LAST_PROFILE_COOKIE) -o -e $(LAST_PROFILE_COOKIE) -a targets/cfe/cfe$(BRCM_CHIP)rom.bin -ot $(LAST_PROFILE_COOKIE) ]; then \
|
|
$(MAKE) -C cfe/build/broadcom/bcm63xx_rom $(BRCM_CHIP); \
|
|
fi
|
|
endif
|
|
|
|
|
|
ifneq ($(if $(wildcard cfe/cfe/board),$(BUILD_DYNAMIC_CFE)),)
|
|
dynamic_cfe: build_cfe_nand build_cfe_emmc build_cfe_sec_nand build_cfe_sec_emmc build_cfe_nand_tk build_cfe_emmc_tk
|
|
|
|
else
|
|
dynamic_cfe:
|
|
|
|
endif
|
|
|
|
dynamic_cfe_clean:
|
|
-rm -rf cfe/build/broadcom/build_cfe*
|
|
-rm -f cfe/build/broadcom/bcm63xx_rom/*.S
|
|
|
|
build_cfe_nand: cfe/build/broadcom/build_cferom_nand/Makefile cfe/build/broadcom/build_cferam_nand/Makefile hosttools untar_cfe rdp_link
|
|
$(MAKE) -C cfe/build/broadcom/build_cferom_nand/ RAM_BUILD=../build_cferam_nand BLD_NAND=1 BRCM_CHIP=$(BRCM_CHIP) PROFILE_FILE=$(PROFILE_FILE)
|
|
|
|
|
|
ifeq ($(strip $(SECURE_BOOT_TURNKEY)),y)
|
|
build_cfe_nand_tk: cfe/build/broadcom/build_cferom_nand_tk/Makefile cfe/build/broadcom/build_cferam_nand_tk/Makefile hosttools untar_cfe rdp_link
|
|
$(MAKE) -C cfe/build/broadcom/build_cferom_nand_tk/ RAM_BUILD=../build_cferam_nand_tk BLD_NAND=1 BRCM_CHIP=$(BRCM_CHIP) PROFILE_FILE=$(PROFILE_FILE) BLD_SEC_TK=$(BLD_SEC_TK)
|
|
build_cfe_emmc_tk: cfe/build/broadcom/build_cferom_emmc_tk/Makefile cfe/build/broadcom/build_cferam_emmc_tk/Makefile hosttools untar_cfe rdp_link
|
|
$(MAKE) -C cfe/build/broadcom/build_cferom_emmc_tk/ RAM_BUILD=../build_cferam_emmc_tk BLD_EMMC=1 BRCM_CHIP=$(BRCM_CHIP) PROFILE_FILE=$(PROFILE_FILE) BLD_SEC_TK=$(BLD_SEC_TK)
|
|
else
|
|
build_cfe_nand_tk:
|
|
build_cfe_emmc_tk:
|
|
endif
|
|
|
|
ifeq ($(strip $(BUILD_EMMC_IMG)),y)
|
|
build_cfe_emmc: cfe/build/broadcom/build_cferom_emmc/Makefile cfe/build/broadcom/build_cferam_emmc/Makefile hosttools untar_cfe rdp_link
|
|
$(MAKE) -C cfe/build/broadcom/build_cferom_emmc/ RAM_BUILD=../build_cferam_emmc BLD_EMMC=1 BRCM_CHIP=$(BRCM_CHIP) PROFILE_FILE=$(PROFILE_FILE)
|
|
else
|
|
build_cfe_emmc:
|
|
@echo "no CFE for emmc needed"
|
|
endif
|
|
|
|
build_cfe_sec_nand: cfe/build/broadcom/build_cferom_sec_nand/Makefile cfe/build/broadcom/build_cferam_sec_nand/Makefile hosttools untar_cfe
|
|
|
|
build_cfe_sec_emmc: cfe/build/broadcom/build_cferom_sec_emmc/Makefile cfe/build/broadcom/build_cferam_sec_emmc/Makefile hosttools untar_cfe
|
|
|
|
untar_cfe: cfe/cfe/api
|
|
cd cfe && tar xfzk cfe*.tar.gz 2> /dev/null || true
|
|
|
|
.PHONY: untar_cfe cfe/cfe/api
|
|
|
|
cfe/build/broadcom/build_cferom_%/Makefile : cfe/build/broadcom/bcm63xx_rom/Makefile
|
|
mkdir -p ${@D}
|
|
cat $< > $@
|
|
|
|
cfe/build/broadcom/build_cferam_%/Makefile : cfe/build/broadcom/bcm63xx_ram/Makefile
|
|
mkdir -p ${@D}
|
|
cat $< > $@
|
|
|
|
.PHONY: dynamic_cfe dynamic_cfe_clean build_cfe_nand build_cfe_nand_tk build_cfe_emmc_tk build_cfe_emmc build_cfe_sec_nand build_cfe_sec_emmc
|
|
|
|
ifeq ($(FB),y)
|
|
buildimage: $(DTBS) libcreduction gen_credits
|
|
else
|
|
buildimage: dynamic_cfe kernelbuild $(DTBS) libcreduction gen_credits linux_tools
|
|
endif
|
|
ifneq ($(strip $(BCA_HNDROUTER)),)
|
|
$(MAKE) -C $(BRCMDRIVERS_DIR)/broadcom/net/wl/bcm9$(BRCM_CHIP) bcm_headers_install
|
|
endif
|
|
ifneq ($(strip $(BRCM_PERMIT_STDCPP)),)
|
|
@if ls $(PROFILE_DIR)/fs.install/lib/libstdc* 2> /dev/null ; then \
|
|
echo -e "libstdc++ must be replaced with STLPORT"; \
|
|
echo -e "override with BRCM_PERMIT_STDCPP=1 if ok"; \
|
|
false; \
|
|
fi
|
|
endif
|
|
ifeq ($(BUILD_DISABLE_EXEC_STACK),y)
|
|
ifneq ($(execstack_exec),)
|
|
@echo no need to build execstack $(execstack_exec)
|
|
else
|
|
make -C $(HOSTTOOLS_DIR) build_execstack;
|
|
endif
|
|
endif
|
|
make -C router strips;
|
|
cd $(TARGETS_DIR); ./buildFS;
|
|
ifneq ($(BUILD_MODSW_BEE),)
|
|
cd $(TARGETS_DIR); ./buildFS_BEE;
|
|
cd $(TARGETS_DIR); ./buildFS;
|
|
endif
|
|
ifneq ($(BUILD_MODSW_EXAMPLEEE),)
|
|
cd $(TARGETS_DIR); ./buildFS_EXAMPLEEE;
|
|
endif
|
|
ifeq ($(strip $(BRCM_RAMDISK_BOOT_EN)),y)
|
|
cd $(TARGETS_DIR); ./buildFS_RD
|
|
endif
|
|
cd $(TARGETS_DIR); \
|
|
export CFE_RAM_FILE CFE_RAM_EMMC_FILE ; \
|
|
./buildFS2
|
|
|
|
|
|
# @mkdir -p $(IMAGES_DIR)
|
|
$(MAKE) buildimage_final
|
|
|
|
|
|
shell:
|
|
@echo "You are in a shell that includes the Makefile environment. "exit" to return to normal"
|
|
PS1='!_' bash --norc --noprofile
|
|
|
|
buildimage_final:
|
|
ifeq ($(strip $(BRCM_KERNEL_ROOTFS)),all)
|
|
|
|
###############
|
|
# NAND IMAGES #
|
|
###############
|
|
ifeq ($(strip $(BTRM_BOOT_ONLY)),y)
|
|
@echo -e "No XIP to flash capability. Bootrom boot only. Build unsecure bootrom boot"
|
|
|
|
###################################################
|
|
# NAND UBI and JFFS2 UNSECURE BOOTROM BOOT IMAGES #
|
|
###################################################
|
|
ifeq ($(strip $(BUILD_NAND_IMG_BLKSIZE_16KB)),y)
|
|
$(HOSTTOOLS_DIR)/scripts/bcmImageMaker --cferom $(CFE_ROM_FILE) --blocksize $(FLASH_NAND_BLOCK_16KB) --bootofs $(FLASH_BOOT_OFS) --bootsize $(FLASH_NAND_BLOCK_16KB) --ubifs --bootfs bootfs16kb.img --rootfs ubi_rootfs16kb.img --image $(FLASH_NAND_CFEROM_FS_IMAGE_NAME_16)_ubi --fsonly $(FLASH_NAND_FS_IMAGE_NAME_16)_ubi --unsecurehdr $(PRE_CFE_ROM)
|
|
# $(HOSTTOOLS_DIR)/scripts/bcmImageMaker --cferom $(CFE_ROM_FILE) --blocksize $(FLASH_NAND_BLOCK_16KB) --bootofs $(FLASH_BOOT_OFS) --bootsize $(FLASH_NAND_BLOCK_16KB) --squbifs --bootfs bootfs16kb.img --rootfs squbi_rootfs16kb.img --image $(FLASH_NAND_CFEROM_FS_IMAGE_NAME_16)_squbi --fsonly $(FLASH_NAND_FS_IMAGE_NAME_16)_squbi --unsecurehdr $(PRE_CFE_ROM)
|
|
endif
|
|
$(foreach bnib,$(BUILD_NAND_IMG_BLKSIZE), $(call build_images_unsecure,B_$(BRCM_FLASH_NAND_LAYOUT_SPLIT)_L_$(BRCM_FLASH_NAND_LAYOUT_PUREUBI),$(CFE_ROM_FILE),$(bnib),$(FLASH_BOOT_OFS),$(PRE_CFE_ROM),--unsecurehdr,u$(BRCM_FLASH_NAND_ROOTFS_UBIFS),s$(BRCM_FLASH_NAND_ROOTFS_SQUBI)))
|
|
|
|
else
|
|
|
|
######################################
|
|
# NAND UBI and JFFS2 XIP BOOT IMAGES #
|
|
######################################
|
|
ifeq ($(strip $(BUILD_NAND_IMG_BLKSIZE_16KB)),y)
|
|
$(HOSTTOOLS_DIR)/scripts/bcmImageMaker --cferom $(CFE_ROM_FILE) --blocksize $(FLASH_NAND_BLOCK_16KB) --bootofs $(FLASH_BOOT_OFS) --bootsize $(FLASH_NAND_BLOCK_16KB) --ubifs --bootfs bootfs16kb.img --rootfs ubi_rootfs16kb.img --image $(FLASH_NAND_CFEROM_FS_IMAGE_NAME_16)_ubi --fsonly $(FLASH_NAND_FS_IMAGE_NAME_16)_ubi $(PRE_CFE_ROM)
|
|
# $(HOSTTOOLS_DIR)/scripts/bcmImageMaker --cferom $(CFE_ROM_FILE) --blocksize $(FLASH_NAND_BLOCK_16KB) --bootofs $(FLASH_BOOT_OFS) --bootsize $(FLASH_NAND_BLOCK_16KB) --squbifs --bootfs bootfs16kb.img --rootfs squbi_rootfs16kb.img --image $(FLASH_NAND_CFEROM_FS_IMAGE_NAME_16)_squbi --fsonly $(FLASH_NAND_FS_IMAGE_NAME_16)_squbi $(PRE_CFE_ROM)
|
|
endif
|
|
$(foreach bnib,$(BUILD_NAND_IMG_BLKSIZE), $(call build_images_unsecure, B_$(BRCM_FLASH_NAND_LAYOUT_SPLIT)_L_$(BRCM_FLASH_NAND_LAYOUT_PUREUBI),$(CFE_ROM_FILE),$(bnib),$(FLASH_BOOT_OFS),$(PRE_CFE_ROM),,u$(BRCM_FLASH_NAND_ROOTFS_UBIFS),s$(BRCM_FLASH_NAND_ROOTFS_SQUBI)))
|
|
|
|
|
|
endif
|
|
|
|
|
|
#########################################
|
|
# NAND UBI and JFFS2 SECURE BOOT IMAGES #
|
|
#########################################
|
|
ifeq ($(strip $(BUILD_SECURE_BOOT)),y)
|
|
ifeq ($(strip $(BUILD_NAND_IMG_BLKSIZE_16KB)),y)
|
|
ifeq ($(strip $(BRCM_CHIP)),63268)
|
|
# NOTE: 63268 small page nand bootsize is 128KB on purpose (ie $(FLASH_NAND_BLOCK_128KB)). do not change
|
|
$(HOSTTOOLS_DIR)/scripts/bcmImageMaker --cferom $(CFE_ROM_FILE) --blocksize $(FLASH_NAND_BLOCK_16KB) --bootofs $(FLASH_BOOT_OFS) --bootsize $(FLASH_NAND_BLOCK_128KB) --ubifs --bootfs bootfs16kb_secureboot.img --rootfs ubi_rootfs16kb.img --image $(FLASH_NAND_CFEROM_FS_IMAGE_NAME_16)_ubi_secureboot --fsonly $(FLASH_NAND_FS_IMAGE_NAME_16)_ubi_secureboot $(SECUREHDR)
|
|
# $(HOSTTOOLS_DIR)/scripts/bcmImageMaker --cferom $(CFE_ROM_FILE) --blocksize $(FLASH_NAND_BLOCK_16KB) --bootofs $(FLASH_BOOT_OFS) --bootsize $(FLASH_NAND_BLOCK_128KB) --squbifs --bootfs bootfs16kb_secureboot.img --rootfs squbi_rootfs16kb.img --image $(FLASH_NAND_CFEROM_FS_IMAGE_NAME_16)_squbi_secureboot --fsonly $(FLASH_NAND_FS_IMAGE_NAME_16)_squbi_secureboot $(SECUREHDR)
|
|
else
|
|
$(HOSTTOOLS_DIR)/scripts/bcmImageMaker --cferom $(CFE_ROM_FILE) --cfesecrom $(CFESEC_ROM_FILE) --blocksize $(FLASH_NAND_BLOCK_16KB) --bootofs $(FLASH_BOOT_OFS) --bootsize $(FLASH_NAND_BLOCK_16KB) --ubifs --bootfs bootfs16kb_secureboot.img --rootfs ubi_rootfs16kb.img --image $(FLASH_NAND_CFEROM_FS_IMAGE_NAME_16)_ubi_secureboot --fsonly $(FLASH_NAND_FS_IMAGE_NAME_16)_ubi_secureboot $(SECUREHDR)
|
|
# $(HOSTTOOLS_DIR)/scripts/bcmImageMaker --cferom $(CFE_ROM_FILE) --cfesecrom $(CFESEC_ROM_FILE) --blocksize $(FLASH_NAND_BLOCK_16KB) --bootofs $(FLASH_BOOT_OFS) --bootsize $(FLASH_NAND_BLOCK_16KB) --squbifs --bootfs bootfs16kb_secureboot.img --rootfs squbi_rootfs16kb.img --image $(FLASH_NAND_CFEROM_FS_IMAGE_NAME_16)_squbi_secureboot --fsonly $(FLASH_NAND_FS_IMAGE_NAME_16)_squbi_secureboot $(SECUREHDR)
|
|
endif
|
|
endif
|
|
$(foreach bnib,$(BUILD_NAND_IMG_BLKSIZE), $(call build_images_secure, B_$(BRCM_FLASH_NAND_LAYOUT_SPLIT)_L_$(BRCM_FLASH_NAND_LAYOUT_PUREUBI),$(CFE_ROM_FILE),$(bnib),$(FLASH_BOOT_OFS),$(SECUREHDR),u$(BRCM_FLASH_NAND_ROOTFS_UBIFS),s$(BRCM_FLASH_NAND_ROOTFS_SQUBI),$(CFESEC_ROM_FILE)))
|
|
|
|
endif
|
|
|
|
ifeq ($(strip $(SKIP_TIMESTAMP_IMAGE)),)
|
|
# copy images to images directory and add a timestamp
|
|
find $(PROFILE_DIR) -name *_nand_cferom_*.w -printf "%f\n" | while read name; do cp $(PROFILE_DIR)/$$name $(IMAGES_DIR)/$${name/.w/_$(BRCM_RELEASETAG)-$(shell date '+%y%m%d_%H%M').w}; done
|
|
endif
|
|
|
|
endif
|
|
|
|
######################
|
|
# EMMC IMAGES #
|
|
######################
|
|
ifneq ($(findstring _$(strip $(BRCM_KERNEL_ROOTFS))_,_all_),)
|
|
ifeq ($(strip $(BUILD_EMMC_IMG)),y)
|
|
#########################################
|
|
# EMMC UNSECURE BOOT EXT4/Squash IMAGES #
|
|
#########################################
|
|
ifeq ($(strip $(BLD_EMMC_BTROM_BOOT_IMAGES)),y)
|
|
cp -vf $(CFE_RAM_EMMC_FILE) $(TARGET_BOOTFS)/cferam.000
|
|
cd $(TARGETS_DIR); ./buildFS_EMMC $(TARGET_BOOTFS)
|
|
if [ -f $(PROFILE_DIR)/filestruct_full_emmc.bin ]; then \
|
|
$(BUILD_SBI_UNSEC) --in $(CFE_ROM_EMMC_FILE) --out $(PROFILE_DIR)/.tmpimage; \
|
|
cd $(PROFILE_DIR); \
|
|
echo "Creating fs_kernel eMMC images"; \
|
|
$(HOSTTOOLS_DIR)/bcmImageBuilder $(BRCM_ENDIAN_FLAGS) --output $(FS_KERNEL_IMAGE_NAME)_emmc_ext4 --chip $(or $(TAG_OVERRIDE),$(BRCM_CHIP)) --board $(BRCM_BOARD_ID) --blocksize 2048 --image-version $(IMAGE_VERSION) --cfefile $(PROFILE_DIR)/.tmpimage --rootfsfile $(PROFILE_DIR)/rootfs.ext4 --bootfsfile $(PROFILE_DIR)/filestruct_full_emmc.bin --mdatafile $(PROFILE_DIR)/metadata.bin ; \
|
|
$(HOSTTOOLS_DIR)/bcmImageBuilder $(BRCM_ENDIAN_FLAGS) --output $(FS_KERNEL_IMAGE_NAME)_emmc_squashfs --chip $(or $(TAG_OVERRIDE),$(BRCM_CHIP)) --board $(BRCM_BOARD_ID) --blocksize 2048 --image-version $(IMAGE_VERSION) --cfefile $(PROFILE_DIR)/.tmpimage --rootfsfile $(PROFILE_DIR)/rootfs.img --bootfsfile $(PROFILE_DIR)/filestruct_full_emmc.bin --mdatafile $(PROFILE_DIR)/metadata.bin ; \
|
|
echo "Creating cfe_fs_kernel eMMC images"; \
|
|
$(HOSTTOOLS_DIR)/bcmImageBuilder $(BRCM_ENDIAN_FLAGS) --output $(CFE_FS_KERNEL_IMAGE_NAME)_emmc_ext4 --chip $(or $(TAG_OVERRIDE),$(BRCM_CHIP)) --board $(BRCM_BOARD_ID) --blocksize 2048 --image-version $(IMAGE_VERSION) --cfefile $(PROFILE_DIR)/.tmpimage --rootfsfile $(PROFILE_DIR)/rootfs.ext4 --bootfsfile $(PROFILE_DIR)/filestruct_full_emmc.bin --mdatafile $(PROFILE_DIR)/metadata.bin --include-cfe; \
|
|
$(HOSTTOOLS_DIR)/bcmImageBuilder $(BRCM_ENDIAN_FLAGS) --output $(CFE_FS_KERNEL_IMAGE_NAME)_emmc_squashfs --chip $(or $(TAG_OVERRIDE),$(BRCM_CHIP)) --board $(BRCM_BOARD_ID) --blocksize 2048 --image-version $(IMAGE_VERSION) --cfefile $(PROFILE_DIR)/.tmpimage --rootfsfile $(PROFILE_DIR)/rootfs.img --bootfsfile $(PROFILE_DIR)/filestruct_full_emmc.bin --mdatafile $(PROFILE_DIR)/metadata.bin --include-cfe; \
|
|
echo "Generating default NVRAM binary"; \
|
|
$(HOSTTOOLS_DIR)/createimg.pl --set boardid=$(BRCM_BOARD_ID) voiceboardid=$(BRCM_VOICE_BOARD_ID) numbermac=$(BRCM_NUM_MAC_ADDRESSES) macaddr=$(BRCM_BASE_MAC_ADDRESS) tp=$(BRCM_MAIN_TP_NUM) psisize=$(BRCM_PSI_SIZE) logsize=$(BRCM_LOG_SECTION_SIZE) auxfsprcnt=$(BRCM_AUXFS_PERCENT) gponsn=$(BRCM_GPON_SERIAL_NUMBER) gponpw=$(BRCM_GPON_PASSWORD) --nvramfile $(HOSTTOOLS_DIR)/nvram.h --nvramdefsfile $(HOSTTOOLS_DIR)/nvram_defaults.h --config=$(HOSTTOOLS_DIR)/local_install/conf/$(TOOLCHAIN_PREFIX).conf --outputfile=$(BRCM_BOARD_ID)_nvram.bin --output_nvram_bin_only; \
|
|
echo "Generating eMMC raw whole partition images"; \
|
|
$(HOSTTOOLS_DIR)/create_emmc_rawimg.py --rootfs_file $(PROFILE_DIR)/rootfs.ext4 --bootfs_file $(PROFILE_DIR)/filestruct_full_emmc.bin --mdata_file $(PROFILE_DIR)/metadata.bin --nvram_file $(PROFILE_DIR)/$(BRCM_BOARD_ID)_nvram.bin --data_sizeMB 10 --rawfullimg_file $(FLASH_IMAGE_NAME_EMMC_DATA_PHYSPART)_ext4.w --cferom_file $(PROFILE_DIR)/.tmpimage --cferom_offsetkB 64 --rawcfeimg_file $(FLASH_IMAGE_NAME_EMMC_BOOT_PHYSPART).w --emmcdefs_file $(INC_BRCMSHARED_PUB_PATH)/$(BRCM_BOARD)/emmc_base_defs.h; \
|
|
$(HOSTTOOLS_DIR)/create_emmc_rawimg.py --rootfs_file $(PROFILE_DIR)/rootfs.img --bootfs_file $(PROFILE_DIR)/filestruct_full_emmc.bin --mdata_file $(PROFILE_DIR)/metadata.bin --nvram_file $(PROFILE_DIR)/$(BRCM_BOARD_ID)_nvram.bin --data_sizeMB 10 --rawfullimg_file $(FLASH_IMAGE_NAME_EMMC_DATA_PHYSPART)_squash.w --emmcdefs_file $(INC_BRCMSHARED_PUB_PATH)/$(BRCM_BOARD)/emmc_base_defs.h; \
|
|
rm -vf $(PROFILE_DIR)/.tmpimage; \
|
|
fi;
|
|
#######################################
|
|
# EMMC SECURE BOOT EXT4 IMAGES #
|
|
#######################################
|
|
ifeq ($(strip $(BUILD_SECURE_BOOT)),y)
|
|
$(BUILD_SBI_NOHDR) --in $(CFESEC_RAM_EMMC_FILE) -out $(TARGET_BOOTFS)/secram.000
|
|
echo -e "/secram.000" >> $(HOSTTOOLS_DIR)/nocomprlist
|
|
ifeq ($(strip $(SECURE_BOOT_ARCH)),GEN3)
|
|
$(BUILD_SBI_NOHDR_MFG) --in $(CFESEC_RAM_EMMC_FILE) -out $(TARGET_BOOTFS)/secmfg.000
|
|
echo -e "/secmfg.000" >> $(HOSTTOOLS_DIR)/nocomprlist
|
|
endif
|
|
cp -vf $(CFESEC_RAM_EMMC_FILE) $(TARGET_BOOTFS)/cferam.000
|
|
cd $(TARGETS_DIR); ./buildFS_EMMC $(TARGET_BOOTFS)
|
|
|
|
if [ -f $(PROFILE_DIR)/filestruct_full_emmc.bin ]; then \
|
|
$(HOSTTOOLS_DIR)/scripts/bcmImageMaker --cferom $(CFE_ROM_EMMC_FILE) --cfesecrom $(CFESEC_ROM_EMMC_FILE) --blocksize 2048 --bootofs $(FLASH_BOOT_OFS) --bootsize $(FLASH_NAND_BLOCK_128KB) --image $(PROFILE_DIR)/.tmpimage $(SECUREHDR) --mediatype emmc; \
|
|
cd $(PROFILE_DIR); \
|
|
echo "Creating Secure fs_kernel eMMC images"; \
|
|
$(HOSTTOOLS_DIR)/bcmImageBuilder $(BRCM_ENDIAN_FLAGS) --output $(FS_KERNEL_IMAGE_NAME)_emmc_ext4_secureboot --chip $(or $(TAG_OVERRIDE),$(BRCM_CHIP)) --board $(BRCM_BOARD_ID) --blocksize 2048 --image-version $(IMAGE_VERSION) --cfefile $(PROFILE_DIR)/.tmpimage.bin --rootfsfile $(PROFILE_DIR)/rootfs.ext4 --bootfsfile $(PROFILE_DIR)/filestruct_full_emmc.bin --mdatafile $(PROFILE_DIR)/metadata.bin ; \
|
|
$(HOSTTOOLS_DIR)/bcmImageBuilder $(BRCM_ENDIAN_FLAGS) --output $(FS_KERNEL_IMAGE_NAME)_emmc_squashfs_secureboot --chip $(or $(TAG_OVERRIDE),$(BRCM_CHIP)) --board $(BRCM_BOARD_ID) --blocksize 2048 --image-version $(IMAGE_VERSION) --cfefile $(PROFILE_DIR)/.tmpimage.bin --rootfsfile $(PROFILE_DIR)/rootfs.img --bootfsfile $(PROFILE_DIR)/filestruct_full_emmc.bin --mdatafile $(PROFILE_DIR)/metadata.bin ; \
|
|
echo "Creating Secure cfe_fs_kernel eMMC images"; \
|
|
$(HOSTTOOLS_DIR)/bcmImageBuilder $(BRCM_ENDIAN_FLAGS) --output $(CFE_FS_KERNEL_IMAGE_NAME)_emmc_ext4_secureboot --chip $(or $(TAG_OVERRIDE),$(BRCM_CHIP)) --board $(BRCM_BOARD_ID) --blocksize 2048 --image-version $(IMAGE_VERSION) --cfefile $(PROFILE_DIR)/.tmpimage.bin --rootfsfile $(PROFILE_DIR)/rootfs.ext4 --bootfsfile $(PROFILE_DIR)/filestruct_full_emmc.bin --mdatafile $(PROFILE_DIR)/metadata.bin --include-cfe; \
|
|
$(HOSTTOOLS_DIR)/bcmImageBuilder $(BRCM_ENDIAN_FLAGS) --output $(CFE_FS_KERNEL_IMAGE_NAME)_emmc_squashfs_secureboot --chip $(or $(TAG_OVERRIDE),$(BRCM_CHIP)) --board $(BRCM_BOARD_ID) --blocksize 2048 --image-version $(IMAGE_VERSION) --cfefile $(PROFILE_DIR)/.tmpimage.bin --rootfsfile $(PROFILE_DIR)/rootfs.img --bootfsfile $(PROFILE_DIR)/filestruct_full_emmc.bin --mdatafile $(PROFILE_DIR)/metadata.bin --include-cfe; \
|
|
echo "Generating default NVRAM binary"; \
|
|
$(HOSTTOOLS_DIR)/createimg.pl --set boardid=$(BRCM_BOARD_ID) voiceboardid=$(BRCM_VOICE_BOARD_ID) numbermac=$(BRCM_NUM_MAC_ADDRESSES) macaddr=$(BRCM_BASE_MAC_ADDRESS) tp=$(BRCM_MAIN_TP_NUM) psisize=$(BRCM_PSI_SIZE) logsize=$(BRCM_LOG_SECTION_SIZE) auxfsprcnt=$(BRCM_AUXFS_PERCENT) gponsn=$(BRCM_GPON_SERIAL_NUMBER) gponpw=$(BRCM_GPON_PASSWORD) --nvramfile $(HOSTTOOLS_DIR)/nvram.h --nvramdefsfile $(HOSTTOOLS_DIR)/nvram_defaults.h --config=$(HOSTTOOLS_DIR)/local_install/conf/$(TOOLCHAIN_PREFIX).conf --outputfile=$(BRCM_BOARD_ID)_nvram.bin --output_nvram_bin_only; \
|
|
echo "Generating Secure eMMC raw whole partition images"; \
|
|
$(HOSTTOOLS_DIR)/create_emmc_rawimg.py --rootfs_file $(PROFILE_DIR)/rootfs.ext4 --bootfs_file $(PROFILE_DIR)/filestruct_full_emmc.bin --mdata_file $(PROFILE_DIR)/metadata.bin --nvram_file $(PROFILE_DIR)/$(BRCM_BOARD_ID)_nvram.bin --data_sizeMB 10 --rawfullimg_file $(FLASH_IMAGE_NAME_EMMC_DATA_PHYSPART)_ext4_secureboot.w --cferom_file $(PROFILE_DIR)/.tmpimage.bin --cferom_offsetkB 0 --rawcfeimg_file $(FLASH_IMAGE_NAME_EMMC_BOOT_PHYSPART)_secureboot.w --emmcdefs_file $(INC_BRCMSHARED_PUB_PATH)/$(BRCM_BOARD)/emmc_base_defs.h; \
|
|
$(HOSTTOOLS_DIR)/create_emmc_rawimg.py --rootfs_file $(PROFILE_DIR)/rootfs.img --bootfs_file $(PROFILE_DIR)/filestruct_full_emmc.bin --mdata_file $(PROFILE_DIR)/metadata.bin --nvram_file $(PROFILE_DIR)/$(BRCM_BOARD_ID)_nvram.bin --data_sizeMB 10 --rawfullimg_file $(FLASH_IMAGE_NAME_EMMC_DATA_PHYSPART)_squash_secureboot.w --emmcdefs_file $(INC_BRCMSHARED_PUB_PATH)/$(BRCM_BOARD)/emmc_base_defs.h; \
|
|
rm -f $(PROFILE_DIR)/.tmpimage.bin; \
|
|
fi;
|
|
endif
|
|
endif
|
|
|
|
endif
|
|
endif
|
|
|
|
##############################
|
|
# NOR FLASH SQUASHFS IMAGES #
|
|
##############################
|
|
ifneq ($(strip $(HND_ROUTER)),y)
|
|
ifneq ($(findstring _$(strip $(BRCM_KERNEL_ROOTFS))_,_all_ _squashfs_),)
|
|
cd $(PROFILE_DIR); \
|
|
cp $(KERNEL_DIR)/vmlinux . ; \
|
|
$(KSTRIP) --remove-section=.note --remove-section=.comment vmlinux; \
|
|
$(KOBJCOPY) -O binary vmlinux vmlinux.bin; \
|
|
$(HOSTTOOLS_DIR)/cmplzma -k -2 -$(KERNEL_COMPRESSION) vmlinux vmlinux.bin vmlinux.lz; \
|
|
$(HOSTTOOLS_DIR)/bcmImageBuilder $(BRCM_ENDIAN_FLAGS) --output $(FS_KERNEL_IMAGE_NAME) --chip $(or $(TAG_OVERRIDE),$(BRCM_CHIP)) --board $(BRCM_BOARD_ID) --blocksize $(BRCM_FLASHBLK_SIZE) --image-version $(IMAGE_VERSION) --cfefile $(CFE_FILE) --rootfsfile rootfs.img --kernelfile vmlinux.lz --dtbfile $(DTB_FILE); \
|
|
$(HOSTTOOLS_DIR)/bcmImageBuilder $(BRCM_ENDIAN_FLAGS) --output $(CFE_FS_KERNEL_IMAGE_NAME) --chip $(or $(TAG_OVERRIDE),$(BRCM_CHIP)) --board $(BRCM_BOARD_ID) --blocksize $(BRCM_FLASHBLK_SIZE) --image-version $(IMAGE_VERSION) --cfefile $(CFE_FILE) --rootfsfile rootfs.img --kernelfile vmlinux.lz --dtbfile $(DTB_FILE) --include-cfe; \
|
|
$(HOSTTOOLS_DIR)/createimg.pl --set boardid=$(BRCM_BOARD_ID) voiceboardid=$(BRCM_VOICE_BOARD_ID) numbermac=$(BRCM_NUM_MAC_ADDRESSES) macaddr=$(BRCM_BASE_MAC_ADDRESS) tp=$(BRCM_MAIN_TP_NUM) psisize=$(BRCM_PSI_SIZE) logsize=$(BRCM_LOG_SECTION_SIZE) auxfsprcnt=$(BRCM_AUXFS_PERCENT) gponsn=$(BRCM_GPON_SERIAL_NUMBER) gponpw=$(BRCM_GPON_PASSWORD) --inputfile=$(CFE_FS_KERNEL_IMAGE_NAME) --outputfile=$(FLASH_IMAGE_NAME) --nvramfile $(HOSTTOOLS_DIR)/nvram.h --nvramdefsfile $(HOSTTOOLS_DIR)/nvram_defaults.h --config=$(HOSTTOOLS_DIR)/local_install/conf/$(TOOLCHAIN_PREFIX).conf; \
|
|
$(HOSTTOOLS_DIR)/addvtoken --endian $(ARCH_ENDIAN) --chip $(or $(TAG_OVERRIDE),$(BRCM_CHIP)) --flashtype NOR $(FLASH_IMAGE_NAME) $(FLASH_IMAGE_NAME).w
|
|
|
|
|
|
ifneq ($(strip $(BTRM_BOOT_ONLY)),y)
|
|
ifeq ($(strip $(BUILD_SECURE_BOOT)),y)
|
|
ifneq ($(findstring _$(strip $(BRCM_CHIP))_,_63268_63381_63138_63148_),)
|
|
ifeq ($(strip $(BRCM_CHIP)),63268)
|
|
cat $(PROFILE_DIR)/vmlinux_secureboot.lz $(PROFILE_DIR)/vmlinux_secureboot.sig > $(PROFILE_DIR)/vmlinux_secureboot.lz.sig;
|
|
else
|
|
cat $(PROFILE_DIR)/vmlinux.lz $(PROFILE_DIR)/vmlinux.sig > $(PROFILE_DIR)/vmlinux_secureboot.lz.sig;
|
|
endif
|
|
echo "----- BUILD SBI $(BUILD_SBI)"
|
|
cd $(PROFILE_DIR); \
|
|
$(BUILD_SBI) --sec_opt spi --in $(CFESEC_FILE) --in1 $(CFE_FILE) -out $(PROFILE_DIR)/$(BRCM_CHIP)bi_nor.bin --max_size $(SECURE_BOOT_NOR_BOOT_SIZE) ; \
|
|
$(HOSTTOOLS_DIR)/bcmImageBuilder $(BRCM_ENDIAN_FLAGS) --output $(FS_KERNEL_IMAGE_NAME)_secureboot --chip $(or $(TAG_OVERRIDE),$(BRCM_CHIP)) --board $(BRCM_BOARD_ID) --blocksize $(SECURE_BOOT_NOR_BOOT_SIZE) --image-version $(IMAGE_VERSION) --cfefile $(PROFILE_DIR)/$(BRCM_CHIP)bi_nor.bin --rootfsfile rootfs.img --kernelfile vmlinux_secureboot.lz.sig --dtbfile $(DTB_FILE); \
|
|
$(HOSTTOOLS_DIR)/bcmImageBuilder $(BRCM_ENDIAN_FLAGS) --output $(CFE_FS_KERNEL_IMAGE_NAME)_secureboot --chip $(or $(TAG_OVERRIDE),$(BRCM_CHIP)) --board $(BRCM_BOARD_ID) --blocksize $(SECURE_BOOT_NOR_BOOT_SIZE) --image-version $(IMAGE_VERSION) --cfefile $(PROFILE_DIR)/$(BRCM_CHIP)bi_nor.bin --rootfsfile rootfs.img --kernelfile vmlinux_secureboot.lz.sig --include-cfe --dtbfile $(DTB_FILE); \
|
|
rm -f $(PROFILE_DIR)$(BRCM_CHIP)bi_nor.bin vmlinux_secureboot.lz.sig; \
|
|
$(HOSTTOOLS_DIR)/createimg.pl --set boardid=$(BRCM_BOARD_ID) voiceboardid=$(BRCM_VOICE_BOARD_ID) numbermac=$(BRCM_NUM_MAC_ADDRESSES) macaddr=$(BRCM_BASE_MAC_ADDRESS) tp=$(BRCM_MAIN_TP_NUM) psisize=$(BRCM_PSI_SIZE) logsize=$(BRCM_LOG_SECTION_SIZE) auxfsprcnt=$(BRCM_AUXFS_PERCENT) gponsn=$(BRCM_GPON_SERIAL_NUMBER) gponpw=$(BRCM_GPON_PASSWORD) --inputfile=$(CFE_FS_KERNEL_IMAGE_NAME)_secureboot --outputfile=$(FLASH_IMAGE_NAME)_secureboot --nvramfile $(HOSTTOOLS_DIR)/nvram.h --nvramdefsfile $(HOSTTOOLS_DIR)/nvram_defaults.h --config=$(HOSTTOOLS_DIR)/local_install/conf/$(TOOLCHAIN_PREFIX).conf; \
|
|
$(HOSTTOOLS_DIR)/addvtoken --endian $(ARCH_ENDIAN) --chip $(or $(TAG_OVERRIDE),$(BRCM_CHIP)) --flashtype NOR --btrm 1 $(FLASH_IMAGE_NAME)_secureboot $(FLASH_IMAGE_NAME)_secureboot.w
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(strip $(SKIP_TIMESTAMP_IMAGE)),)
|
|
# copy images to images directory and add a timestamp
|
|
@cp $(PROFILE_DIR)/$(FLASH_IMAGE_NAME).w $(IMAGES_DIR)/$(FLASH_IMAGE_NAME)_$(BRCM_RELEASETAG)-$(shell date '+%y%m%d_%H%M').w
|
|
@cp $(PROFILE_DIR)/$(CFE_FS_KERNEL_IMAGE_NAME) $(IMAGES_DIR)/$(CFE_FS_KERNEL_IMAGE_NAME)_$(BRCM_RELEASETAG)-$(shell date '+%y%m%d_%H%M')
|
|
endif
|
|
|
|
@echo
|
|
@echo -e "Done! Image $(PROFILE) has been built in $(PROFILE_DIR)."
|
|
endif
|
|
endif
|
|
md5sum $(HND_SRC)/targets/$(PROFILE)/$(IMGNAME)_ubi.w > $(HND_SRC)/targets/$(PROFILE)/$(IMGNAME)_ubi.md5
|
|
md5sum $(HND_SRC)/targets/$(PROFILE)/$(IMGNAME)_cferom_ubi.w > $(HND_SRC)/targets/$(PROFILE)/$(IMGNAME)_cferom_ubi.md5
|
|
|
|
$(if $(LIVE_UPDATE_RSA), \
|
|
$(if $(wildcard $(KEY_PATH)/private*.pem), \
|
|
for f in $(KEY_PATH)/private*.pem; do \
|
|
rsa_idx=$$(echo $${f} | sed "s/.*\///" | sed "s/private//" | sed "s/.pem//"); \
|
|
$$(openssl sha1 -sign $(KEY_PATH)/private$${rsa_idx}.pem -out image/$(IMGNAME)_ubi_rsa$${rsa_idx}.zip $(HND_SRC)/targets/$(PROFILE)/$(IMGNAME)_ubi.w); \
|
|
$$(openssl sha1 -sign $(KEY_PATH)/private$${rsa_idx}.pem -out image/$(IMGNAME)_cferom_ubi_rsa$${rsa_idx}.zip $(HND_SRC)/targets/$(PROFILE)/$(IMGNAME)_cferom_ubi.w); \
|
|
done \
|
|
, \
|
|
if [ -f $(HND_SRC)/../../buildtools/private.pem ] ; then \
|
|
openssl sha1 -sign $(SRC_ROOT)/../../buildtools/private.pem -out image/$(IMGNAME)_ubi_rsa.zip $(HND_SRC)/targets/$(PROFILE)/$(IMGNAME)_ubi.w; \
|
|
openssl sha1 -sign $(SRC_ROOT)/../../buildtools/private.pem -out image/$(IMGNAME)_cferom_ubi_rsa.zip $(HND_SRC)/targets/$(PROFILE)/$(IMGNAME)_cferom_ubi.w; \
|
|
fi \
|
|
), \
|
|
if [ -f $(HND_SRC)/../../buildtools/private.pem ] ; then \
|
|
openssl sha1 -sign $(SRC_ROOT)/../../buildtools/private.pem -out image/$(IMGNAME)_ubi_rsa.zip $(HND_SRC)/targets/$(PROFILE)/$(IMGNAME)_ubi.w; \
|
|
openssl sha1 -sign $(SRC_ROOT)/../../buildtools/private.pem -out image/$(IMGNAME)_cferom_ubi_rsa.zip $(HND_SRC)/targets/$(PROFILE)/$(IMGNAME)_cferom_ubi.w; \
|
|
fi \
|
|
)
|
|
|
|
########################
|
|
# eMMC CFEONLY IMAGES #
|
|
########################
|
|
emmccfeimage: hosttools_nandcfe
|
|
ifeq ($(strip $(BUILD_EMMC_IMG)),y)
|
|
ifeq ($(strip $(BLD_EMMC_BTROM_BOOT_IMAGES)),y)
|
|
rm -rf $(TARGET_FS)/
|
|
mkdir -p $(TARGET_FS)
|
|
echo "Generating NVRAM binary"; \
|
|
$(HOSTTOOLS_DIR)/createimg.pl --set boardid=$(BRCM_BOARD_ID) voiceboardid=$(BRCM_VOICE_BOARD_ID) numbermac=$(BRCM_NUM_MAC_ADDRESSES) macaddr=$(BRCM_BASE_MAC_ADDRESS) tp=$(BRCM_MAIN_TP_NUM) psisize=$(BRCM_PSI_SIZE) logsize=$(BRCM_LOG_SECTION_SIZE) auxfsprcnt=$(BRCM_AUXFS_PERCENT) gponsn=$(BRCM_GPON_SERIAL_NUMBER) gponpw=$(BRCM_GPON_PASSWORD) --nvramfile $(HOSTTOOLS_DIR)/nvram.h --nvramdefsfile $(HOSTTOOLS_DIR)/nvram_defaults.h --config=$(HOSTTOOLS_DIR)/local_install/conf/$(TOOLCHAIN_PREFIX).conf --outputfile=$(PROFILE_DIR)/$(BRCM_BOARD_ID)_nvram.bin --output_nvram_bin_only;
|
|
|
|
echo "Building Filestruct"; \
|
|
cd $(TARGETS_DIR); ./buildFS_EMMC $(TARGET_BOOTFS) cfeonly
|
|
echo "Generating unsecure CFEROM"; \
|
|
$(BUILD_SBI_UNSEC) --in $(CFE_ROM_EMMC_FILE) -out $(PROFILE_DIR)/.tmpimage; \
|
|
echo "Generating unsecure raw images"; \
|
|
$(HOSTTOOLS_DIR)/create_emmc_rawimg.py --bootfs_file $(PROFILE_DIR)/filestruct_full_emmc.bin --mdata_file $(PROFILE_DIR)/metadata.bin --nvram_file $(PROFILE_DIR)/$(BRCM_BOARD_ID)_nvram.bin --rawfullimg_file $(PROFILE_DIR)/$(FLASH_IMAGE_NAME_EMMC_DATA_PHYSPART)_cfeonly.w --cferom_file $(PROFILE_DIR)/.tmpimage --cferom_offsetkB 64 --rawcfeimg_file $(PROFILE_DIR)/$(FLASH_IMAGE_NAME_EMMC_BOOT_PHYSPART).w --emmcdefs_file $(INC_BRCMSHARED_PUB_PATH)/$(BRCM_BOARD)/emmc_base_defs.h;
|
|
ifeq ($(strip $(BUILD_SECURE_BOOT)),y)
|
|
echo "Generating encrypted CFERAM"; \
|
|
$(BUILD_SBI_NOHDR) --in $(CFESEC_RAM_EMMC_FILE) -out $(PROFILE_DIR)/fs/secram.000
|
|
echo -e "/secram.000" >> $(HOSTTOOLS_DIR)/nocomprlist
|
|
ifeq ($(strip $(SECURE_BOOT_ARCH)),GEN3)
|
|
$(BUILD_SBI_NOHDR_MFG) --in $(CFESEC_RAM_EMMC_FILE) -out $(PROFILE_DIR)/fs/secmfg.000
|
|
echo -e "/secmfg.000" >> $(HOSTTOOLS_DIR)/nocomprlist
|
|
endif
|
|
echo "Building Filestruct"; \
|
|
cd $(TARGETS_DIR); ./buildFS_EMMC $(TARGET_BOOTFS) cfeonly
|
|
echo "Generating secure CFEROM"; \
|
|
$(HOSTTOOLS_DIR)/scripts/bcmImageMaker --cferom $(CFE_ROM_EMMC_FILE) --cfesecrom $(CFESEC_ROM_EMMC_FILE) --blocksize 2048 --bootofs $(FLASH_BOOT_OFS) --bootsize $(FLASH_NAND_BLOCK_256KB) --image $(PROFILE_DIR)/.tmpimage $(SECUREHDR) --mediatype emmc;
|
|
echo "Generating secure raw images"; \
|
|
$(HOSTTOOLS_DIR)/create_emmc_rawimg.py --bootfs_file $(PROFILE_DIR)/filestruct_full_emmc.bin --mdata_file $(PROFILE_DIR)/metadata.bin --nvram_file $(PROFILE_DIR)/$(BRCM_BOARD_ID)_nvram.bin --rawfullimg_file $(PROFILE_DIR)/$(FLASH_IMAGE_NAME_EMMC_DATA_PHYSPART)_cfeonly_secureboot.w --cferom_file $(PROFILE_DIR)/.tmpimage.bin --cferom_offsetkB 64 --rawcfeimg_file $(PROFILE_DIR)/$(FLASH_IMAGE_NAME_EMMC_BOOT_PHYSPART)_secureboot.w --emmcdefs_file $(INC_BRCMSHARED_PUB_PATH)/$(BRCM_BOARD)/emmc_base_defs.h;
|
|
endif
|
|
rm -rf $(TARGET_FS)
|
|
endif
|
|
endif
|
|
|
|
########################
|
|
# NAND CFEONLY IMAGES #
|
|
########################
|
|
nandcfeimage: hosttools_nandcfe
|
|
rm -rf $(TARGET_FS)/
|
|
mkdir -p $(TARGET_FS)
|
|
ifeq ($(strip $(BUILD_HND_EAP_UBOOT)),y)
|
|
cp -vf $(PROFILE_DIR)/../uboot/uboot$(BRCM_CHIP)ram.bin $(TARGET_FS)/cferam.000
|
|
else
|
|
cp -vf $(PROFILE_DIR)/../cfe/cfe$(BRCM_CHIP)ram.bin $(TARGET_FS)/cferam.000
|
|
endif
|
|
echo -e "/cferam.000" > $(HOSTTOOLS_DIR)/nocomprlist
|
|
ifeq ($(strip $(BUILD_NAND_IMG_BLKSIZE_16KB)),y)
|
|
$(HOSTTOOLS_DIR)/mkfs.jffs2 -v $(BRCM_ENDIAN_FLAGS) -p -n -e $(FLASH_NAND_BLOCK_16KB) -r $(TARGET_FS) -o $(PROFILE_DIR)/rootfs16kb.img -N $(HOSTTOOLS_DIR)/nocomprlist
|
|
endif
|
|
ifeq ($(strip $(BUILD_NAND_IMG_BLKSIZE_128KB)),y)
|
|
$(HOSTTOOLS_DIR)/mkfs.jffs2 -v $(BRCM_ENDIAN_FLAGS) -p -n -e $(FLASH_NAND_BLOCK_128KB) -r $(TARGET_FS) -o $(PROFILE_DIR)/rootfs128kb.img -N $(HOSTTOOLS_DIR)/nocomprlist
|
|
endif
|
|
ifeq ($(strip $(BUILD_NAND_IMG_BLKSIZE_256KB)),y)
|
|
$(HOSTTOOLS_DIR)/mkfs.jffs2 -v $(BRCM_ENDIAN_FLAGS) -p -n -e $(FLASH_NAND_BLOCK_256KB) -r $(TARGET_FS) -o $(PROFILE_DIR)/rootfs256kb.img -N $(HOSTTOOLS_DIR)/nocomprlist
|
|
endif
|
|
ifeq ($(strip $(BUILD_NAND_IMG_BLKSIZE_512KB)),y)
|
|
$(HOSTTOOLS_DIR)/mkfs.jffs2 -v $(BRCM_ENDIAN_FLAGS) -p -n -e $(FLASH_NAND_BLOCK_512KB) -r $(TARGET_FS) -o $(PROFILE_DIR)/rootfs512kb.img -N $(HOSTTOOLS_DIR)/nocomprlist
|
|
endif
|
|
ifeq ($(strip $(BUILD_NAND_IMG_BLKSIZE_1024KB)),y)
|
|
$(HOSTTOOLS_DIR)/mkfs.jffs2 -v $(BRCM_ENDIAN_FLAGS) -p -n -e $(FLASH_NAND_BLOCK_1024KB) -r $(TARGET_FS) -o $(PROFILE_DIR)/rootfs1024kb.img -N $(HOSTTOOLS_DIR)/nocomprlist
|
|
endif
|
|
|
|
ifeq ($(strip $(BUILD_SECURE_BOOT)),y)
|
|
$(BUILD_SBI_NOHDR) --in $(CFESEC_RAM_FILE) -out $(PROFILE_DIR)/fs/secram.000
|
|
echo -e "/secram.000" >> $(HOSTTOOLS_DIR)/nocomprlist
|
|
ifeq ($(strip $(SECURE_BOOT_ARCH)),GEN3)
|
|
$(BUILD_SBI_NOHDR) --in $(CFESEC_RAM_FILE) -out $(PROFILE_DIR)/fs/secmfg.000
|
|
echo -e "/secmfg.000" >> $(HOSTTOOLS_DIR)/nocomprlist
|
|
endif
|
|
ifeq ($(strip $(BUILD_NAND_IMG_BLKSIZE_16KB)),y)
|
|
$(HOSTTOOLS_DIR)/mkfs.jffs2 -v $(BRCM_ENDIAN_FLAGS) -p -n -e $(FLASH_NAND_BLOCK_16KB) -r $(TARGET_FS) -o $(PROFILE_DIR)/rootfs16kb_secureboot.img -N $(HOSTTOOLS_DIR)/nocomprlist
|
|
endif
|
|
ifeq ($(strip $(BUILD_NAND_IMG_BLKSIZE_128KB)),y)
|
|
$(HOSTTOOLS_DIR)/mkfs.jffs2 -v $(BRCM_ENDIAN_FLAGS) -p -n -e $(FLASH_NAND_BLOCK_128KB) -r $(TARGET_FS) -o $(PROFILE_DIR)/rootfs128kb_secureboot.img -N $(HOSTTOOLS_DIR)/nocomprlist
|
|
endif
|
|
ifeq ($(strip $(BUILD_NAND_IMG_BLKSIZE_256KB)),y)
|
|
$(HOSTTOOLS_DIR)/mkfs.jffs2 -v $(BRCM_ENDIAN_FLAGS) -p -n -e $(FLASH_NAND_BLOCK_256KB) -r $(TARGET_FS) -o $(PROFILE_DIR)/rootfs256kb_secureboot.img -N $(HOSTTOOLS_DIR)/nocomprlist
|
|
endif
|
|
ifeq ($(strip $(BUILD_NAND_IMG_BLKSIZE_512KB)),y)
|
|
$(HOSTTOOLS_DIR)/mkfs.jffs2 -v $(BRCM_ENDIAN_FLAGS) -p -n -e $(FLASH_NAND_BLOCK_512KB) -r $(TARGET_FS) -o $(PROFILE_DIR)/rootfs512kb_secureboot.img -N $(HOSTTOOLS_DIR)/nocomprlist
|
|
endif
|
|
ifeq ($(strip $(BUILD_NAND_IMG_BLKSIZE_1024KB)),y)
|
|
$(HOSTTOOLS_DIR)/mkfs.jffs2 -v $(BRCM_ENDIAN_FLAGS) -p -n -e $(FLASH_NAND_BLOCK_1024KB) -r $(TARGET_FS) -o $(PROFILE_DIR)/rootfs1024kb_secureboot.img -N $(HOSTTOOLS_DIR)/nocomprlist
|
|
endif
|
|
endif
|
|
rm $(HOSTTOOLS_DIR)/nocomprlist
|
|
|
|
|
|
|
|
ifeq ($(strip $(BTRM_BOOT_ONLY)),y)
|
|
@echo -e "No XIP to flash capability. Bootrom boot only. Build unsecure bootrom boot"
|
|
|
|
ifeq ($(strip $(BUILD_NAND_IMG_BLKSIZE_16KB)),y)
|
|
$(HOSTTOOLS_DIR)/scripts/bcmImageMaker --cferom $(CFE_ROM_FILE) --blocksize $(FLASH_NAND_BLOCK_16KB) --bootofs $(FLASH_BOOT_OFS) --bootsize $(FLASH_NAND_BLOCK_16KB) --rootfs rootfs16kb.img --image $(FLASH_BASE_IMAGE_NAME)_nand_cfeonly.16 --unsecurehdr $(PRE_CFE_ROM)
|
|
endif
|
|
$(foreach bnib,$(BUILD_NAND_IMG_BLKSIZE), $(call build_cfeonly_images_unsecure,$(bnib),$(CFE_ROM_FILE),$(bnib),$(FLASH_BOOT_OFS),$(PRE_CFE_ROM),--unsecurehdr))
|
|
|
|
else
|
|
|
|
ifeq ($(strip $(BUILD_NAND_IMG_BLKSIZE_16KB)),y)
|
|
$(HOSTTOOLS_DIR)/scripts/bcmImageMaker --cferom $(CFE_ROM_FILE) --blocksize $(FLASH_NAND_BLOCK_16KB) --bootofs $(FLASH_BOOT_OFS) --bootsize $(FLASH_NAND_BLOCK_16KB) --rootfs rootfs16kb.img --image $(FLASH_BASE_IMAGE_NAME)_nand_cfeonly.16 $(PRE_CFE_ROM)
|
|
endif
|
|
|
|
$(foreach bnib,$(BUILD_NAND_IMG_BLKSIZE), $(call build_cfeonly_images_unsecure,$(BUILD_NAND_IMG_BLKSIZE_$(BLKSZ)KB),$(CFE_ROM_FILE),$(bnib),$(FLASH_BOOT_OFS),$(PRE_CFE_ROM)))
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(strip $(BUILD_SECURE_BOOT)),y)
|
|
ifeq ($(strip $(BUILD_NAND_IMG_BLKSIZE_16KB)),y)
|
|
ifeq ($(strip $(BRCM_CHIP)),63268)
|
|
# NOTE: 63268 small page nand bootsize is 128K on purpose (ie $(FLASH_NAND_BLOCK_128KB)). Do not change.
|
|
$(HOSTTOOLS_DIR)/scripts/bcmImageMaker --cferom $(CFE_ROM_FILE) --cfesecrom $(CFESEC_ROM_FILE) --blocksize $(FLASH_NAND_BLOCK_16KB) --bootofs $(FLASH_BOOT_OFS) --bootsize $(FLASH_NAND_BLOCK_128KB) --rootfs rootfs16kb_secureboot.img --image $(FLASH_BASE_IMAGE_NAME)_nand_cfeonly_secureboot.16 $(SECUREHDR) $(PRE_CFE_ROM)
|
|
else
|
|
$(HOSTTOOLS_DIR)/scripts/bcmImageMaker --cferom $(CFE_ROM_FILE) --cfesecrom $(CFESEC_ROM_FILE) --blocksize $(FLASH_NAND_BLOCK_16KB) --bootofs $(FLASH_BOOT_OFS) --bootsize $(FLASH_NAND_BLOCK_16KB) --rootfs rootfs16kb_secureboot.img --image $(FLASH_BASE_IMAGE_NAME)_nand_cfeonly_secureboot.16 $(SECUREHDR) $(PRE_CFE_ROM)
|
|
endif
|
|
endif
|
|
$(foreach bnib,$(BUILD_NAND_IMG_BLKSIZE), $(call build_cfeonly_images_secure,$(bnib),$(CFE_ROM_FILE),$(bnib),$(FLASH_BOOT_OFS),$(SECUREHDR),$(CFESEC_ROM_FILE)))
|
|
endif
|
|
|
|
rm -f $(TARGET_FS)/cferam.000
|
|
rm -f $(TARGET_FS)/secram.000
|
|
rm -f $(TARGET_FS)/secmfg.000
|
|
|
|
########################
|
|
# BEEP package build #
|
|
########################
|
|
ifneq ($(strip $(BUILD_BEEP)),)
|
|
include $(BUILD_DIR)/make.beep
|
|
else
|
|
beep:
|
|
@echo "BUILD_BEEP is not enabled"
|
|
endif
|
|
|
|
########################
|
|
# All CFEONLY IMAGES #
|
|
########################
|
|
cfeimage: nandcfeimage emmccfeimage
|
|
|
|
###########################################
|
|
#
|
|
# System code clean-up
|
|
#
|
|
###########################################
|
|
CLEAN_WITH_SANITY_CHECK :=
|
|
|
|
.PHONY : clean clean1 bcmdrivers_clean data-model_clean clean_with_sanity_check
|
|
|
|
clean:
|
|
$(MAKE) -j1 BRCM_MAX_JOBS=1 clean1
|
|
|
|
clean1: bcmdrivers_clean data-model_clean dynamic_cfe_clean \
|
|
rdp_clean $(DTBS_CLEAN) clean_with_sanity_check
|
|
rm -f $(HOSTTOOLS_DIR)/scripts/lxdialog/*.o
|
|
rm -f .tmpconfig*
|
|
-mv -f $(LAST_PROFILE_COOKIE) .check_clean
|
|
rm -f $(LAST_PROFILE_COOKIE)
|
|
rm -f $(HOST_PERLARCH_COOKIE)
|
|
|
|
cleanall: clean_local_tools clean
|
|
|
|
clean_local_tools:
|
|
rm -rf $(HOSTTOOLS_DIR)/local_install
|
|
|
|
check_clean:
|
|
find . -type f -newer .check_clean -print | $(HOSTTOOLS_DIR)/check_clean.pl -p .check_clean check_clean_whitelist
|
|
|
|
fssrc_clean:
|
|
rm -fr $(FSSRC_DIR)/bin
|
|
rm -fr $(FSSRC_DIR)/sbin
|
|
rm -fr $(FSSRC_DIR)/lib
|
|
rm -fr $(FSSRC_DIR)/upnp
|
|
rm -fr $(FSSRC_DIR)/docs
|
|
rm -fr $(FSSRC_DIR)/webs
|
|
rm -fr $(FSSRC_DIR)/usr
|
|
rm -fr $(FSSRC_DIR)/linuxrc
|
|
rm -fr $(FSSRC_DIR)/image
|
|
rm -fr $(FSSRC_DIR)/etc/wlan
|
|
rm -fr $(FSSRC_DIR)/etc/certs
|
|
|
|
CLEAN_WITH_SANITY_CHECK += kernel_clean
|
|
kernel_clean: hnd_dongle_clean
|
|
CURRENT_ARCH=$(KERNEL_ARCH) TOOLCHAIN_TOP= $(MAKE) inner_kernel_clean
|
|
inner_kernel_clean: sanity_check
|
|
-$(MAKE) -C $(KERNEL_DIR) mrproper
|
|
rm -f $(KERNEL_DIR)/arch/mips/defconfig
|
|
rm -f $(KERNEL_DIR)/arch/arm/defconfig
|
|
rm -f $(KERNEL_DIR)/arch/arm64/defconfig
|
|
rm -f $(HOSTTOOLS_DIR)/lzma/decompress/*.o
|
|
rm -f $(KERNEL_INCLUDE_LINK)
|
|
rm -f $(KERNEL_MIPS_INCLUDE_LINK)
|
|
rm -f $(KERNEL_ARM_INCLUDE_LINK)
|
|
rm -f $(KERNEL_DIR)/.pre_kernelbuild
|
|
rm -f $(KERNEL_DIR)/rdp_flags.txt
|
|
ifeq ($(strip $(BCA_HNDROUTER)),)
|
|
-find bcmdrivers/broadcom/net/wl/impl$(BCM_WLIMPL) -name build -type d -prune -exec rm -rf {} \; 2> /dev/null
|
|
endif
|
|
ifneq ($(strip $(BUILD_LINUX_PERF)),)
|
|
-$(MAKE) -C $(KERNEL_DIR)/tools/perf clean
|
|
endif
|
|
|
|
bcmdrivers_clean:
|
|
-$(MAKE) -C bcmdrivers clean
|
|
|
|
CLEAN_WITH_SANITY_CHECK += userspace_clean
|
|
userspace_clean: sanity_check fssrc_clean
|
|
-rm -fr $(BCM_FSBUILD_DIR)
|
|
-$(MAKE) -C userspace clean
|
|
|
|
data-model_clean:
|
|
ifeq ($(strip $(BUILD_BRCM_HNDROUTER_ALONE)),)
|
|
-$(MAKE) -C data-model clean
|
|
else
|
|
@true
|
|
endif
|
|
|
|
unittests_clean:
|
|
-$(MAKE) -C unittests clean
|
|
|
|
CLEAN_WITH_SANITY_CHECK += target_clean
|
|
target_clean: sanity_check
|
|
rm -f $(PROFILE_DIR)/*.img
|
|
rm -f $(PROFILE_DIR)/*.bin
|
|
rm -f $(PROFILE_DIR)/*.ini
|
|
rm -f $(PROFILE_DIR)/rootfs*.ubifs
|
|
rm -f $(PROFILE_DIR)/rootfs.ext4
|
|
rm -f $(PROFILE_DIR)/vmlinux*
|
|
rm -f $(PROFILE_DIR)/*.w
|
|
rm -f $(PROFILE_DIR)/*.gz
|
|
rm -f $(PROFILE_DIR)/*.srec
|
|
rm -f $(PROFILE_DIR)/ramdisk
|
|
rm -f $(PROFILE_DIR)/$(FS_KERNEL_IMAGE_NAME)*
|
|
rm -f $(PROFILE_DIR)/$(CFE_FS_KERNEL_IMAGE_NAME)*
|
|
rm -f $(PROFILE_DIR)/$(FLASH_IMAGE_NAME)*
|
|
rm -fr $(PROFILE_DIR)/modules
|
|
rm -fr $(PROFILE_DIR)/imagebuild/
|
|
rm -fr $(PROFILE_DIR)/op
|
|
rm -fr $(INSTALL_DIR)
|
|
rm -fr $(BCM_FSBUILD_DIR)
|
|
-find targets -name vmlinux -print -exec rm -f "{}" ";"
|
|
rm -fr targets/TEMP
|
|
rm -fr $(TARGET_FS)
|
|
rm -f release/*credits.txt
|
|
ifeq ($(strip $(BRCM_KERNEL_ROOTFS)),all)
|
|
rm -fr $(TARGET_BOOTFS)
|
|
endif
|
|
|
|
CLEAN_WITH_SANITY_CHECK += hosttools_clean # for libcreduction clean
|
|
hosttools_clean:
|
|
-$(MAKE) -C $(HOSTTOOLS_DIR) clean
|
|
|
|
.PHONY : hnd_dongle_clean
|
|
hnd_dongle_clean:
|
|
ifneq ($(strip $(BCA_HNDROUTER)),)
|
|
# need to make sure soft link still exists
|
|
-$(MAKE) -C $(BRCMDRIVERS_DIR)/broadcom/net/wl/bcm9$(BRCM_CHIP) clean
|
|
endif
|
|
|
|
.PHONY : $(CLEAN_WITH_SANITY_CHECK)
|
|
ifneq ($(strip $(PROFILE)),)
|
|
clean_with_sanity_check : $(CLEAN_WITH_SANITY_CHECK)
|
|
clean_with_sanity_check : FORCE := 1
|
|
else
|
|
clean_with_sanity_check :
|
|
$(warning PROFILE undefined, SKIPPED:$(CLEAN_WITH_SANITY_CHECK))
|
|
endif
|
|
###########################################
|
|
# End of system code clean-up
|
|
###########################################
|
|
|
|
arm8_srec_prepare:
|
|
$(KOBJCOPY) --output-target=srec --input-target=binary --change-addresses=0x1fff000 kernel/dts/9$(BRCM_CHIP).dtb kernel/dts/9$(BRCM_CHIP)_dtb.srec;
|
|
$(KOBJCOPY) --output-target=srec --input-target=binary --change-addresses=0x1b00000 $(PROFILE_DIR)/ramdisk $(PROFILE_DIR)/ramdisk.srec;
|
|
$(KOBJCOPY) --output-target=srec $(PROFILE_DIR)/vmlinux $(PROFILE_DIR)/vmlinux.srec;
|
|
|
|
###########################################
|
|
#
|
|
# Temporary kernel patching mechanism
|
|
#
|
|
###########################################
|
|
|
|
.PHONY: genpatch patch
|
|
|
|
genpatch:
|
|
@hostTools/kup_tmp/genpatch
|
|
|
|
patch:
|
|
# @hostTools/kup_tmp/patch
|
|
|
|
###########################################
|
|
#
|
|
# Get modules version
|
|
#
|
|
###########################################
|
|
.PHONY: version_info SECUREHDR
|
|
|
|
version_info: sanity_check pre_kernelbuild
|
|
@echo "$(MAKECMDGOALS):";\
|
|
cd $(KERNEL_DIR); $(MAKE) -j1 --silent version_info;
|
|
# FIXME -- should not need -j1 here
|
|
|
|
###########################################
|
|
#
|
|
# System-wide exported variables
|
|
# (in alphabetical order)
|
|
#
|
|
###########################################
|
|
|
|
# EMBED_BALOO_BGN
|
|
export BUILD_BALOO BUILD_BALOOD_UDP BUILD_BALOO_UTIL
|
|
# EMBED_BALOO_END
|
|
|
|
export \
|
|
ACTUAL_MAX_JOBS \
|
|
BRCMAPPS \
|
|
BRCM_BOARD \
|
|
BRCM_DRIVER_PCI \
|
|
BRCM_EXTRAVERSION \
|
|
BRCM_KERNEL_NETQOS \
|
|
BRCM_KERNEL_ROOTFS \
|
|
BRCM_KERNEL_AUXFS_JFFS2 \
|
|
BRCM_LDX_APP \
|
|
BRCM_MIPS_ONLY_BUILD \
|
|
BRCM_CPU_FREQ_PWRSAVE \
|
|
BRCM_CPU_FREQ_TARGET_LOAD \
|
|
BRCM_PSI_VERSION \
|
|
BRCM_PTHREADS \
|
|
BRCM_RAMDISK_BOOT_EN \
|
|
BRCM_RAMDISK_SIZE \
|
|
BRCM_NFS_MOUNT_EN \
|
|
BRCM_RELEASE \
|
|
BRCM_RELEASETAG \
|
|
BRCM_SNMP \
|
|
BRCM_VERSION \
|
|
BUILD_CMFCTL \
|
|
BUILD_CMFVIZ \
|
|
BUILD_CMFD \
|
|
BUILD_XDSLCTL \
|
|
BUILD_XTMCTL \
|
|
BUILD_VLANCTL \
|
|
BUILD_BRCM_VLAN \
|
|
BUILD_BRCTL \
|
|
BUILD_BUSYBOX \
|
|
BUILD_BUSYBOX_BRCM_LITE \
|
|
BUILD_BUSYBOX_BRCM_FULL \
|
|
BUILD_CERT \
|
|
BUILD_DDNSD \
|
|
BUILD_DEBUG_TOOLS \
|
|
BUILD_DIAGAPP \
|
|
BUILD_DIR \
|
|
BUILD_DNSPROBE \
|
|
BUILD_DPROXY \
|
|
BUILD_DNSSPOOF \
|
|
BUILD_EBTABLES \
|
|
BUILD_EPITTCP \
|
|
BUILD_ETHWAN \
|
|
BUILD_FTPD \
|
|
BUILD_FTPD_STORAGE \
|
|
BUILD_MCAST_PROXY \
|
|
BUILD_WLHSPOT \
|
|
BUILD_IPPD \
|
|
BUILD_IPROUTE2 \
|
|
BUILD_IPSEC_TOOLS \
|
|
BUILD_L2TPAC \
|
|
BUILD_ACCEL_PPTP \
|
|
BUILD_WPS_BTN \
|
|
BUILD_WSC \
|
|
BUILD_BCMCRYPTO \
|
|
BUILD_BCMSHARED \
|
|
BUILD_MKSQUASHFS \
|
|
BUILD_NAS \
|
|
BUILD_NVRAM \
|
|
BUILD_PORT_MIRRORING \
|
|
BUILD_PPPD \
|
|
PPP_AUTODISCONN \
|
|
BUILD_SES \
|
|
BUILD_SIPROXD \
|
|
BUILD_SLACTEST \
|
|
BUILD_SNMP \
|
|
BUILD_SNTP \
|
|
BUILD_SOAP \
|
|
BUILD_SOAP_VER \
|
|
BUILD_SSHD \
|
|
BUILD_SSHD_MIPS_GENKEY \
|
|
BUILD_TOD \
|
|
BUILD_BRCM_CMS \
|
|
BUILD_TR64 \
|
|
BUILD_TR64_DEVICECONFIG \
|
|
BUILD_TR64_DEVICEINFO \
|
|
BUILD_TR64_LANCONFIGSECURITY \
|
|
BUILD_TR64_LANETHINTERFACECONFIG \
|
|
BUILD_TR64_LANHOSTS \
|
|
BUILD_TR64_LANHOSTCONFIGMGMT \
|
|
BUILD_TR64_LANUSBINTERFACECONFIG \
|
|
BUILD_TR64_LAYER3 \
|
|
BUILD_TR64_MANAGEMENTSERVER \
|
|
BUILD_TR64_TIME \
|
|
BUILD_TR64_USERINTERFACE \
|
|
BUILD_TR64_QUEUEMANAGEMENT \
|
|
BUILD_TR64_LAYER2BRIDGE \
|
|
BUILD_TR64_WANCABLELINKCONFIG \
|
|
BUILD_TR64_WANCOMMONINTERFACE \
|
|
BUILD_TR64_WANDSLINTERFACE \
|
|
BUILD_TR64_WANDSLLINKCONFIG \
|
|
BUILD_TR64_WANDSLCONNECTIONMGMT \
|
|
BUILD_TR64_WANDSLDIAGNOSTICS \
|
|
BUILD_TR64_WANETHERNETCONFIG \
|
|
BUILD_TR64_WANETHERNETLINKCONFIG \
|
|
BUILD_TR64_WANIPCONNECTION \
|
|
BUILD_TR64_WANPOTSLINKCONFIG \
|
|
BUILD_TR64_WANPPPCONNECTION \
|
|
BUILD_TR64_WLANCONFIG \
|
|
BUILD_TR69C \
|
|
BUILD_TR69_QUEUED_TRANSFERS \
|
|
BUILD_TR69C_SSL \
|
|
BUILD_TR69_XBRCM \
|
|
BUILD_TR69_UPLOAD \
|
|
BUILD_TR69C_VENDOR_RPC \
|
|
BUILD_OMCI \
|
|
BUILD_UDHCP \
|
|
BUILD_UDHCP_RELAY \
|
|
BUILD_VCONFIG \
|
|
BUILD_SUPERDMZ \
|
|
BUILD_WLCTL \
|
|
BUILD_DHDCTL \
|
|
BUILD_ZEBRA \
|
|
BUILD_LIBUSB \
|
|
BUILD_WANVLANMUX \
|
|
HOSTTOOLS_DIR \
|
|
INC_KERNEL_BASE \
|
|
INSTALL_DIR \
|
|
INSTALLDIR \
|
|
PROFILE_DIR \
|
|
PLATFORMDIR \
|
|
WEB_POPUP \
|
|
BUILD_VIRT_SRVR \
|
|
BUILD_PORT_TRIG \
|
|
BUILD_TR69C_BCM_SSL \
|
|
BUILD_IPV6 \
|
|
BUILD_BOARD_LOG_SECTION \
|
|
BRCM_LOG_SECTION_SIZE \
|
|
BRCM_FLASHBLK_SIZE \
|
|
BRCM_AUXFS_PERCENT \
|
|
BRCM_BACKUP_PSI \
|
|
LINUX_KERNEL_USBMASS \
|
|
BUILD_IPSEC \
|
|
BUILD_MoCACTL \
|
|
BUILD_MoCACTL2 \
|
|
BUILD_6802_MOCA \
|
|
BRCM_MOCA_AVS \
|
|
BUILD_GPON \
|
|
BUILD_GPONCTL \
|
|
BUILD_PMON \
|
|
BUILD_BUZZZ \
|
|
BUILD_BOUNCE \
|
|
BUILD_HELLO \
|
|
BUILD_SPUCTL \
|
|
BUILD_RNGD \
|
|
RELEASE_BUILD \
|
|
NO_PRINTK_AND_BUG \
|
|
FLASH_NAND_BLOCK_16KB \
|
|
FLASH_NAND_BLOCK_128KB \
|
|
FLASH_NAND_BLOCK_256KB \
|
|
FLASH_NAND_BLOCK_512KB \
|
|
FLASH_NAND_BLOCK_1024KB \
|
|
FLASH_NAND_BLOCK_2056KB \
|
|
BRCM_SCHED_RT_RUNTIME \
|
|
BRCM_CONFIG_HIGH_RES_TIMERS \
|
|
BRCM_SWITCH_SCHED_SP \
|
|
BRCM_SWITCH_SCHED_WRR \
|
|
BUILD_SWMDK \
|
|
BUILD_IQCTL \
|
|
BUILD_BPMCTL \
|
|
BUILD_EPONCTL \
|
|
BUILD_ETHTOOL \
|
|
BUILD_TMS \
|
|
IMAGE_VERSION \
|
|
TOOLCHAIN_PREFIX \
|
|
PROFILE_KERNEL_VER \
|
|
KERNEL_LINKS_DIR \
|
|
LINUX_VER_STR \
|
|
KERNEL_DIR \
|
|
LINUXDIR \
|
|
FORCE \
|
|
BUILD_VLAN_AGGR \
|
|
BUILD_DPI \
|
|
BUILD_MAP \
|
|
BRCM_KERNEL_DEBUG \
|
|
BUILD_BRCM_FTTDP \
|
|
BUILD_BRCM_XDSL_DISTPOINT \
|
|
BRCM_1905_FM \
|
|
BUILD_BRCM_CMS \
|
|
BUILD_WEB_SOCKETS \
|
|
BUILD_WEB_SOCKETS_TEST \
|
|
BRCM_1905_TOPOLOGY_WEB_PAGE \
|
|
BUILD_NAND_KERNEL_LZMA \
|
|
BUILD_NAND_KERNEL_LZ4 \
|
|
BUILD_DISABLE_EXEC_STACK \
|
|
BUILD_DBUS \
|
|
BUILD_LXC \
|
|
NO_MINIFY \
|
|
BRCM_PARTITION_CFG_FILE \
|
|
BCM_SPEEDYGET
|
|
|
|
###########################################
|
|
# End of the real part
|
|
###########################################
|
|
endif #ifneq ($(MY_DEFAULT_ANY_FIRST_RUN),0)
|