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 SHARED_DIR = $(BUILD_DIR)/shared
45 CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
46 else if [ -x /bin/bash ]; then echo /bin/bash; \
47 else echo sh; fi ; fi)
48 GENDEFCONFIG_CMD = $(HOSTTOOLS_DIR)/scripts/gendefconfig
53 ###########################################
55 # Import Build Profiles
57 ###########################################
59 LAST_PROFILE=$(shell find targets -name vmlinux | sed -e "s?targets/??" -e "s?/.*??" -e "q")
60 ifeq ($(strip $(PROFILE)),)
61 PROFILE=$(LAST_PROFILE)
64 ifneq ($(strip $(PROFILE)),)
65 include $(TARGETS_DIR)/$(PROFILE)/$(PROFILE)
67 export BRCM_FLASHPSI_SIZE
68 export BRCM_DRIVER_WIRELESS_PCMCIA_DATASWAP BRCM_DRIVER_WIRELESS_EBI_DMA
69 export BRCM_DRIVER_USB BRCM_DRIVER_ETHERNET_CONFIG
70 export BRCM_DEFAULTCFG
71 export BRCM_KERNEL_NF_FIREWALL BRCM_KERNEL_NF_MANGLE BRCM_KERNEL_NF_NAT
74 ###########################################
78 ###########################################
79 ifeq ($(strip $(BRCM_UCLIBC)),y)
81 ifeq ($(strip $(NTC)),1)
82 TOOLCHAIN=/opt/toolchains/uclibc-crosstools_gcc-3.4.2_uclibc-20050502
83 CROSS_COMPILE = $(TOOLCHAIN)/bin/mips-linux-uclibc-
85 TOOLCHAIN=/opt/toolchains/uclibc
86 CROSS_COMPILE = $(TOOLCHAIN)/bin/mips-uclibc-
89 TOOLCHAIN=/usr/crossdev/mips
90 CROSS_COMPILE = $(TOOLCHAIN)/bin/mips-linux-
93 AR = $(CROSS_COMPILE)ar
94 AS = $(CROSS_COMPILE)as
95 LD = $(CROSS_COMPILE)ld
96 CC = $(CROSS_COMPILE)gcc
97 CXX = $(CROSS_COMPILE)g++
98 CPP = $(CROSS_COMPILE)cpp
99 NM = $(CROSS_COMPILE)nm
100 STRIP = $(CROSS_COMPILE)strip
101 SSTRIP = $(CROSS_COMPILE)sstrip
102 OBJCOPY = $(CROSS_COMPILE)objcopy
103 OBJDUMP = $(CROSS_COMPILE)objdump
104 RANLIB = $(CROSS_COMPILE)ranlib
106 LIB_PATH = $(TOOLCHAIN)/mips-linux/lib
107 LIBDIR = $(TOOLCHAIN)/mips-linux/lib
108 LIBCDIR = $(TOOLCHAIN)/mips-linux
110 ###########################################
112 # Application-specific settings
114 ###########################################
115 INSTALL_DIR = $(TARGETS_DIR)/fs.src
116 TARGET_FS = $(TARGETS_DIR)/$(PROFILE)/fs
117 PROFILE_DIR = $(TARGETS_DIR)/$(PROFILE)
118 PROFILE_PATH = $(TARGETS_DIR)/$(PROFILE)/$(PROFILE)
120 FS_KERNEL_IMAGE_NAME = $(VENDOR_NAME)$(PROFILE)_fs_kernel
121 CFE_FS_KERNEL_IMAGE_NAME = $(VENDOR_NAME)$(PROFILE)_cfe_fs_kernel
122 FLASH_IMAGE_NAME = $(VENDOR_NAME)$(PROFILE)_flash_image_$(BRCM_BOARD_ID)
123 INC_BRCMDRIVER_PUB_PATH=$(BRCMDRIVERS_DIR)/opensource/include
124 INC_BRCMDRIVER_PRIV_PATH=$(BRCMDRIVERS_DIR)/broadcom/include
125 INC_BRCMBOARDPARMS_PATH=$(TARGETS_DIR)/boardparms
126 INC_ENDPOINT_PATH=$(BRCMDRIVERS_DIR)/broadcom/char/endpoint/bcm9$(BRCM_CHIP)/inc
127 #INC_ADSLDRV_PATH=$(BRCMDRIVERS_DIR)/broadcom/char/adsl/bcm9$(BRCM_CHIP)
128 INC_ADSLDRV_PATH=$(BRCMDRIVERS_DIR)/broadcom/char/adsl/impl1
129 BROADCOM_CFM_DIR=$(BROADCOM_DIR)/cfm
130 INC_BRCMCFM_PATH=$(BROADCOM_CFM_DIR)/inc
132 INC_BRCMSHARED_INC_PATH=$(SHARED_DIR)/include
133 INC_BRCMSHARED_SRC_PATH=$(SHARED_DIR)/src
136 ifeq ($(strip $(BRCM_APP_PHONE)),sip)
141 ifeq ($(strip $(BRCM_VODSL_CONFIG_MANAGER)),y)
142 export BRCM_VODSL_CFGMGR=1
145 BRCM_RELEASETAG := $(BRCM_RELEASETAG).sip
148 ifeq ($(strip $(BRCM_APP_PHONE)),mgcp)
152 export BRCM_VODSL_CFGMGR=0
153 BRCM_RELEASETAG := $(BRCM_RELEASETAG).mgcp
156 ifeq ($(strip $(BRCM_PROFILER_ENABLED)),y)
157 export BRCM_PROFILER_TOOL=1
159 export BRCM_PROFILER_TOOL=0
162 ifneq ($(strip $(BUILD_VODSL)),)
166 ifeq ($(strip $(BRCM_VODSL_STUNC)),y)
167 export BRCM_VODSL_STUN_CLIENT=1
171 BRCM_DSP_HAL_EXTENSION :=
172 XCHANGE_DSP_APP_EXTENSION :=
173 export XCHANGE_DSP_APP=$(BRCM_DSP_CODEC)
175 ifeq ($(strip $(BRCM_DSP_PCM)),y)
176 XCHANGE_DSP_APP := dspApp3341_tdm
177 BRCM_DSP_HAL_EXTENSION := _pcm
180 ifeq ($(strip $(BRCM_DSP_PCM_G726)),y)
181 XCHANGE_DSP_APP := dspApp3341_tdm_g726
182 BRCM_DSP_HAL_EXTENSION := _pcm
185 ifeq ($(strip $(BRCM_DSP_PCM_T38_EXT)),y)
186 XCHANGE_DSP_APP := dspApp3341_tdm_t38
187 BRCM_DSP_HAL_EXTENSION := _pcm
190 ifeq ($(strip $(BRCM_DSP_APM_FXO_EXT)),y)
191 XCHANGE_DSP_APP := dspApp3341
192 BRCM_DSP_HAL_EXTENSION := _hybrid
193 XCHANGE_DSP_APP_EXTENSION := _fxo_ext
197 # Warning here, we do re-assign some of the variables defined earlier:
198 # BRCM_DSP_HAL and BRCM_DSP_HAL_EXTENSION for example, in order to pickup
199 # the correct board HAL application.
201 ifeq ($(strip $(BRCM_DSP_FXO)),y)
202 ifeq ($(strip $(BRCM_SLIC_LE9502)),y)
203 export XCHANGE_BUILD_APP=Bcm$(BRCM_CHIP)_Le9502FXO
204 BRCM_RELEASETAG := $(BRCM_RELEASETAG)._LE9502
205 BRCM_DSP_HAL := _Le9502FXO
206 BRCM_DSP_HAL_EXTENSION :=
207 export BRCM_SLIC_LE9502
209 ifeq ($(strip $(BRCM_SLIC_LE9500)),y)
210 export XCHANGE_BUILD_APP=Bcm$(BRCM_CHIP)_Le9500FXO
211 BRCM_RELEASETAG := $(BRCM_RELEASETAG)._LE9500
212 BRCM_DSP_HAL := _Le9500FXO
213 BRCM_DSP_HAL_EXTENSION :=
214 export BRCM_SLIC_LE9500
221 # DSP codec flags definition. To be used throughout the application (for configuration and vodsl)
224 BRCM_DSP_CODEC_DEFINES := -DXCFG_G711_SUPPORT=1
226 ifeq ($(strip $(BRCM_DSP_CODEC_G723)),y)
227 BRCM_DSP_CODEC_DEFINES += -DXCFG_G7231_SUPPORT=1
230 ifeq ($(strip $(BRCM_DSP_CODEC_G726)),y)
231 BRCM_DSP_CODEC_DEFINES += -DXCFG_G726_SUPPORT=1
234 ifeq ($(strip $(BRCM_DSP_CODEC_G729)),y)
235 BRCM_DSP_CODEC_DEFINES += -DXCFG_G729_SUPPORT=1
238 ifeq ($(strip $(BRCM_DSP_CODEC_G7xx)),y)
239 BRCM_DSP_CODEC_DEFINES += -DXCFG_G7231_SUPPORT=1
240 BRCM_DSP_CODEC_DEFINES += -DXCFG_G726_SUPPORT=1
241 BRCM_DSP_CODEC_DEFINES += -DXCFG_G729_SUPPORT=1
244 ifeq ($(strip $(BRCM_DSP_PCM)),y)
245 BRCM_DSP_CODEC_DEFINES += -DXCFG_G729_SUPPORT=1
248 ifeq ($(strip $(BRCM_DSP_PCM_G726)),y)
249 BRCM_DSP_CODEC_DEFINES += -DXCFG_G726_SUPPORT=1
250 BRCM_DSP_CODEC_DEFINES += -DXCFG_FAX_SUPPORT=1
253 ifeq ($(strip $(BRCM_DSP_PCM_T38_EXT)),y)
254 BRCM_DSP_CODEC_DEFINES += -DXCFG_G729_SUPPORT=1
255 BRCM_DSP_CODEC_DEFINES += -DXCFG_FAX_SUPPORT=1
258 ifeq ($(strip $(BRCM_DSP_CODEC_T38_EXT)),y)
259 BRCM_DSP_CODEC_DEFINES += -DXCFG_G726_SUPPORT=1
260 BRCM_DSP_CODEC_DEFINES += -DXCFG_G729_SUPPORT=1
261 BRCM_DSP_CODEC_DEFINES += -DXCFG_FAX_SUPPORT=1
264 ifeq ($(strip $(BRCM_DSP_APM_FXO_EXT)),y)
265 BRCM_DSP_CODEC_DEFINES += -DXCFG_G729_SUPPORT=1
266 BRCM_DSP_CODEC_DEFINES += -DXCFG_G726_SUPPORT=1
267 BRCM_DSP_CODEC_DEFINES += -DXCFG_FAX_SUPPORT=1
272 # Definition of the number of voice channels supported based on the specific
273 # application being created.
276 ifeq ($(strip $(BRCM_DSP_APM_FXO_EXT)), y)
277 BRCM_DSP_CHAN_DEFINES = -DNUM_APM_VOICE_CHANNELS=2 -DNUM_TDM_VOICE_CHANNELS=0 -DNUM_FXO_CHANNELS=1
279 BRCM_DSP_CHAN_DEFINES = -DNUM_APM_VOICE_CHANNELS=0 -DNUM_TDM_VOICE_CHANNELS=0 -DNUM_FXO_CHANNELS=0
282 export BRCM_DSP_CODEC_DEFINES
283 export BRCM_DSP_CHAN_DEFINES
285 export XCHANGE_BUILD_APP=Bcm$(BRCM_CHIP)$(BRCM_DSP_HAL)$(BRCM_DSP_HAL_EXTENSION)
286 export XCHANGE_DSP_APP_EXTENSION
287 export BRCM_DSP_HAL_EXTENSION
288 BRCM_RELEASETAG := $(BRCM_RELEASETAG).$(XCHANGE_DSP_APP)
290 # If no codec is selected, build G.711 load.
291 # Any XCHANGE_BUILD_APP directory would be OK
292 # because G.711 is included with all the voice DSP images.
293 ifneq ($(strip $(BUILD_VODSL)),)
294 ifeq ($(strip $(XCHANGE_DSP_APP)),)
295 export XCHANGE_BUILD_APP=Bcm$(BRCM_CHIP)gw
296 export XCHANGE_DSP_APP=g711
297 BRCM_RELEASETAG := $(BRCM_RELEASETAG).g711
301 ifeq ($(strip $(BRCM_MIPS_ONLY_BUILD)),y)
302 export XCHANGE_BUILD_APP=Bcm$(BRCM_CHIP)lv
304 BRCM_DSP_HAL_EXTENSION :=
305 XCHANGE_DSP_APP_EXTENSION=
308 ifeq ($(strip $(BRCM_VODSL_DUAL_3341)),y)
309 BRCM_RELEASETAG := $(BRCM_RELEASETAG).dual3341
312 #Set up ADSL standard
313 export ADSL=$(BRCM_ADSL_STANDARD)
315 #Set up ADSL_PHY_MODE {file | obj}
316 export ADSL_PHY_MODE=file
318 #Set up ADSL_SELF_TEST
319 export ADSL_SELF_TEST=$(BRCM_ADSL_SELF_TEST)
321 ###########################################
323 # Complete list of applications
325 ###########################################
326 export OPENSOURCE_DIR=$(USERAPPS_DIR)/opensource
327 SUBDIRS_OPENSOURCE = $(OPENSOURCE_DIR)/atm2684/pvc2684ctl \
328 $(OPENSOURCE_DIR)/openssl \
329 $(OPENSOURCE_DIR)/ipsec-tools \
330 $(OPENSOURCE_DIR)/bridge-utils \
331 $(OPENSOURCE_DIR)/ppp/pppoe \
332 $(OPENSOURCE_DIR)/udhcp \
333 $(OPENSOURCE_DIR)/iptables \
334 $(OPENSOURCE_DIR)/ebtables \
335 $(OPENSOURCE_DIR)/reaim \
336 $(OPENSOURCE_DIR)/iproute2 \
337 $(OPENSOURCE_DIR)/libosip2 \
338 $(OPENSOURCE_DIR)/siproxd \
339 $(OPENSOURCE_DIR)/zebra \
340 $(OPENSOURCE_DIR)/net-snmp \
341 $(OPENSOURCE_DIR)/ftpd \
342 $(OPENSOURCE_DIR)/libcreduction \
343 $(OPENSOURCE_DIR)/busybox
345 #In future, we need to add soap when it
346 #is decoupled from cli
348 export BROADCOM_DIR=$(USERAPPS_DIR)/broadcom
349 SUBDIRS_BROADCOM = $(BROADCOM_DIR)/nvram \
350 $(BROADCOM_DIR)/cfm \
351 $(BROADCOM_DIR)/upnp/router/upnp \
352 $(BROADCOM_DIR)/nas \
353 $(BROADCOM_DIR)/wlctl \
354 $(BROADCOM_DIR)/vodsl \
355 $(BROADCOM_DIR)/atmctl \
356 $(BROADCOM_DIR)/adslctl \
357 $(BROADCOM_DIR)/netctl \
358 $(BROADCOM_DIR)/dnsprobe \
359 $(BROADCOM_DIR)/igmp \
360 $(BROADCOM_DIR)/dhcpr \
361 $(BROADCOM_DIR)/sntp \
362 $(BROADCOM_DIR)/ippd \
363 $(BROADCOM_DIR)/ddnsd \
364 $(BROADCOM_DIR)/ethctl \
365 $(BROADCOM_DIR)/hotplug \
366 $(BROADCOM_DIR)/epittcp \
367 $(BROADCOM_DIR)/snmp \
368 $(BROADCOM_DIR)/tr69c \
371 SUBDIRS_APP = $(SUBDIRS_BROADCOM) $(SUBDIRS_OPENSOURCE)
372 SUBDIRS = $(foreach dir, $(SUBDIRS_APP), $(shell if [ -d "$(dir)" ]; then echo $(dir); fi))
374 OPENSOURCE_APPS = ipsec-tools pvc2684ctl pvc2684d brctl pppd udhcp iptables ebtables \
375 reaim tc libosip2 siproxd snmp zebra bftpd busybox
377 BROADCOM_APPS = nvram cfm upnp nas wlctl vodsl atmctl adslctl netctl dnsprobe \
378 igmp dhcpr diagapp sntp ddnsd ilmi ippd hotplug ethctl epittcp snmp ses
379 LIBC_OPTIMIZATION = libcreduction
381 ifneq ($(strip $(BUILD_GDBSERVER)),)
382 TOOLCHAIN_UTIL_APPS = gdbserver
385 BUSYBOX_DIR = $(OPENSOURCE_DIR)/busybox
387 BRCMAPPS = openssl $(BROADCOM_APPS) $(OPENSOURCE_APPS) $(TOOLCHAIN_UTIL_APPS) $(LIBC_OPTIMIZATION)
389 all: sanity_check profile_check kernelbuild modbuild app hosttools buildimage
392 @cd $(INC_KERNEL_BASE); \
393 if [ ! -e linux/CREDITS ]; then \
394 echo Untarring original Linux kernel source...; \
395 (tar xkfj $(ORIGINAL_KERNEL) 2> /dev/null || true); \
397 $(MAKE) -C $(KERNEL_DIR)/scripts/lxdialog HOSTCC=gcc
398 $(CONFIG_SHELL) $(HOSTTOOLS_DIR)/scripts/Menuconfig $(TARGETS_DIR)/config.in
401 @if [ "$(PROFILE)" = "" ]; then \
402 echo You need to specify build profile name from $(TARGETS_DIR) using 'make PROFILE=<profile name>...'; exit 1; \
406 @if [ "$(LAST_PROFILE)" != "" ] && [ "$(LAST_PROFILE)" != "$(PROFILE)" ]; then \
407 echo "The specified profile, $(PROFILE), differs from the last one built, $(LAST_PROFILE)."; \
408 echo "The entire image must be rebuilt."; \
409 read -p "Press ENTER to rebuild the entire image or CTRL-C to abort. " ; \
410 $(MAKE) PROFILE=$(LAST_PROFILE) clean; \
411 $(MAKE) PROFILE=$(PROFILE); \
412 echo "Ignore the make exit error, Error 1"; \
416 $(KERNEL_DIR)/vmlinux:
417 $(GENDEFCONFIG_CMD) $(PROFILE_PATH)
419 cp -f $(KERNEL_DIR)/arch/mips/defconfig $(KERNEL_DIR)/.config; \
420 $(MAKE) oldconfig; $(MAKE); $(MAKE) modules_install
423 ifeq ($(wildcard $(KERNEL_DIR)/vmlinux),)
424 @cd $(INC_KERNEL_BASE); \
425 if [ ! -e linux/CREDITS ]; then \
426 echo Untarring original Linux kernel source...; \
427 (tar xkfj $(ORIGINAL_KERNEL) 2> /dev/null || true); \
429 $(GENDEFCONFIG_CMD) $(PROFILE_PATH)
431 cp -f $(KERNEL_DIR)/arch/mips/defconfig $(KERNEL_DIR)/.config; \
432 $(MAKE) oldconfig; $(MAKE)
434 cd $(KERNEL_DIR); $(MAKE)
437 kernel: profile_check kernelbuild hosttools buildimage
439 ifeq ($(strip $(VOXXXLOAD)),1)
440 modbuild: touch_voice_files
441 cd $(KERNEL_DIR); $(MAKE) modules && $(MAKE) modules_install
444 cd $(KERNEL_DIR); $(MAKE) modules && $(MAKE) modules_install
447 modules: profile_check modbuild hosttools buildimage
449 app: profile_check prebuild $(BRCMAPPS) hosttools rm_cvs buildimage
452 mkdir -p $(INSTALL_DIR)/bin $(INSTALL_DIR)/lib
455 @echo "Removing CVS info"
456 find $(INSTALL_DIR) -name 'CVS' -print -exec rm -rf "{}" ";"
458 # touch_voice_files doesn't clean up voice, just enables incremental build of voice code
460 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 "{}" ";"
461 rm -rf kernel/linux/.tmp_versions/endpointdd.mod
462 rm -rf kernel/linux/arch/mips/defconfig
463 rm -rf kernel/linux/include/config/bcm/endpoint/
464 rm -rf kernel/linux/include/asm-mips/offset.h
465 rm -rf kernel/linux/include/asm-mips/reg.h
466 find kernel/linux/lib/ -name '*.o' -print -exec rm -f "{}" ";"
467 find kernel/linux/lib/ -name '*.lib' -print -exec rm -f "{}" ";"
469 # Build user applications depending on if they are
470 # specified in the profile
471 ifneq ($(strip $(BUILD_PVC2684CTL)),)
472 export BUILD_PVC2684D=$(BUILD_PVC2684CTL)
475 $(MAKE) -C $(OPENSOURCE_DIR)/atm2684/pvc2684ctl $(BUILD_PVC2684CTL)
480 ifneq ($(strip $(BUILD_BRCTL)),)
482 cd $(OPENSOURCE_DIR); (tar xkfj bridge-utils.tar.bz2 2> /dev/null || true)
483 $(MAKE) -C $(OPENSOURCE_DIR)/bridge-utils $(BUILD_BRCTL)
488 ifneq ($(strip $(BUILD_VCONFIG)),)
489 export BUILD_VCONFIG=y
492 ifneq ($(strip $(BUILD_CFM)),)
494 ifneq ($(strip $(BUILD_CFM_MENU)),)
495 export BUILD_CFM_MENU=y
499 $(MAKE) -C $(BROADCOM_DIR)/cfm $(BUILD_CFM)
504 # iptables is dependent on kernel netfilter modules
505 ifneq ($(strip $(BRCM_KERNEL_NETFILTER)),)
506 ifneq ($(strip $(BUILD_IPTABLES)),)
508 cd $(OPENSOURCE_DIR); (tar xkfj iptables.tar.bz2 2> /dev/null || true)
509 $(MAKE) -C $(OPENSOURCE_DIR)/iptables $(BUILD_IPTABLES)
511 cd $(OPENSOURCE_DIR); (tar xkfj iptables.tar.bz2 2> /dev/null || true)
512 $(MAKE) -C $(OPENSOURCE_DIR)/iptables static
518 @echo Warning: You need to enable netfilter in the kernel !!!!!
521 ifneq ($(strip $(BUILD_EBTABLES)),)
523 cd $(OPENSOURCE_DIR); (tar xkfj ebtables.tar.bz2 2> /dev/null || true)
524 $(MAKE) -C $(OPENSOURCE_DIR)/ebtables $(BUILD_EBTABLES)
529 ifneq ($(strip $(BUILD_PPPD)),)
531 $(MAKE) -C $(OPENSOURCE_DIR)/ppp/pppoe $(BUILD_PPPD)
536 ifneq ($(strip $(BUILD_REAIM)),)
538 cd $(OPENSOURCE_DIR); (tar xkfj reaim.tar.bz2 2> /dev/null || true)
539 $(MAKE) -C $(OPENSOURCE_DIR)/reaim $(BUILD_REAIM)
544 ifneq ($(strip $(BRCM_KERNEL_NETQOS)),)
546 cd $(OPENSOURCE_DIR); (tar xkfj iproute2.tar.bz2 2> /dev/null || true)
547 $(MAKE) -C $(OPENSOURCE_DIR)/iproute2 dynamic
552 ifneq ($(strip $(BUILD_GDBSERVER)),)
554 install -m 755 $(TOOLCHAIN)/mips-linux-uclibc/target-apps/usr/bin/gdbserver $(INSTALL_DIR)/bin
555 $(STRIP) $(INSTALL_DIR)/bin/gdbserver
560 ifneq ($(strip $(BUILD_ETHWAN)),)
561 export BUILD_ETHWAN=y
564 ifneq ($(strip $(BUILD_UDHCP)),)
566 $(MAKE) -C $(OPENSOURCE_DIR)/udhcp $(BUILD_UDHCP)
571 # UPNP is dependent on iptables
572 ifneq ($(strip $(BUILD_IPTABLES)),)
573 ifneq ($(strip $(BUILD_UPNP)),)
575 $(MAKE) -C $(BROADCOM_DIR)/upnp/router/upnp $(BUILD_UPNP)
581 @echo Warning: You need to build iptables first !!!!!
584 ifneq ($(strip $(BUILD_IPSEC_TOOLS)),)
586 cd $(OPENSOURCE_DIR); (tar xkfj ipsec-tools.tar.bz2 2> /dev/null || true)
587 $(MAKE) -C $(OPENSOURCE_DIR)/ipsec-tools $(BUILD_IPSEC_TOOLS)
592 ifneq ($(strip $(BUILD_CERT)),)
594 cd $(OPENSOURCE_DIR); (tar xkfj openssl.tar.bz2 2> /dev/null || true)
595 $(MAKE) -C $(OPENSOURCE_DIR)/openssl dynamic
601 ifneq ($(strip $(BUILD_SIPROXD)),)
603 cd $(OPENSOURCE_DIR); (tar xkfj siproxd.tar.bz2 2> /dev/null || true)
604 $(MAKE) -C $(OPENSOURCE_DIR)/siproxd $(BUILD_SIPROXD)
606 cd $(OPENSOURCE_DIR); (tar xkfj libosip2.tar.bz2 2> /dev/null || true)
607 $(MAKE) -C $(OPENSOURCE_DIR)/libosip2
615 ifneq ($(strip $(BUILD_SNMP)),)
617 ifneq ($(strip $(BUILD_SNMP_SET)),)
618 export BUILD_SNMP_SET=1
620 export BUILD_SNMP_SET=0
623 ifneq ($(strip $(BUILD_SNMP_ADSL_MIB)),)
624 export BUILD_SNMP_ADSL_MIB=1
626 export BUILD_SNMP_ADSL_MIB=0
629 ifneq ($(strip $(BUILD_SNMP_ATM_MIB)),)
630 export BUILD_SNMP_ATM_MIB=1
632 export BUILD_SNMP_ATM_MIB=0
635 ifneq ($(strip $(BUILD_SNMP_AT_MIB)),)
636 export BUILD_SNMP_AT_MIB=1
638 export BUILD_SNMP_AT_MIB=0
641 ifneq ($(strip $(BUILD_SNMP_SYSOR_MIB)),)
642 export BUILD_SNMP_SYSOR_MIB=1
644 export BUILD_SNMP_SYSOR_MIB=0
647 ifneq ($(strip $(BUILD_SNMP_TCP_MIB)),)
648 export BUILD_SNMP_TCP_MIB=1
650 export BUILD_SNMP_TCP_MIB=0
653 ifneq ($(strip $(BUILD_SNMP_UDP_MIB)),)
654 export BUILD_SNMP_UDP_MIB=1
656 export BUILD_SNMP_UDP_MIB=0
659 ifneq ($(strip $(BUILD_SNMP_IP_MIB)),)
660 export BUILD_SNMP_IP_MIB=1
662 export BUILD_SNMP_IP_MIB=0
665 ifneq ($(strip $(BUILD_SNMP_ICMP_MIB)),)
666 export BUILD_SNMP_ICMP_MIB=1
668 export BUILD_SNMP_ICMP_MIB=0
671 ifneq ($(strip $(BUILD_SNMP_SNMP_MIB)),)
672 export BUILD_SNMP_SNMP_MIB=1
674 export BUILD_SNMP_SNMP_MIB=0
677 ifneq ($(strip $(BUILD_SNMP_ATMFORUM_MIB)),)
678 export BUILD_SNMP_ATMFORUM_MIB=1
680 export BUILD_SNMP_ATMFORUM_MIB=0
683 ifneq ($(strip $(BRCM_SNMP)),)
685 ifneq ($(strip $(BUILD_SNMP_CHINA_TELECOM_CPE_MIB)),)
686 export BUILD_SNMP_CHINA_TELECOM_CPE_MIB=y
687 export BUILD_SNMP_MIB2=y
690 ifneq ($(strip $(BUILD_SNMP_UDP)),)
691 export BUILD_SNMP_UDP=y
694 ifneq ($(strip $(BUILD_SNMP_EOC)),)
695 export BUILD_SNMP_EOC=y
698 ifneq ($(strip $(BUILD_SNMP_AAL5)),)
699 export BUILD_SNMP_AAL5=y
702 ifneq ($(strip $(BUILD_SNMP_AUTO)),)
703 export BUILD_SNMP_AUTO=y
706 ifneq ($(strip $(BUILD_SNMP_DEBUG)),)
707 export BUILD_SNMP_DEBUG=y
710 ifneq ($(strip $(BUILD_SNMP_TRANSPORT_DEBUG)),)
711 export BUILD_SNMP_TRANSPORT_DEBUG=y
714 ifneq ($(strip $(BUILD_SNMP_LAYER_DEBUG)),)
715 export BUILD_SNMP_LAYER_DEBUG=y
720 ifneq ($(strip $(BRCM_SNMP)),)
721 ## $(MAKE) -C $(BROADCOM_DIR)/snmp $(BUILD_SNMP)
723 cd $(OPENSOURCE_DIR); (tar xkfj net-snmp.tar.bz2 2> /dev/null || true)
724 $(MAKE) -C $(OPENSOURCE_DIR)/net-snmp $(BUILD_SNMP)
730 ifneq ($(strip $(BUILD_ILMI)),)
732 cd $(OPENSOURCE_DIR); (tar xkfj net-snmp.tar.bz2 2> /dev/null || true)
733 $(MAKE) -C $(BROADCOM_DIR)/ilmi $(BUILD_ILMI)
738 ifneq ($(strip $(BUILD_VODSL)),)
740 $(MAKE) -C $(BROADCOM_DIR)/vodsl $(BUILD_VODSL)
745 # Leave it for the future when soap server is decoupled from cfm
746 ifneq ($(strip $(BUILD_SOAP)),)
747 ifeq ($(strip $(BUILD_SOAP_VER)),2)
749 $(MAKE) -C $(BROADCOM_DIR)/SoapToolkit/SoapServer $(BUILD_SOAP)
752 $(MAKE) -C $(BROADCOM_DIR)/soap $(BUILD_SOAP)
758 ifneq ($(strip $(BUILD_NAS)),)
761 $(MAKE) -C $(BROADCOM_DIR)/nas $(BUILD_NAS)
763 #add hotplug here, for nas use only
765 $(MAKE) -C $(BROADCOM_DIR)/hotplug $(BUILD_NAS)
770 #add hotplug here, for nas use only
774 ifneq ($(strip $(BUILD_WLCTL)),)
777 $(MAKE) -C $(BROADCOM_DIR)/wlctl $(BUILD_WLCTL)
783 #Always compile Ethernet control utility
785 $(MAKE) -C $(BROADCOM_DIR)/ethctl dynamic
787 ifneq ($(strip $(BUILD_DNSPROBE)),)
789 $(MAKE) -C $(BROADCOM_DIR)/dnsprobe $(BUILD_DNSPROBE)
794 ifneq ($(strip $(BUILD_IGMP)),)
796 $(MAKE) -C $(BROADCOM_DIR)/igmp $(BUILD_IGMP)
801 ifneq ($(strip $(BUILD_DHCPR)),)
803 $(MAKE) -C $(BROADCOM_DIR)/dhcpr $(BUILD_DHCPR)
808 ifneq ($(strip $(BUILD_ZEBRA)),)
810 cd $(OPENSOURCE_DIR); (tar xkfj zebra.tar.bz2 2> /dev/null || true)
811 $(MAKE) -C $(OPENSOURCE_DIR)/zebra $(BUILD_ZEBRA)
816 ifneq ($(strip $(BUILD_ATMCTL)),)
818 $(MAKE) -C $(BROADCOM_DIR)/atmctl $(BUILD_ATMCTL)
823 ifneq ($(strip $(BUILD_ADSLCTL)),)
825 $(MAKE) -C $(BROADCOM_DIR)/adslctl $(BUILD_ADSLCTL)
830 ifeq ($(strip $(BUILD_CFM_CLI)),y)
831 ifneq ($(strip $(BUILD_NETCTL)),)
833 $(MAKE) -C $(BROADCOM_DIR)/netctl $(BUILD_NETCTL)
841 ifneq ($(strip $(BUILD_BUSYBOX)),)
843 cd $(OPENSOURCE_DIR); (tar xkfj busybox.tar.bz2 2> /dev/null || true)
844 # $(MAKE) -C $(OPENSOURCE_DIR)/busybox $(BUILD_BUSYBOX)
845 cd $(OPENSOURCE_DIR)/busybox; cp -f brcm.config .config
846 $(MAKE) -C $(OPENSOURCE_DIR)/busybox install
851 ifneq ($(strip $(BUILD_LIBCREDUCTION)),)
853 mkdir -p $(OPENSOURCE_DIR)/libcreduction/uclibc
854 $(MAKE) -C $(OPENSOURCE_DIR)/libcreduction install
859 ifneq ($(strip $(BUILD_DIAGAPP)),)
861 $(MAKE) -C $(BROADCOM_DIR)/diagapp $(BUILD_DIAGAPP)
866 ifneq ($(strip $(BUILD_FTPD)),)
868 cd $(OPENSOURCE_DIR); (tar xkfj ftpd.tar.bz2 2> /dev/null || true)
869 $(MAKE) -C $(OPENSOURCE_DIR)/ftpd $(BUILD_FTPD)
874 ifneq ($(strip $(BUILD_DDNSD)),)
876 $(MAKE) -C $(BROADCOM_DIR)/ddnsd $(BUILD_DDNSD)
881 ifneq ($(strip $(BUILD_SNTP)),)
883 $(MAKE) -C $(BROADCOM_DIR)/sntp $(BUILD_SNTP)
888 ifneq ($(strip $(BUILD_EPITTCP)),)
890 $(MAKE) -C $(BROADCOM_DIR)/epittcp $(BUILD_EPITTCP)
895 ifneq ($(strip $(BUILD_SES)),)
897 $(MAKE) -C $(BROADCOM_DIR)/ses $(BUILD_SES)
902 ifneq ($(strip $(BUILD_NVRAM)),)
904 $(MAKE) -C $(BROADCOM_DIR)/nvram $(BUILD_NVRAM)
909 ifneq ($(strip $(BUILD_IPPD)),)
911 $(MAKE) -C $(BROADCOM_DIR)/ippd $(BUILD_IPPD)
916 ifneq ($(strip $(BUILD_PORT_MIRRORING)),)
917 export BUILD_PORT_MIRRORING=1
919 export BUILD_PORT_MIRRORING=0
923 $(MAKE) -C $(HOSTTOOLS_DIR)
926 buildimage: $(KERNEL_DIR)/vmlinux
927 su --command="cd $(TARGETS_DIR); ./buildFS"
928 ifeq ($(strip $(BRCM_KERNEL_ROOTFS)),squashfs)
929 #$(HOSTTOOLS_DIR)/mksquashfs $(TARGET_FS) $(PROFILE_DIR)/rootfs.img -noappend -be -always-use-fragments -gzip
930 $(HOSTTOOLS_DIR)/mksquashfs $(TARGET_FS) $(PROFILE_DIR)/rootfs.img -noappend -be -lzma -no-fragments -noI
932 ifeq ($(strip $(BRCM_KERNEL_ROOTFS)),cramfs)
933 # $(HOSTTOOLS_DIR)/mkcramfs -r -g $(TARGET_FS) $(PROFILE_DIR)/rootfs.img
934 $(HOSTTOOLS_DIR)/mkcramfs -r $(TARGET_FS) $(PROFILE_DIR)/rootfs.img
936 ifeq ($(strip $(BRCM_KERNEL_ROOTFS)),jffs2)
937 $(HOSTTOOLS_DIR)/mkfs.jffs2 -b -p -e $(BRCM_FLASHBLK_SIZE) -r $(TARGET_FS) -o $(PROFILE_DIR)/rootfs.img
942 ifneq ($(strip $(BRCM_KERNEL_ROOTFS)),nfs)
944 cp $(KERNEL_DIR)/vmlinux . ; \
945 $(STRIP) --remove-section=.note --remove-section=.comment vmlinux; \
946 $(OBJCOPY) -O binary vmlinux vmlinux.bin; \
947 $(HOSTTOOLS_DIR)/cmplzma -k -2 vmlinux vmlinux.bin vmlinux.lz;\
948 $(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; \
949 $(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; \
950 $(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); \
951 $(HOSTTOOLS_DIR)/addvtoken $(FLASH_IMAGE_NAME) $(FLASH_IMAGE_NAME).w
952 @mkdir -p $(IMAGES_DIR)
953 @cp $(PROFILE_DIR)/$(FS_KERNEL_IMAGE_NAME) $(IMAGES_DIR)/$(FS_KERNEL_IMAGE_NAME)_$(BRCM_RELEASETAG)-$(shell date '+%y%m%d_%H%M')
955 @echo -e "Done! Image $(PROFILE) has been built in $(IMAGES_DIR)."
958 cp $(KERNEL_DIR)/vmlinux . ; \
959 $(STRIP) --remove-section=.note --remove-section=.comment vmlinux
961 @echo -e "\t=== Following the below steps to start your NFS root file system on host ==="
962 @echo -e "Step 1: Copy $(PROFILE_DIR)/vmlinux to your TFTP server boot directory, such as /tftpboot"
963 @echo -e "Step 2: Add \"$(PROFILE_DIR)/fs *(rw,no_root_squash)\" to /etc/exports"
964 @echo -e "Step 3: Become root and restart your nfs server, such as \"service nfs restart\""
965 @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\""
969 ###########################################
971 # System code clean-up
973 ###########################################
975 subdirs: $(patsubst %, _dir_%, $(SUBDIRS))
977 $(patsubst %, _dir_%, $(SUBDIRS)) :
978 $(MAKE) -C $(patsubst _dir_%, %, $@) $(TGT)
980 clean: target_clean app_clean kernel_clean hosttools_clean
984 rm -fr $(INSTALL_DIR)/bin
985 rm -fr $(INSTALL_DIR)/sbin
986 rm -fr $(INSTALL_DIR)/lib
987 rm -fr $(INSTALL_DIR)/upnp
988 rm -fr $(INSTALL_DIR)/docs
989 rm -fr $(INSTALL_DIR)/webs
990 rm -fr $(INSTALL_DIR)/usr
991 rm -fr $(INSTALL_DIR)/linuxrc
993 kernel_clean: sanity_check
994 $(MAKE) -C $(KERNEL_DIR) mrproper
995 rm -f $(KERNEL_DIR)/arch/mips/defconfig
996 rm -f $(HOSTTOOLS_DIR)/lzma/decompress/*.o
997 rm -rf $(XCHANGE_DIR)/dslx/lib/LinuxKernel
998 rm -rf $(XCHANGE_DIR)/dslx/obj/LinuxKernel
1000 app_clean: sanity_check fssrc_clean
1001 $(MAKE) subdirs TGT=clean
1002 rm -rf $(XCHANGE_DIR)/dslx/lib/LinuxUser
1003 rm -rf $(XCHANGE_DIR)/dslx/obj/LinuxUser
1005 target_clean: sanity_check
1006 rm -f $(PROFILE_DIR)/rootfs.img
1007 rm -f $(PROFILE_DIR)/vmlinux
1008 rm -f $(PROFILE_DIR)/vmlinux.bin
1009 rm -f $(PROFILE_DIR)/vmlinux.lz
1010 rm -f $(PROFILE_DIR)/$(FS_KERNEL_IMAGE_NAME)
1011 rm -f $(PROFILE_DIR)/$(CFE_FS_KERNEL_IMAGE_NAME)
1012 rm -f $(PROFILE_DIR)/$(FLASH_IMAGE_NAME)
1013 rm -f $(PROFILE_DIR)/$(FLASH_IMAGE_NAME).w
1014 rm -fr $(PROFILE_DIR)/modules
1015 find targets -name vmlinux -print -exec rm -f "{}" ";"
1016 su --command="rm -fr $(TARGET_FS)"
1019 $(MAKE) -C $(HOSTTOOLS_DIR) clean
1021 ###########################################
1023 # System-wide exported variables
1024 # (in alphabetical order)
1026 ###########################################
1037 BRCM_DSP_APM_FXO_EXT \
1038 BRCM_DSP_CODEC_G711 \
1039 BRCM_DSP_CODEC_G723 \
1040 BRCM_DSP_CODEC_G726 \
1041 BRCM_DSP_CODEC_G729 \
1042 BRCM_DSP_CODEC_G7xx \
1043 BRCM_DSP_CODEC_T38_EXT \
1044 BRCM_DSP_CODEC_T38_INT \
1046 BRCM_DSP_HAL_EXTENSION \
1049 BRCM_DSP_PCM_T38_EXT \
1051 BRCM_KERNEL_NETQOS \
1052 BRCM_KERNEL_ROOTFS \
1054 BRCM_MIPS_ONLY_BUILD \
1055 BRCM_MIPS_ONLY_BUILD \
1063 BRCM_VODSL_DUAL_3341 \
1064 BRCM_VOICE_COUNTRY_JAPAN \
1065 BRCM_VOICE_GLOBAL_CFLAGS \
1095 BUILD_PORT_MIRRORING \
1107 BUILD_SSHD_MIPS_GENKEY \
1126 INC_BRCMBOARDPARMS_PATH \
1128 INC_BRCMDRIVER_PRIV_PATH \
1129 INC_BRCMDRIVER_PUB_PATH \
1130 INC_BRCMSHARED_INC_PATH \
1131 INC_BRCMSHARED_SRC_PATH \
1155 XCHANGE_DSP_APP_EXTENSION