1 #****************************************************************************
3 # Copyright (c) 2001, 2002, 2003, 2004 Broadcom Corporation
5 # No portions of this material may be reproduced in any form without the
6 # written permission of:
8 # 16251 Laguna Canyon Road
9 # Irvine, California 92618
10 # All information contained in this document is Broadcom Corporation
11 # company private, proprietary, and trade secret.
13 #****************************************************************************
15 # Top-level Makefile for all commengine xDSL platforms
19 BRCM_RELEASETAG=$(BRCM_VERSION).$(BRCM_RELEASE)L.$(BRCM_EXTRAVERSION)
22 ###########################################
24 # Define Basic Variables
26 ###########################################
27 BUILD_DIR = $(shell pwd)
29 ifeq ($(strip $(KERNEL_VER)),2.6)
30 INC_KERNEL_BASE = $(BUILD_DIR)/kernel
31 ORIGINAL_KERNEL = linuxmips.tar.bz2
33 KERNEL_DIR = $(INC_KERNEL_BASE)/linux
34 BRCMDRIVERS_DIR = $(BUILD_DIR)/bcmdrivers
35 USERAPPS_DIR = $(BUILD_DIR)/userapps
36 LINUXDIR = $(INC_KERNEL_BASE)/linux
37 HOSTTOOLS_DIR = $(BUILD_DIR)/hostTools
38 IMAGES_DIR = $(BUILD_DIR)/images
39 TARGETS_DIR = $(BUILD_DIR)/targets
40 DEFAULTCFG_DIR = $(TARGETS_DIR)/defaultcfg
41 XCHANGE_DIR = $(BUILD_DIR)/xChange
42 FSSRC_DIR = $(TARGETS_DIR)/fs.src
43 CFE_FILE = $(TARGETS_DIR)/cfe/cfe$(BRCM_CHIP).bin
44 CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
45 else if [ -x /bin/bash ]; then echo /bin/bash; \
46 else echo sh; fi ; fi)
47 GENDEFCONFIG_CMD = $(HOSTTOOLS_DIR)/scripts/gendefconfig
52 ###########################################
54 # Import Build Profiles
56 ###########################################
58 LAST_PROFILE=$(shell find targets -name vmlinux | sed -e "s?targets/??" -e "s?/.*??" -e "q")
59 ifeq ($(strip $(PROFILE)),)
60 PROFILE=$(LAST_PROFILE)
63 ifneq ($(strip $(PROFILE)),)
64 include $(TARGETS_DIR)/$(PROFILE)/$(PROFILE)
66 export BRCM_FLASHPSI_SIZE
67 export BRCM_DRIVER_WIRELESS_PCMCIA_DATASWAP BRCM_DRIVER_WIRELESS_EBI_DMA
68 export BRCM_DRIVER_USB BRCM_DRIVER_ETHERNET_CONFIG
69 export BRCM_DEFAULTCFG
70 export BRCM_KERNEL_NF_FIREWALL BRCM_KERNEL_NF_MANGLE BRCM_KERNEL_NF_NAT
73 ###########################################
77 ###########################################
78 ifeq ($(strip $(BRCM_UCLIBC)),y)
80 ifeq ($(strip $(NTC)),1)
81 TOOLCHAIN=/opt/toolchains/uclibc-crosstools
82 CROSS_COMPILE = $(TOOLCHAIN)/bin/mips-linux-uclibc-
84 TOOLCHAIN=/opt/toolchains/uclibc
85 CROSS_COMPILE = $(TOOLCHAIN)/bin/mips-uclibc-
88 TOOLCHAIN=/usr/crossdev/mips
89 CROSS_COMPILE = $(TOOLCHAIN)/bin/mips-linux-
92 AR = $(CROSS_COMPILE)ar
93 AS = $(CROSS_COMPILE)as
94 LD = $(CROSS_COMPILE)ld
95 CC = $(CROSS_COMPILE)gcc
96 CXX = $(CROSS_COMPILE)g++
97 CPP = $(CROSS_COMPILE)cpp
98 NM = $(CROSS_COMPILE)nm
99 STRIP = $(CROSS_COMPILE)strip
100 SSTRIP = $(CROSS_COMPILE)sstrip
101 OBJCOPY = $(CROSS_COMPILE)objcopy
102 OBJDUMP = $(CROSS_COMPILE)objdump
103 RANLIB = $(CROSS_COMPILE)ranlib
105 LIB_PATH = $(TOOLCHAIN)/mips-linux/lib
106 LIBDIR = $(TOOLCHAIN)/mips-linux/lib
107 LIBCDIR = $(TOOLCHAIN)/mips-linux
109 ###########################################
111 # Application-specific settings
113 ###########################################
114 INSTALL_DIR = $(TARGETS_DIR)/fs.src
115 TARGET_FS = $(TARGETS_DIR)/$(PROFILE)/fs
116 PROFILE_DIR = $(TARGETS_DIR)/$(PROFILE)
117 PROFILE_PATH = $(TARGETS_DIR)/$(PROFILE)/$(PROFILE)
119 FS_KERNEL_IMAGE_NAME = $(VENDOR_NAME)$(PROFILE)_fs_kernel
120 CFE_FS_KERNEL_IMAGE_NAME = $(VENDOR_NAME)$(PROFILE)_cfe_fs_kernel
121 FLASH_IMAGE_NAME = $(VENDOR_NAME)$(PROFILE)_flash_image_$(BRCM_BOARD_ID)
122 INC_BRCMDRIVER_PUB_PATH=$(BRCMDRIVERS_DIR)/opensource/include
123 INC_BRCMDRIVER_PRIV_PATH=$(BRCMDRIVERS_DIR)/broadcom/include
124 INC_BRCMBOARDPARMS_PATH=$(TARGETS_DIR)/boardparms
125 INC_ENDPOINT_PATH=$(BRCMDRIVERS_DIR)/broadcom/char/endpoint/bcm9$(BRCM_CHIP)/inc
126 #INC_ADSLDRV_PATH=$(BRCMDRIVERS_DIR)/broadcom/char/adsl/bcm9$(BRCM_CHIP)
127 INC_ADSLDRV_PATH=$(BRCMDRIVERS_DIR)/broadcom/char/adsl/impl1
128 BROADCOM_CFM_DIR=$(BROADCOM_DIR)/cfm
129 INC_BRCMCFM_PATH=$(BROADCOM_CFM_DIR)/inc
133 ifeq ($(strip $(BRCM_APP_PHONE)),sip)
137 BRCM_RELEASETAG := $(BRCM_RELEASETAG).sip
140 ifeq ($(strip $(BRCM_APP_PHONE)),mgcp)
144 BRCM_RELEASETAG := $(BRCM_RELEASETAG).mgcp
147 ifneq ($(strip $(BUILD_VODSL)),)
152 BRCM_DSP_HAL_EXTENSION :=
153 XCHANGE_DSP_APP_EXTENSION :=
154 export XCHANGE_DSP_APP=$(BRCM_DSP_CODEC)
156 ifeq ($(strip $(BRCM_DSP_PCM)),y)
157 XCHANGE_DSP_APP := dspApp3341_tdm
158 BRCM_DSP_HAL_EXTENSION := _pcm
161 ifeq ($(strip $(BRCM_DSP_HYBRID)),y)
162 XCHANGE_DSP_APP := dspApp3341_hybrid
163 BRCM_DSP_HAL_EXTENSION := _hybrid
166 ifeq ($(strip $(BRCM_DSP_HYBRID_EXT)),y)
167 BRCM_DSP_HAL_EXTENSION := _hybrid
168 XCHANGE_DSP_APP := dspApp3341_hybrid
169 XCHANGE_DSP_APP_EXTENSION := _ext
172 # APM application with FXO uses the hybrid HAL, as the FXO is provided by TDM port
173 ifeq ($(strip $(BRCM_DSP_APM_FXO)),y)
174 XCHANGE_DSP_APP := dspApp3341
175 BRCM_DSP_HAL_EXTENSION := _hybrid
176 XCHANGE_DSP_APP_EXTENSION := _fxo
179 ifeq ($(strip $(BRCM_DSP_APM_FXO_EXT)),y)
180 XCHANGE_DSP_APP := dspApp3341
181 BRCM_DSP_HAL_EXTENSION := _hybrid
182 XCHANGE_DSP_APP_EXTENSION := _fxo_ext
185 ifeq ($(strip $(BRCM_DSP_HYBRID_FXO)),y)
186 XCHANGE_DSP_APP := dspApp3341_hybrid
187 BRCM_DSP_HAL_EXTENSION := _hybrid
188 XCHANGE_DSP_APP_EXTENSION := _fxo
191 ifeq ($(strip $(BRCM_DSP_HYBRID_FXO_EXT)),y)
192 XCHANGE_DSP_APP := dspApp3341_hybrid
193 BRCM_DSP_HAL_EXTENSION := _fxo
194 XCHANGE_DSP_APP_EXTENSION := _fxo_ext
198 export XCHANGE_BUILD_APP=Bcm$(BRCM_CHIP)$(BRCM_DSP_HAL)$(BRCM_DSP_HAL_EXTENSION)
199 export XCHANGE_DSP_APP_EXTENSION
200 export BRCM_DSP_HAL_EXTENSION
201 BRCM_RELEASETAG := $(BRCM_RELEASETAG).$(XCHANGE_DSP_APP)
203 # If no codec is selected, build G.711 load.
204 # Any XCHANGE_BUILD_APP directory would be OK
205 # because G.711 is included with all the voice DSP images.
206 ifneq ($(strip $(BUILD_VODSL)),)
207 ifeq ($(strip $(XCHANGE_DSP_APP)),)
208 export XCHANGE_BUILD_APP=Bcm$(BRCM_CHIP)gw
209 export XCHANGE_DSP_APP=g711
210 BRCM_RELEASETAG := $(BRCM_RELEASETAG).g711
214 ifeq ($(strip $(XCHG_LE9502_SLIC)),y)
215 ifeq ($(strip $(BRCM_DSP_FXO)),y)
216 export XCHANGE_BUILD_APP=Bcm$(BRCM_CHIP)_Le9502FXO
217 BRCM_RELEASETAG := $(BRCM_RELEASETAG)._LE9502
218 BRCM_DSP_HAL := LE9502_FXO
220 export XCHANGE_BUILD_APP=Bcm$(BRCM_CHIP)_Le9502
221 BRCM_RELEASETAG := $(BRCM_RELEASETAG)._LE9502
222 BRCM_DSP_HAL := LE9502
224 export XCHG_LE9502_SLIC
228 #Set up ADSL standard
229 export ADSL=$(BRCM_ADSL_STANDARD)
231 #Set up ADSL_PHY_MODE {file | obj}
232 export ADSL_PHY_MODE=file
234 #Set up ADSL_SELF_TEST
235 export ADSL_SELF_TEST=$(BRCM_ADSL_SELF_TEST)
237 ###########################################
239 # Complete list of applications
241 ###########################################
242 export OPENSOURCE_DIR=$(USERAPPS_DIR)/opensource
243 SUBDIRS_OPENSOURCE = $(OPENSOURCE_DIR)/atm2684/pvc2684ctl \
244 $(OPENSOURCE_DIR)/bridge-utils \
245 $(OPENSOURCE_DIR)/ppp/pppoe \
246 $(OPENSOURCE_DIR)/udhcp \
247 $(OPENSOURCE_DIR)/iptables \
248 $(OPENSOURCE_DIR)/ebtables \
249 $(OPENSOURCE_DIR)/reaim \
250 $(OPENSOURCE_DIR)/gdbserver \
251 $(OPENSOURCE_DIR)/siproxd \
252 $(OPENSOURCE_DIR)/zebra \
253 $(OPENSOURCE_DIR)/net-snmp \
254 $(OPENSOURCE_DIR)/ftpd \
255 $(OPENSOURCE_DIR)/libcreduction \
256 $(OPENSOURCE_DIR)/busybox
258 #In future, we need to add soap when it
259 #is decoupled from cli
261 export BROADCOM_DIR=$(USERAPPS_DIR)/broadcom
262 SUBDIRS_BROADCOM = $(BROADCOM_DIR)/nvram \
263 $(BROADCOM_DIR)/cfm \
264 $(BROADCOM_DIR)/upnp/router/upnp \
265 $(BROADCOM_DIR)/nas \
266 $(BROADCOM_DIR)/wlctl \
267 $(BROADCOM_DIR)/vodsl \
268 $(BROADCOM_DIR)/atmctl \
269 $(BROADCOM_DIR)/adslctl \
270 $(BROADCOM_DIR)/netctl \
271 $(BROADCOM_DIR)/dnsprobe \
272 $(BROADCOM_DIR)/igmp \
273 $(BROADCOM_DIR)/dhcpr \
274 $(BROADCOM_DIR)/sntp \
275 $(BROADCOM_DIR)/ippd \
276 $(BROADCOM_DIR)/ddnsd \
277 $(BROADCOM_DIR)/ethctl \
278 $(BROADCOM_DIR)/hotplug \
279 $(BROADCOM_DIR)/epittcp \
282 SUBDIRS_APP = $(SUBDIRS_BROADCOM) $(SUBDIRS_OPENSOURCE)
283 SUBDIRS = $(foreach dir, $(SUBDIRS_APP), $(shell if [ -d "$(dir)" ]; then echo $(dir); fi))
285 OPENSOURCE_APPS = pvc2684ctl pvc2684d brctl pppd udhcp iptables ebtables \
286 reaim siproxd snmp zebra bftpd busybox gdbserver
288 BROADCOM_APPS = nvram cfm upnp nas wlctl vodsl atmctl adslctl netctl dnsprobe \
289 igmp dhcpr diagapp sntp ddnsd ilmi ippd hotplug ethctl epittcp ses
290 LIBC_OPTIMIZATION = libcreduction
292 BUSYBOX_DIR = $(OPENSOURCE_DIR)/busybox
294 BRCMAPPS = $(BROADCOM_APPS) $(OPENSOURCE_APPS) $(LIBC_OPTIMIZATION)
296 all: sanity_check profile_check kernelbuild modbuild app hosttools buildimage
299 @cd $(INC_KERNEL_BASE); \
300 if [ ! -e linux/CREDITS ]; then \
301 echo Untarring original Linux kernel source...; \
302 (tar xkfj $(ORIGINAL_KERNEL) 2> /dev/null || true); \
304 $(MAKE) -C $(KERNEL_DIR)/scripts/lxdialog HOSTCC=gcc
305 $(CONFIG_SHELL) $(HOSTTOOLS_DIR)/scripts/Menuconfig $(TARGETS_DIR)/config.in
308 @if [ "$(PROFILE)" = "" ]; then \
309 echo You need to specify build profile name from $(TARGETS_DIR) using 'make PROFILE=<profile name>...'; exit 1; \
313 @if [ "$(LAST_PROFILE)" != "" ] && [ "$(LAST_PROFILE)" != "$(PROFILE)" ]; then \
314 echo "The specified profile, $(PROFILE), differs from the last one built, $(LAST_PROFILE)."; \
315 echo "The entire image must be rebuilt."; \
316 read -p "Press ENTER to rebuild the entire image or CTRL-C to abort. " ; \
317 $(MAKE) PROFILE=$(LAST_PROFILE) clean; \
318 $(MAKE) PROFILE=$(PROFILE); \
319 echo "Ignore the make exit error, Error 1"; \
323 $(KERNEL_DIR)/vmlinux:
324 $(GENDEFCONFIG_CMD) $(PROFILE_PATH)
326 cp -f $(KERNEL_DIR)/arch/mips/defconfig $(KERNEL_DIR)/.config; \
327 $(MAKE) oldconfig; $(MAKE); $(MAKE) modules_install
330 ifeq ($(wildcard $(KERNEL_DIR)/vmlinux),)
331 @cd $(INC_KERNEL_BASE); \
332 if [ ! -e linux/CREDITS ]; then \
333 echo Untarring original Linux kernel source...; \
334 (tar xkfj $(ORIGINAL_KERNEL) 2> /dev/null || true); \
336 $(GENDEFCONFIG_CMD) $(PROFILE_PATH)
338 cp -f $(KERNEL_DIR)/arch/mips/defconfig $(KERNEL_DIR)/.config; \
339 $(MAKE) oldconfig; $(MAKE)
341 cd $(KERNEL_DIR); $(MAKE)
344 kernel: profile_check kernelbuild hosttools buildimage
346 ifeq ($(strip $(VOXXXLOAD)),1)
347 modbuild: touch_voice_files
348 cd $(KERNEL_DIR); $(MAKE) modules && $(MAKE) modules_install
351 cd $(KERNEL_DIR); $(MAKE) modules && $(MAKE) modules_install
354 modules: profile_check modbuild hosttools buildimage
356 app: profile_check prebuild $(BRCMAPPS) hosttools buildimage
359 mkdir -p $(INSTALL_DIR)/bin $(INSTALL_DIR)/lib
361 # touch_voice_files doesn't clean up voice, just enables incremental build of voice code
363 find bcmdrivers/broadcom/char/endpoint/ \( -name '*.o' -o -name '*.a' -o -name '*.lib' -o -name '*.ko' -o -name '*.cmd' -o -name '.*.cmd' -o -name '*.c' -o -name '*.mod' \) -print -exec rm -f "{}" ";"
364 rm -rf kernel/linux/.tmp_versions/endpointdd.mod
365 rm -rf kernel/linux/arch/mips/defconfig
366 rm -rf kernel/linux/include/config/bcm/endpoint/
367 rm -rf kernel/linux/include/asm-mips/offset.h
368 rm -rf kernel/linux/include/asm-mips/reg.h
369 find kernel/linux/lib/ -name '*.o' -print -exec rm -f "{}" ";"
370 find kernel/linux/lib/ -name '*.lib' -print -exec rm -f "{}" ";"
372 # Build user applications depending on if they are
373 # specified in the profile
374 ifneq ($(strip $(BUILD_PVC2684CTL)),)
375 export BUILD_PVC2684D=$(BUILD_PVC2684CTL)
378 $(MAKE) -C $(OPENSOURCE_DIR)/atm2684/pvc2684ctl $(BUILD_PVC2684CTL)
383 ifneq ($(strip $(BUILD_BRCTL)),)
385 cd $(OPENSOURCE_DIR); (tar xkfj bridge-utils.tar.bz2 2> /dev/null || true)
386 $(MAKE) -C $(OPENSOURCE_DIR)/bridge-utils $(BUILD_BRCTL)
391 ifneq ($(strip $(BUILD_VCONFIG)),)
392 export BUILD_VCONFIG=y
395 ifneq ($(strip $(BUILD_CFM)),)
397 ifneq ($(strip $(BUILD_CFM_MENU)),)
398 export BUILD_CFM_MENU=y
402 $(MAKE) -C $(BROADCOM_DIR)/cfm $(BUILD_CFM)
407 # iptables is dependent on kernel netfilter modules
408 ifneq ($(strip $(BRCM_KERNEL_NETFILTER)),)
409 ifneq ($(strip $(BUILD_IPTABLES)),)
411 cd $(OPENSOURCE_DIR); (tar xkfj iptables.tar.bz2 2> /dev/null || true)
412 $(MAKE) -C $(OPENSOURCE_DIR)/iptables $(BUILD_IPTABLES)
414 cd $(OPENSOURCE_DIR); (tar xkfj iptables.tar.bz2 2> /dev/null || true)
415 $(MAKE) -C $(OPENSOURCE_DIR)/iptables static
421 @echo Warning: You need to enable netfilter in the kernel !!!!!
424 ifneq ($(strip $(BUILD_EBTABLES)),)
426 cd $(OPENSOURCE_DIR); (tar xkfj ebtables.tar.bz2 2> /dev/null || true)
427 $(MAKE) -C $(OPENSOURCE_DIR)/ebtables $(BUILD_EBTABLES)
432 ifneq ($(strip $(BUILD_PPPD)),)
434 $(MAKE) -C $(OPENSOURCE_DIR)/ppp/pppoe $(BUILD_PPPD)
439 ifneq ($(strip $(BUILD_REAIM)),)
441 cd $(OPENSOURCE_DIR); (tar xkfj reaim.tar.bz2 2> /dev/null || true)
442 $(MAKE) -C $(OPENSOURCE_DIR)/reaim $(BUILD_REAIM)
447 ifneq ($(strip $(BUILD_GDBSERVER)),)
449 $(MAKE) -C $(OPENSOURCE_DIR)/gdbserver dynamic
454 ifneq ($(strip $(BUILD_ETHWAN)),)
455 export BUILD_ETHWAN=y
458 ifneq ($(strip $(BUILD_UDHCP)),)
460 $(MAKE) -C $(OPENSOURCE_DIR)/udhcp $(BUILD_UDHCP)
465 # UPNP is dependent on iptables
466 ifneq ($(strip $(BUILD_IPTABLES)),)
467 ifneq ($(strip $(BUILD_UPNP)),)
469 $(MAKE) -C $(BROADCOM_DIR)/upnp/router/upnp $(BUILD_UPNP)
475 @echo Warning: You need to build iptables first !!!!!
479 ifneq ($(strip $(BUILD_SIPROXD)),)
481 cd $(OPENSOURCE_DIR); (tar xkfj libosip2.tar.bz2 2> /dev/null || true)
482 cd $(OPENSOURCE_DIR); (tar xkfj siproxd.tar.bz2 2> /dev/null || true)
483 $(MAKE) -C $(OPENSOURCE_DIR)/siproxd $(BUILD_SIPROXD)
488 ifneq ($(strip $(BUILD_SNMP)),)
490 ifneq ($(strip $(BUILD_SNMP_SET)),)
491 export BUILD_SNMP_SET=1
493 export BUILD_SNMP_SET=0
496 ifneq ($(strip $(BUILD_SNMP_ADSL_MIB)),)
497 export BUILD_SNMP_ADSL_MIB=1
499 export BUILD_SNMP_ADSL_MIB=0
502 ifneq ($(strip $(BUILD_SNMP_ATM_MIB)),)
503 export BUILD_SNMP_ATM_MIB=1
505 export BUILD_SNMP_ATM_MIB=0
508 ifneq ($(strip $(BUILD_SNMP_AT_MIB)),)
509 export BUILD_SNMP_AT_MIB=1
511 export BUILD_SNMP_AT_MIB=0
514 ifneq ($(strip $(BUILD_SNMP_SYSOR_MIB)),)
515 export BUILD_SNMP_SYSOR_MIB=1
517 export BUILD_SNMP_SYSOR_MIB=0
520 ifneq ($(strip $(BUILD_SNMP_TCP_MIB)),)
521 export BUILD_SNMP_TCP_MIB=1
523 export BUILD_SNMP_TCP_MIB=0
526 ifneq ($(strip $(BUILD_SNMP_UDP_MIB)),)
527 export BUILD_SNMP_UDP_MIB=1
529 export BUILD_SNMP_UDP_MIB=0
532 ifneq ($(strip $(BUILD_SNMP_IP_MIB)),)
533 export BUILD_SNMP_IP_MIB=1
535 export BUILD_SNMP_IP_MIB=0
538 ifneq ($(strip $(BUILD_SNMP_ICMP_MIB)),)
539 export BUILD_SNMP_ICMP_MIB=1
541 export BUILD_SNMP_ICMP_MIB=0
544 ifneq ($(strip $(BUILD_SNMP_SNMP_MIB)),)
545 export BUILD_SNMP_SNMP_MIB=1
547 export BUILD_SNMP_SNMP_MIB=0
550 ifneq ($(strip $(BUILD_SNMP_ATMFORUM_MIB)),)
551 export BUILD_SNMP_ATMFORUM_MIB=1
553 export BUILD_SNMP_ATMFORUM_MIB=0
557 cd $(OPENSOURCE_DIR); (tar xkfj net-snmp.tar.bz2 2> /dev/null || true)
558 $(MAKE) -C $(OPENSOURCE_DIR)/net-snmp $(BUILD_SNMP)
563 ifneq ($(strip $(BUILD_ILMI)),)
565 cd $(OPENSOURCE_DIR); (tar xkfj net-snmp.tar.bz2 2> /dev/null || true)
566 $(MAKE) -C $(BROADCOM_DIR)/ilmi $(BUILD_ILMI)
571 ifneq ($(strip $(BUILD_VODSL)),)
573 $(MAKE) -C $(BROADCOM_DIR)/vodsl $(BUILD_VODSL)
578 # Leave it for the future when soap server is decoupled from cfm
579 ifneq ($(strip $(BUILD_SOAP)),)
580 ifeq ($(strip $(BUILD_SOAP_VER)),2)
582 $(MAKE) -C $(BROADCOM_DIR)/SoapToolkit/SoapServer $(BUILD_SOAP)
585 $(MAKE) -C $(BROADCOM_DIR)/soap $(BUILD_SOAP)
591 ifneq ($(strip $(BUILD_NAS)),)
594 $(MAKE) -C $(BROADCOM_DIR)/nas $(BUILD_NAS)
596 #add hotplug here, for nas use only
598 $(MAKE) -C $(BROADCOM_DIR)/hotplug $(BUILD_NAS)
603 #add hotplug here, for nas use only
607 ifneq ($(strip $(BUILD_WLCTL)),)
610 $(MAKE) -C $(BROADCOM_DIR)/wlctl $(BUILD_WLCTL)
616 #Always compile Ethernet control utility
618 $(MAKE) -C $(BROADCOM_DIR)/ethctl dynamic
620 ifneq ($(strip $(BUILD_DNSPROBE)),)
622 $(MAKE) -C $(BROADCOM_DIR)/dnsprobe $(BUILD_DNSPROBE)
627 ifneq ($(strip $(BUILD_IGMP)),)
629 $(MAKE) -C $(BROADCOM_DIR)/igmp $(BUILD_IGMP)
634 ifneq ($(strip $(BUILD_DHCPR)),)
636 $(MAKE) -C $(BROADCOM_DIR)/dhcpr $(BUILD_DHCPR)
641 ifneq ($(strip $(BUILD_ZEBRA)),)
643 cd $(OPENSOURCE_DIR); (tar xkfj zebra.tar.bz2 2> /dev/null || true)
644 $(MAKE) -C $(OPENSOURCE_DIR)/zebra $(BUILD_ZEBRA)
649 ifneq ($(strip $(BUILD_ATMCTL)),)
651 $(MAKE) -C $(BROADCOM_DIR)/atmctl $(BUILD_ATMCTL)
656 ifneq ($(strip $(BUILD_ADSLCTL)),)
658 $(MAKE) -C $(BROADCOM_DIR)/adslctl $(BUILD_ADSLCTL)
663 ifeq ($(strip $(BUILD_CFM_CLI)),y)
664 ifneq ($(strip $(BUILD_NETCTL)),)
666 $(MAKE) -C $(BROADCOM_DIR)/netctl $(BUILD_NETCTL)
674 ifneq ($(strip $(BUILD_BUSYBOX)),)
676 cd $(OPENSOURCE_DIR); (tar xkfj busybox.tar.bz2 2> /dev/null || true)
677 # $(MAKE) -C $(OPENSOURCE_DIR)/busybox $(BUILD_BUSYBOX)
678 cd $(OPENSOURCE_DIR)/busybox; cp -f brcm.config .config
679 $(MAKE) -C $(OPENSOURCE_DIR)/busybox install
684 ifneq ($(strip $(BUILD_LIBCREDUCTION)),)
686 mkdir -p $(OPENSOURCE_DIR)/libcreduction/uclibc
687 $(MAKE) -C $(OPENSOURCE_DIR)/libcreduction install
692 ifneq ($(strip $(BUILD_DIAGAPP)),)
694 $(MAKE) -C $(BROADCOM_DIR)/diagapp $(BUILD_DIAGAPP)
699 ifneq ($(strip $(BUILD_FTPD)),)
701 cd $(OPENSOURCE_DIR); (tar xkfj ftpd.tar.bz2 2> /dev/null || true)
702 $(MAKE) -C $(OPENSOURCE_DIR)/ftpd $(BUILD_FTPD)
707 ifneq ($(strip $(BUILD_DDNSD)),)
709 $(MAKE) -C $(BROADCOM_DIR)/ddnsd $(BUILD_DDNSD)
714 ifneq ($(strip $(BUILD_SNTP)),)
716 $(MAKE) -C $(BROADCOM_DIR)/sntp $(BUILD_SNTP)
721 ifneq ($(strip $(BUILD_EPITTCP)),)
723 $(MAKE) -C $(BROADCOM_DIR)/epittcp $(BUILD_EPITTCP)
728 ifneq ($(strip $(BUILD_SES)),)
730 $(MAKE) -C $(BROADCOM_DIR)/ses $(BUILD_SES)
735 ifneq ($(strip $(BUILD_NVRAM)),)
737 $(MAKE) -C $(BROADCOM_DIR)/nvram $(BUILD_NVRAM)
742 ifneq ($(strip $(BUILD_IPPD)),)
744 $(MAKE) -C $(BROADCOM_DIR)/ippd $(BUILD_IPPD)
750 $(MAKE) -C $(HOSTTOOLS_DIR)
753 buildimage: $(KERNEL_DIR)/vmlinux
754 su --command="cd $(TARGETS_DIR); ./buildFS"
755 ifeq ($(strip $(BRCM_KERNEL_ROOTFS)),squashfs)
756 #$(HOSTTOOLS_DIR)/mksquashfs $(TARGET_FS) $(PROFILE_DIR)/rootfs.img -noappend -be -always-use-fragments -gzip
757 $(HOSTTOOLS_DIR)/mksquashfs $(TARGET_FS) $(PROFILE_DIR)/rootfs.img -noappend -be -lzma -no-fragments -noI
759 ifeq ($(strip $(BRCM_KERNEL_ROOTFS)),cramfs)
760 # $(HOSTTOOLS_DIR)/mkcramfs -r -g $(TARGET_FS) $(PROFILE_DIR)/rootfs.img
761 $(HOSTTOOLS_DIR)/mkcramfs -r $(TARGET_FS) $(PROFILE_DIR)/rootfs.img
763 ifeq ($(strip $(BRCM_KERNEL_ROOTFS)),jffs2)
764 $(HOSTTOOLS_DIR)/mkfs.jffs2 -b -p -e $(BRCM_FLASHBLK_SIZE) -r $(TARGET_FS) -o $(PROFILE_DIR)/rootfs.img
769 ifneq ($(strip $(BRCM_KERNEL_ROOTFS)),nfs)
771 cp $(KERNEL_DIR)/vmlinux . ; \
772 $(STRIP) --remove-section=.note --remove-section=.comment vmlinux; \
773 $(OBJCOPY) -O binary vmlinux vmlinux.bin; \
774 $(HOSTTOOLS_DIR)/cmplzma -k -2 vmlinux vmlinux.bin vmlinux.lz;\
775 $(HOSTTOOLS_DIR)/bcmImageBuilder --output $(FS_KERNEL_IMAGE_NAME) --chip $(BRCM_CHIP) --board $(BRCM_BOARD_ID) --blocksize $(BRCM_FLASHBLK_SIZE) --cfefile $(CFE_FILE) --rootfsfile rootfs.img --kernelfile vmlinux.lz; \
776 $(HOSTTOOLS_DIR)/bcmImageBuilder --output $(CFE_FS_KERNEL_IMAGE_NAME) --chip $(BRCM_CHIP) --board $(BRCM_BOARD_ID) --blocksize $(BRCM_FLASHBLK_SIZE) --cfefile $(CFE_FILE) --rootfsfile rootfs.img --kernelfile vmlinux.lz --include-cfe; \
777 $(HOSTTOOLS_DIR)/createimg -b $(BRCM_BOARD_ID) -n $(BRCM_NUM_MAC_ADDRESSES) -m $(BRCM_BASE_MAC_ADDRESS) -i $(CFE_FS_KERNEL_IMAGE_NAME) -o $(FLASH_IMAGE_NAME) -l $(VENDOR_COUNTRY); \
778 $(HOSTTOOLS_DIR)/addvtoken $(FLASH_IMAGE_NAME) $(FLASH_IMAGE_NAME).w
779 @mkdir -p $(IMAGES_DIR)
780 @cp $(PROFILE_DIR)/$(FS_KERNEL_IMAGE_NAME) $(IMAGES_DIR)/$(FS_KERNEL_IMAGE_NAME)_$(BRCM_RELEASETAG)-$(shell date '+%y%m%d_%H%M')
782 @echo -e "Done! Image $(PROFILE) has been built in $(IMAGES_DIR)."
785 cp $(KERNEL_DIR)/vmlinux . ; \
786 $(STRIP) --remove-section=.note --remove-section=.comment vmlinux
788 @echo -e "\t=== Following the below steps to start your NFS root file system on host ==="
789 @echo -e "Step 1: Copy $(PROFILE_DIR)/vmlinux to your TFTP server boot directory, such as /tftpboot"
790 @echo -e "Step 2: Add \"$(PROFILE_DIR)/fs *(rw,no_root_squash)\" to /etc/exports"
791 @echo -e "Step 3: Become root and restart your nfs server, such as \"service nfs restart\""
792 @echo -e "Step 4: Reboot your board and break into CFE bootloader, choose h on \"Run from flash/host\" and vmlinux on \"Default host run file name\""
796 ###########################################
798 # System code clean-up
800 ###########################################
802 subdirs: $(patsubst %, _dir_%, $(SUBDIRS))
804 $(patsubst %, _dir_%, $(SUBDIRS)) :
805 $(MAKE) -C $(patsubst _dir_%, %, $@) $(TGT)
807 clean: target_clean app_clean kernel_clean hosttools_clean
811 rm -fr $(INSTALL_DIR)/bin
812 rm -fr $(INSTALL_DIR)/sbin
813 rm -fr $(INSTALL_DIR)/lib
814 rm -fr $(INSTALL_DIR)/upnp
815 rm -fr $(INSTALL_DIR)/docs
816 rm -fr $(INSTALL_DIR)/webs
817 rm -fr $(INSTALL_DIR)/usr
818 rm -fr $(INSTALL_DIR)/linuxrc
820 kernel_clean: sanity_check
821 $(MAKE) -C $(KERNEL_DIR) mrproper
822 rm -f $(KERNEL_DIR)/arch/mips/defconfig
823 rm -f $(HOSTTOOLS_DIR)/lzma/decompress/*.o
824 rm -rf $(XCHANGE_DIR)/dslx/lib/LinuxKernel
825 rm -rf $(XCHANGE_DIR)/dslx/obj/LinuxKernel
827 app_clean: sanity_check fssrc_clean
828 $(MAKE) subdirs TGT=clean
829 rm -rf $(XCHANGE_DIR)/dslx/lib/LinuxUser
830 rm -rf $(XCHANGE_DIR)/dslx/obj/LinuxUser
832 target_clean: sanity_check
833 rm -f $(PROFILE_DIR)/rootfs.img
834 rm -f $(PROFILE_DIR)/vmlinux
835 rm -f $(PROFILE_DIR)/vmlinux.bin
836 rm -f $(PROFILE_DIR)/vmlinux.lz
837 rm -f $(PROFILE_DIR)/$(FS_KERNEL_IMAGE_NAME)
838 rm -f $(PROFILE_DIR)/$(CFE_FS_KERNEL_IMAGE_NAME)
839 rm -f $(PROFILE_DIR)/$(FLASH_IMAGE_NAME)
840 rm -f $(PROFILE_DIR)/$(FLASH_IMAGE_NAME).w
841 rm -fr $(PROFILE_DIR)/modules
842 find targets -name vmlinux -print -exec rm -f "{}" ";"
843 su --command="rm -fr $(TARGET_FS)"
846 $(MAKE) -C $(HOSTTOOLS_DIR) clean
848 ###########################################
850 # System-wide exported variables
852 ###########################################
854 export BRCM_VERSION BRCM_RELEASE BRCM_EXTRAVERSION BRCM_RELEASETAG BRCM_BOARD RUN_NOISE \
855 INC_KERNEL_BASE KERNEL_DIR BRCMDRIVERS_DIR USERAPPS_DIR HOSTTOOLS_DIR TARGETS_DIR DEFAULTCFG_DIR XCHANGE_DIR FSSRC_DIR BUSYBOX_DIR \
856 PROFILE_DIR INSTALL_DIR LINUXDIR INC_BRCMDRIVER_PUB_PATH INC_BRCMDRIVER_PRIV_PATH INC_BRCMBOARDPARMS_PATH INC_ENDPOINT_PATH INC_ADSLDRV_PATH BROADCOM_CFM_DIR INC_BRCMCFM_PATH BRCM_KERNEL_ROOTFS BRCMAPPS \
857 BRCM_UCLIBC CROSS_COMPILE TOOLCHAIN AS LD CC CXX AR NM STRIP SSTRIP OBJCOPY OBJDUMP RANLIB LIB_PATH LIBCDIR LIBDIR \
858 BUILD_BR2684CTL BUILD_PVC2684CTL BUILD_RT2684D BUILD_BRCTL BUILD_CFM BUILD_CFM_CLI BUILD_IPTABLES BUILD_EBTABLES BUILD_VODSL BUILD_SIPROXD \
859 BRCM_APP_PHONE BUILD_SOAP BUILD_SOAP_VER BRCM_DSP_CODEC_G711 BRCM_DSP_CODEC_G723 BRCM_DSP_CODEC_G726 BRCM_DSP_CODEC_G729 \
860 BRCM_DSP_CODEC_G7xx BRCM_DSP_PCM BRCM_DSP_HYBRID BRCM_DSP_HYBRID_EXT BRCM_DSP_APM_FXO BRCM_DSP_APM_FXO_EXT BRCM_DSP_HYBRID_FXO \
861 BRCM_DSP_HYBRID_FXO_EXT BRCM_DSP_CODEC_T38_EXT BRCM_DSP_CODEC_T38_INT BRCM_DSP_HAL BRCM_DSP_HAL_EXTENSION XCHANGE_DSP_APP_EXTENSION BRCM_VOICE_COUNTRY_JAPAN BRCM_VOICE_GLOBAL_CFLAGS \
862 BUILD_PPPD BUILD_REAIM BUILD_GDBSERVER BUILD_UDHCP BUILD_DHCPR BUILD_UPNP BUILD_SNMP BUILD_NAS BUILD_WLCTL BUILD_BUSYBOX BUILD_DNSPROBE BUILD_SLACTEST BUILD_VCONFIG BUILD_ETHWAN \
863 BUILD_ZEBRA BUILD_ATMCTL BUILD_ADSLCTL BUILD_NETCTL BUILD_IGMP BRCM_PTHREADS BUILD_DIAGAPP \
864 BUILD_CFM_TELNETD BUILD_CFM_SSHD BUILD_SSHD_MIPS_GENKEY BUILD_FTPD BRCM_DRIVER_PCI \
865 BRCM_PSI_VERSION WEB_POPUP BUILD_DIR BUILD_DDNSD BUILD_SNTP BUILD_TOD BUILD_IPPD BUILD_VCONFIG JTAG_KERNEL_DEBUG \
866 BUILD_EPITTCP BUILD_NVRAM BUILD_SES