www.usr.com/support/gpl/USR9113_release1.0.tar.gz
[bcm963xx.git] / Makefile
1 #****************************************************************************
2 #
3 #  Copyright (c) 2001, 2002, 2003, 2004  Broadcom Corporation
4 #  All Rights Reserved
5 #  No portions of this material may be reproduced in any form without the
6 #  written permission of:
7 #          Broadcom Corporation
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.
12 #
13 #****************************************************************************
14
15 # Top-level Makefile for all commengine xDSL platforms
16
17 include version.make
18
19 BRCM_RELEASETAG=$(BRCM_VERSION).$(BRCM_RELEASE)L.$(BRCM_EXTRAVERSION)
20
21 ###########################################
22 #
23 # Define Basic Variables
24 #
25 ###########################################
26 BUILD_DIR = $(shell pwd)
27 KERNEL_VER = 2.6
28 ifeq ($(strip $(KERNEL_VER)),2.6)
29 INC_KERNEL_BASE = $(BUILD_DIR)/kernel
30 ORIGINAL_KERNEL = linuxmips.tar.bz2
31 endif
32 KERNEL_DIR = $(INC_KERNEL_BASE)/linux
33 BRCMDRIVERS_DIR = $(BUILD_DIR)/bcmdrivers
34 USERAPPS_DIR = $(BUILD_DIR)/userapps
35 LINUXDIR = $(INC_KERNEL_BASE)/linux
36 HOSTTOOLS_DIR = $(BUILD_DIR)/hostTools
37 IMAGES_DIR = $(BUILD_DIR)/images
38 TARGETS_DIR = $(BUILD_DIR)/targets
39 DEFAULTCFG_DIR = $(TARGETS_DIR)/defaultcfg
40 XCHANGE_DIR = $(BUILD_DIR)/xChange
41 FSSRC_DIR = $(TARGETS_DIR)/fs.src
42 CFE_FILE = $(TARGETS_DIR)/cfe/cfe$(BRCM_CHIP).bin
43 SHARED_DIR = $(BUILD_DIR)/shared
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
48 RUN_NOISE=0
49 6510_REF_CODE=$(BUILD_DIR)/userapps/broadcom/6510refCode
50
51 ###########################################
52 #
53 # Import Build Profiles
54 #
55 ###########################################
56 BRCM_BOARD=bcm963xx
57 LAST_PROFILE=$(shell find targets -name vmlinux | sed -e "s?targets/??" -e "s?/.*??" -e "q")
58 ifeq ($(strip $(PROFILE)),)
59 PROFILE=$(LAST_PROFILE)
60 export PROFILE
61 endif
62
63 ifneq ($(strip $(PROFILE)),)
64 include $(TARGETS_DIR)/$(PROFILE)/$(PROFILE)
65 export BRCM_CHIP
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
71 endif
72
73 ###########################################
74 #
75 # Define Toolchain
76 #
77 ###########################################
78 ifeq ($(strip $(BRCM_UCLIBC)),y)
79 NTC=1
80 ifeq ($(strip $(NTC)),1)
81 TOOLCHAIN=/opt/toolchains/uclibc-crosstools_gcc-3.4.2_uclibc-20050502
82 CROSS_COMPILE = $(TOOLCHAIN)/bin/mips-linux-uclibc-
83 else
84 TOOLCHAIN=/opt/toolchains/uclibc
85 CROSS_COMPILE = $(TOOLCHAIN)/bin/mips-uclibc-
86 endif
87 else
88 TOOLCHAIN=/usr/crossdev/mips
89 CROSS_COMPILE = $(TOOLCHAIN)/bin/mips-linux-
90 endif
91
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
104
105 LIB_PATH        = $(TOOLCHAIN)/mips-linux/lib
106 LIBDIR          = $(TOOLCHAIN)/mips-linux/lib
107 LIBCDIR         = $(TOOLCHAIN)/mips-linux
108
109 ###########################################
110 #
111 # Application-specific settings
112 #
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)
118 VENDOR_NAME = USR
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_ENDPOINT_PATH=$(BRCMDRIVERS_DIR)/broadcom/char/endpoint/bcm9$(BRCM_CHIP)/inc
125 INC_ADSLDRV_PATH=$(BRCMDRIVERS_DIR)/broadcom/char/adsl/impl1
126 BROADCOM_CFM_DIR=$(BROADCOM_DIR)/cfm
127 INC_BRCMCFM_PATH=$(BROADCOM_CFM_DIR)/inc
128 INC_BRCMSHARED_PUB_PATH=$(SHARED_DIR)/opensource/include
129 INC_BRCMSHARED_PRIV_PATH=$(SHARED_DIR)/broadcom/include
130 INC_BRCMBOARDPARMS_PATH=$(SHARED_DIR)/opensource/boardparms
131 INC_FLASH_PATH=$(SHARED_DIR)/opensource/flash
132 VENDOR_COUNTRY = IT
133
134 ifeq ($(strip $(BRCM_APP_PHONE)),sip)
135 export VOXXXLOAD=1
136 export VOIPLOAD=1
137 export SIPLOAD=1
138
139 ifeq ($(strip $(BRCM_VODSL_CONFIG_MANAGER)),y)
140         export BRCM_VODSL_CFGMGR=1
141 endif
142
143 BRCM_RELEASETAG := $(BRCM_RELEASETAG).sip
144 endif
145
146 ifeq ($(strip $(BRCM_APP_PHONE)),mgcp)
147 export VOXXXLOAD=1
148 export VOIPLOAD=1
149 export MGCPLOAD=1
150 export BRCM_VODSL_CFGMGR=0
151 BRCM_RELEASETAG := $(BRCM_RELEASETAG).mgcp
152 endif
153
154 ifeq ($(strip $(BRCM_PROFILER_ENABLED)),y)
155 export BRCM_PROFILER_TOOL=1
156 else
157 export BRCM_PROFILER_TOOL=0
158 endif
159
160 ifneq ($(strip $(BUILD_VODSL)),)
161 export VOXXXLOAD=1
162 endif
163
164 ifeq ($(strip $(BRCM_VODSL_STUNC)),y)
165         export BRCM_VODSL_STUN_CLIENT=1
166 endif
167
168 ifeq ($(strip $(BRCM_VODSL_RANDOMP)),y)
169         export BRCM_VODSL_RANDOM_PORT=1
170 endif
171
172 BRCM_DSP_HAL := gw
173 BRCM_DSP_HAL_EXTENSION :=
174 XCHANGE_DSP_APP_EXTENSION :=
175 export XCHANGE_DSP_APP=$(BRCM_DSP_CODEC)
176
177 ifeq ($(strip $(BRCM_DSP_PCM)),y)
178 XCHANGE_DSP_APP := dspApp3341_tdm
179 BRCM_DSP_HAL_EXTENSION := _pcm
180 endif
181
182 ifeq ($(strip $(BRCM_DSP_PCM_G726)),y)
183 XCHANGE_DSP_APP := dspApp3341_tdm_g726
184 BRCM_DSP_HAL_EXTENSION := _pcm
185 endif
186
187 ifeq ($(strip $(BRCM_DSP_PCM_T38_EXT)),y)
188 XCHANGE_DSP_APP := dspApp3341_tdm_t38
189 BRCM_DSP_HAL_EXTENSION := _pcm
190 endif
191
192 ifeq ($(strip $(BRCM_DSP_APM_FXO_EXT)),y)
193 XCHANGE_DSP_APP := dspApp3341
194 BRCM_DSP_HAL_EXTENSION := _hybrid
195 XCHANGE_DSP_APP_EXTENSION := _fxo_ext
196 endif
197
198 ifeq ($(strip $(BUILD_VDSL)),y)
199 export BUILD_VDSL=y
200 VBOOT_BIN="boot.bin"
201 ifneq ($(strip $(CPE_ANNEX_B)),)
202   CPE_MODEM="cpe_annex_b.bin"
203 else
204   CPE_MODEM="cpe_annex_a.bin"
205 endif
206 ifeq ($(strip $(VCOPE_TYPE)),CO)
207   VMODEM_BIN="co_modem.bin"
208 endif
209 ifeq ($(strip $(VCOPE_TYPE)),CPE)
210   VMODEM_BIN=$(CPE_MODEM)
211 endif
212
213 endif
214
215 #
216 #  Warning here, we do re-assign some of the variables defined earlier:
217 #  BRCM_DSP_HAL and BRCM_DSP_HAL_EXTENSION for example, in order to pickup
218 #  the correct board HAL application.
219 #
220 ifeq ($(strip $(BRCM_DSP_FXO)),y)
221 ifeq ($(strip $(BRCM_SLIC_LE9502)),y)
222 export XCHANGE_BUILD_APP=Bcm$(BRCM_CHIP)_Le9502FXO
223 BRCM_RELEASETAG := $(BRCM_RELEASETAG)._LE9502
224 BRCM_DSP_HAL := _Le9502FXO
225 BRCM_DSP_HAL_EXTENSION :=
226 export BRCM_SLIC_LE9502
227 else
228 ifeq ($(strip $(BRCM_SLIC_LE9500)),y)
229 export XCHANGE_BUILD_APP=Bcm$(BRCM_CHIP)_Le9500FXO
230 BRCM_RELEASETAG := $(BRCM_RELEASETAG)._LE9500
231 BRCM_DSP_HAL := _Le9500FXO
232 BRCM_DSP_HAL_EXTENSION :=
233 export BRCM_SLIC_LE9500
234 endif
235 endif
236 endif
237
238
239 #
240 # DSP codec flags definition.  To be used throughout the application (for configuration and vodsl)
241 #
242
243 BRCM_DSP_CODEC_DEFINES := -DXCFG_G711_SUPPORT=1
244
245 ifeq ($(strip $(BRCM_DSP_CODEC_G723)),y)
246 BRCM_DSP_CODEC_DEFINES += -DXCFG_G7231_SUPPORT=1
247 endif
248
249 ifeq ($(strip $(BRCM_DSP_CODEC_G726)),y)
250 BRCM_DSP_CODEC_DEFINES += -DXCFG_G726_SUPPORT=1
251 endif
252
253 ifeq ($(strip $(BRCM_DSP_CODEC_G729)),y)
254 BRCM_DSP_CODEC_DEFINES += -DXCFG_G729_SUPPORT=1
255 endif
256
257 ifeq ($(strip $(BRCM_DSP_CODEC_G7xx)),y)
258 BRCM_DSP_CODEC_DEFINES += -DXCFG_G7231_SUPPORT=1
259 BRCM_DSP_CODEC_DEFINES += -DXCFG_G726_SUPPORT=1
260 BRCM_DSP_CODEC_DEFINES += -DXCFG_G729_SUPPORT=1
261 endif
262
263 ifeq ($(strip $(BRCM_DSP_PCM)),y)
264 BRCM_DSP_CODEC_DEFINES += -DXCFG_G729_SUPPORT=1
265 endif
266
267 ifeq ($(strip $(BRCM_DSP_PCM_G726)),y)
268 BRCM_DSP_CODEC_DEFINES += -DXCFG_G726_SUPPORT=1
269 BRCM_DSP_CODEC_DEFINES += -DXCFG_FAX_SUPPORT=1
270 endif
271
272 ifeq ($(strip $(BRCM_DSP_PCM_T38_EXT)),y)
273 BRCM_DSP_CODEC_DEFINES += -DXCFG_FAX_SUPPORT=1
274 endif
275
276 ifeq ($(strip $(BRCM_DSP_CODEC_T38_EXT)),y)
277 BRCM_DSP_CODEC_DEFINES += -DXCFG_G726_SUPPORT=1
278 BRCM_DSP_CODEC_DEFINES += -DXCFG_G729_SUPPORT=1
279 BRCM_DSP_CODEC_DEFINES += -DXCFG_FAX_SUPPORT=1
280 endif
281
282 ifeq ($(strip $(BRCM_DSP_APM_FXO_EXT)),y)
283 BRCM_DSP_CODEC_DEFINES += -DXCFG_G729_SUPPORT=1
284 BRCM_DSP_CODEC_DEFINES += -DXCFG_G726_SUPPORT=1
285 BRCM_DSP_CODEC_DEFINES += -DXCFG_FAX_SUPPORT=1
286 endif
287
288 ifeq ($(strip $(BRCM_DSP_CODEC)),all)
289 BRCM_DSP_CODEC_DEFINES += -DXCFG_G7231_SUPPORT=1
290 BRCM_DSP_CODEC_DEFINES += -DXCFG_G726_SUPPORT=1
291 BRCM_DSP_CODEC_DEFINES += -DXCFG_G729_SUPPORT=1
292 BRCM_DSP_CODEC_DEFINES += -DXCFG_BV16_SUPPORT=1
293 BRCM_DSP_CODEC_DEFINES += -DXCFG_ILBC_SUPPORT=1
294 BRCM_DSP_CODEC_DEFINES += -DXCFG_FAX_SUPPORT=1
295 endif
296
297
298 #
299 #  Definition of the number of voice channels supported based on the specific
300 #  application being created.
301 #
302
303 ifeq ($(strip $(BRCM_DSP_APM_FXO_EXT)), y)
304 BRCM_DSP_CHAN_DEFINES = -DNUM_APM_VOICE_CHANNELS=2 -DNUM_TDM_VOICE_CHANNELS=0 -DNUM_FXO_CHANNELS=1
305 else
306 BRCM_DSP_CHAN_DEFINES = -DNUM_APM_VOICE_CHANNELS=0 -DNUM_TDM_VOICE_CHANNELS=0 -DNUM_FXO_CHANNELS=0
307 endif
308
309 export BRCM_DSP_CODEC_DEFINES
310 export BRCM_DSP_CHAN_DEFINES
311 export BRCM_DSP_FXO
312 export XCHANGE_BUILD_APP=Bcm$(BRCM_CHIP)$(BRCM_DSP_HAL)$(BRCM_DSP_HAL_EXTENSION)
313 export XCHANGE_DSP_APP_EXTENSION
314 export BRCM_DSP_HAL_EXTENSION
315
316 # If no codec is selected, build G.711 load.
317 # Any XCHANGE_BUILD_APP directory would be OK
318 # because G.711 is included with all the voice DSP images.
319 ifneq ($(strip $(BUILD_VODSL)),)
320 ifeq ($(strip $(XCHANGE_DSP_APP)),)
321 export XCHANGE_BUILD_APP=Bcm$(BRCM_CHIP)gw
322 export XCHANGE_DSP_APP=g711
323 endif
324 endif
325 BRCM_RELEASETAG := $(BRCM_RELEASETAG).$(XCHANGE_DSP_APP)
326
327 ifeq ($(strip $(BRCM_CHIP)),6358)
328 ifeq ($(strip $(BRCM_6358_G729_FXO)),y)
329 BRCM_DSP_HAL := vw_fxo
330 BRCM_DSP_CHAN_DEFINES = -DNUM_FXO_CHANNELS=1
331 BRCM_DSP_CODEC_DEFINES += -DXCFG_G729_SUPPORT=1
332 BRCM_DSP_CODEC_DEFINES += -DXCFG_G726_SUPPORT=1
333 BRCM_DSP_CODEC_DEFINES += -DXCFG_FAX_SUPPORT=1
334 export BRCM_6358_G729_FXO
335 export XCHANGE_BUILD_APP=Bcm$(BRCM_CHIP)vw_fxo
336 export BRCM_DSP_CODEC_DEFINES
337 else
338 ifeq ($(strip $(BRCM_6358_G729_4FXS)),y)
339 BRCM_DSP_HAL := vw_4fxs
340 export BRCM_6358_G729_4FXS
341 export XCHANGE_BUILD_APP=Bcm$(BRCM_CHIP)vw_4fxs
342 else
343 ifeq ($(strip $(BRCM_6358_G729_2FXS_LEGERITY)),y)
344 BRCM_DSP_HAL := vw_legerity
345 export BRCM_6358_G729_2FXS_LEGERITY
346 export XCHANGE_BUILD_APP=Bcm$(BRCM_CHIP)vw_legerity
347 else
348 ifeq ($(strip $(BRCM_6358_G729_FXO_LEGERITY)),y)
349 BRCM_DSP_HAL := vw_fxo_legerity
350 BRCM_DSP_CHAN_DEFINES = -DNUM_FXO_CHANNELS=1
351 export BRCM_6358_G729_FXO_LEGERITY
352 export XCHANGE_BUILD_APP=Bcm$(BRCM_CHIP)vw_fxo_legerity
353 else
354 ifeq ($(strip $(BRCM_6358_G729_ISDN_FXO_LEGERITY)),y)
355 BRCM_DSP_HAL := vw_isdn_fxo
356 BRCM_DSP_CHAN_DEFINES   = -DNUM_FXO_CHANNELS=1
357 BRCM_DSP_CODEC_DEFINES := -DXCFG_G711_SUPPORT=1
358 BRCM_DSP_CODEC_DEFINES += -DXCFG_G729_SUPPORT=1
359 BRCM_DSP_CODEC_DEFINES += -DXCFG_G726_SUPPORT=1
360 BRCM_DSP_CODEC_DEFINES += -DXCFG_FAX_SUPPORT=1
361 export BRCM_6358_G729_ISDN_FXO_LEGERITY
362 export XCHANGE_BUILD_APP=Bcm$(BRCM_CHIP)vw_isdn_fxo
363 export BRCM_DSP_CODEC_DEFINES
364 else
365 BRCM_DSP_HAL := vw
366 export BRCM_6358_G729
367 export XCHANGE_BUILD_APP=Bcm$(BRCM_CHIP)vw
368 endif
369 endif
370 endif
371 endif
372 endif
373 endif
374
375 ifeq ($(strip $(BRCM_VODSL_DUAL_3341)),y)
376 BRCM_RELEASETAG := $(BRCM_RELEASETAG).dual3341
377 endif
378
379 #Set up ADSL standard
380 export ADSL=$(BRCM_ADSL_STANDARD)
381
382 #Set up ADSL_PHY_MODE  {file | obj}
383 export ADSL_PHY_MODE=file
384
385 #Set up ADSL_SELF_TEST
386 export ADSL_SELF_TEST=$(BRCM_ADSL_SELF_TEST)
387
388 #WLan support
389 ifneq ($(strip $(BUILD_MIMO)),)
390 WLAN_IMPL=2
391 else
392 WLAN_IMPL=1
393 endif
394 export BUILD_MIMO
395
396 ###########################################
397 #
398 # Complete list of applications
399 #
400 ###########################################
401 export OPENSOURCE_DIR=$(USERAPPS_DIR)/opensource
402 SUBDIRS_OPENSOURCE = $(OPENSOURCE_DIR)/atm2684/pvc2684ctl \
403         $(OPENSOURCE_DIR)/openssl \
404         $(OPENSOURCE_DIR)/ipsec-tools \
405         $(OPENSOURCE_DIR)/bridge-utils \
406         $(OPENSOURCE_DIR)/ppp/pppoe \
407         $(OPENSOURCE_DIR)/udhcp \
408         $(OPENSOURCE_DIR)/iptables \
409         $(OPENSOURCE_DIR)/ebtables \
410         $(OPENSOURCE_DIR)/reaim  \
411         $(OPENSOURCE_DIR)/iproute2  \
412         $(OPENSOURCE_DIR)/libosip2 \
413         $(OPENSOURCE_DIR)/siproxd \
414         $(OPENSOURCE_DIR)/zebra  \
415         $(OPENSOURCE_DIR)/net-snmp  \
416         $(OPENSOURCE_DIR)/ftpd \
417         $(OPENSOURCE_DIR)/libcreduction \
418         $(OPENSOURCE_DIR)/busybox
419
420 #In future, we need to add soap when it
421 #is decoupled from cli
422
423 export BROADCOM_DIR=$(USERAPPS_DIR)/broadcom
424 SUBDIRS_BROADCOM = $(BROADCOM_DIR)/nvram \
425         $(BROADCOM_DIR)/cfm \
426         $(BROADCOM_DIR)/upnp/router/upnp \
427         $(BROADCOM_DIR)/nas \
428         $(BROADCOM_DIR)/wlctl \
429         $(BROADCOM_DIR)/vodsl \
430         $(BROADCOM_DIR)/atmctl \
431         $(BROADCOM_DIR)/adslctl \
432         $(BROADCOM_DIR)/netctl \
433         $(BROADCOM_DIR)/dnsprobe \
434         $(BROADCOM_DIR)/igmp \
435         $(BROADCOM_DIR)/dhcpr \
436         $(BROADCOM_DIR)/sntp \
437         $(BROADCOM_DIR)/ippd \
438         $(BROADCOM_DIR)/ddnsd \
439         $(BROADCOM_DIR)/ethctl \
440         $(BROADCOM_DIR)/hotplug \
441         $(BROADCOM_DIR)/epittcp \
442         $(BROADCOM_DIR)/snmp \
443         $(BROADCOM_DIR)/tr69c \
444         $(BROADCOM_DIR)/ses \
445         $(BROADCOM_DIR)/relayCtl \
446         $(BROADCOM_DIR)/vdslctl \
447         $(BROADCOM_DIR)/ledctrl \
448         $(BROADCOM_DIR)/hostCode
449
450 SUBDIRS_APP = $(SUBDIRS_BROADCOM) $(SUBDIRS_OPENSOURCE)
451 SUBDIRS = $(foreach dir, $(SUBDIRS_APP), $(shell if [ -d "$(dir)" ]; then echo $(dir); fi))
452
453 OPENSOURCE_APPS = ipsec-tools pvc2684ctl pvc2684d brctl pppd udhcp iptables ebtables \
454                   reaim tc libosip2 siproxd snmp zebra bftpd busybox 
455
456 BROADCOM_APPS = nvram cfm upnp nas wlctl vodsl atmctl adslctl netctl dnsprobe \
457                 igmp dhcpr diagapp sntp ddnsd ilmi ippd hotplug ethctl epittcp snmp ses \
458                 hmi2proxy relayctl vdslctl ledctrl
459 LIBC_OPTIMIZATION = libcreduction
460
461 ifneq ($(strip $(BUILD_GDBSERVER)),)
462 TOOLCHAIN_UTIL_APPS = gdbserver
463 endif
464
465 BUSYBOX_DIR = $(OPENSOURCE_DIR)/busybox
466
467 BRCMAPPS = openssl $(BROADCOM_APPS) $(OPENSOURCE_APPS) $(TOOLCHAIN_UTIL_APPS) $(LIBC_OPTIMIZATION)
468
469 all: sanity_check profile_check kernelbuild modbuild app hosttools buildimage
470
471 menuconfig:
472         @cd $(INC_KERNEL_BASE); \
473         if [ ! -e linux/CREDITS ]; then \
474           echo Untarring original Linux kernel source...; \
475           (tar xkfj $(ORIGINAL_KERNEL) 2> /dev/null || true); \
476         fi
477         $(MAKE) -C $(KERNEL_DIR)/scripts/lxdialog HOSTCC=gcc
478         $(CONFIG_SHELL) $(HOSTTOOLS_DIR)/scripts/Menuconfig $(TARGETS_DIR)/config.in
479
480 sanity_check:
481         @if [ "$(PROFILE)" = "" ]; then \
482           echo You need to specify build profile name from $(TARGETS_DIR) using 'make PROFILE=<profile name>...'; exit 1; \
483         fi
484
485 profile_check:
486         @if [ "$(LAST_PROFILE)" != "" ] && [ "$(LAST_PROFILE)" != "$(PROFILE)" ]; then \
487                 echo "The specified profile, $(PROFILE), differs from the last one built, $(LAST_PROFILE)."; \
488                 echo "The entire image must be rebuilt."; \
489                 read -p "Press ENTER to rebuild the entire image or CTRL-C to abort. " ; \
490                 $(MAKE) PROFILE=$(LAST_PROFILE) clean; \
491                 $(MAKE) PROFILE=$(PROFILE); \
492                 echo "Ignore the make exit error, Error 1"; \
493                 exit 1; \
494         fi
495
496 $(KERNEL_DIR)/vmlinux:
497         $(GENDEFCONFIG_CMD) $(PROFILE_PATH)
498         cd $(KERNEL_DIR); \
499         cp -f $(KERNEL_DIR)/arch/mips/defconfig $(KERNEL_DIR)/.config; \
500         $(MAKE) oldconfig; $(MAKE); $(MAKE) modules_install
501
502 kernelbuild:
503 ifeq ($(wildcard $(KERNEL_DIR)/vmlinux),)
504         @cd $(INC_KERNEL_BASE); \
505         if [ ! -e linux/CREDITS ]; then \
506           echo Untarring original Linux kernel source...; \
507           (tar xkfj $(ORIGINAL_KERNEL) 2> /dev/null || true); \
508         fi
509         $(GENDEFCONFIG_CMD) $(PROFILE_PATH)
510         cd $(KERNEL_DIR); \
511         cp -f $(KERNEL_DIR)/arch/mips/defconfig $(KERNEL_DIR)/.config; \
512         $(MAKE) oldconfig; $(MAKE)
513 else
514         cd $(KERNEL_DIR); $(MAKE)
515 endif
516
517 kernel: profile_check kernelbuild hosttools buildimage
518
519 ifeq ($(strip $(VOXXXLOAD)),1)
520 modbuild: touch_voice_files
521         cd $(KERNEL_DIR); $(MAKE) modules && $(MAKE) modules_install
522 else
523 modbuild:
524         cd $(KERNEL_DIR); $(MAKE) modules && $(MAKE) modules_install
525 endif
526
527 modules: profile_check modbuild hosttools buildimage
528
529 app: profile_check prebuild $(BRCMAPPS) hosttools rm_cvs buildimage 
530
531 prebuild:
532         mkdir -p $(INSTALL_DIR)/bin $(INSTALL_DIR)/lib
533
534 rm_cvs:
535 #       @echo "Removing CVS info"
536 #       find $(INSTALL_DIR) -name 'CVS' -print -exec rm -rf "{}" ";"
537
538 # touch_voice_files doesn't clean up voice, just enables incremental build of voice code
539 touch_voice_files:
540         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 "{}" ";"
541         rm -rf kernel/linux/.tmp_versions/endpointdd.mod
542         rm -rf kernel/linux/arch/mips/defconfig
543         rm -rf kernel/linux/include/config/bcm/endpoint/
544         rm -rf kernel/linux/include/asm-mips/offset.h
545         rm -rf kernel/linux/include/asm-mips/reg.h
546         find kernel/linux/lib/ -name '*.o' -print -exec rm -f "{}" ";"
547         find kernel/linux/lib/ -name '*.lib' -print -exec rm -f "{}" ";"
548
549 # Build user applications depending on if they are
550 # specified in the profile
551 ifneq ($(strip $(BUILD_PVC2684CTL)),)
552 export BUILD_PVC2684D=$(BUILD_PVC2684CTL)
553 pvc2684d:
554 pvc2684ctl:
555         $(MAKE) -C $(OPENSOURCE_DIR)/atm2684/pvc2684ctl $(BUILD_PVC2684CTL)
556 else
557 pvc2684d:
558 pvc2684ctl:
559 endif
560
561 ifneq ($(strip $(BUILD_BRCTL)),)
562 brctl:
563         cd $(OPENSOURCE_DIR);   (tar xkfj bridge-utils.tar.bz2 2> /dev/null || true)
564         $(MAKE) -C $(OPENSOURCE_DIR)/bridge-utils $(BUILD_BRCTL)
565 else
566 brctl:
567 endif
568
569 ifneq ($(strip $(BUILD_VCONFIG)),)
570 export BUILD_VCONFIG=y
571 endif
572
573 ifneq ($(strip $(BUILD_CFM)),)
574
575 ifneq ($(strip $(BUILD_CFM_MENU)),)
576 export BUILD_CFM_MENU=y
577 endif
578
579 cfm:
580         $(MAKE) -C $(BROADCOM_DIR)/cfm $(BUILD_CFM)
581 else
582 cfm:
583 endif
584
585 # iptables is dependent on kernel netfilter modules
586 ifneq ($(strip $(BRCM_KERNEL_NETFILTER)),)
587 ifneq ($(strip $(BUILD_IPTABLES)),)
588 iptables:
589         cd $(OPENSOURCE_DIR);   (tar xkfj iptables.tar.bz2 2> /dev/null || true)
590         $(MAKE) -C $(OPENSOURCE_DIR)/iptables $(BUILD_IPTABLES)
591 iptables-build:
592         cd $(OPENSOURCE_DIR);   (tar xkfj iptables.tar.bz2 2> /dev/null || true)
593         $(MAKE) -C $(OPENSOURCE_DIR)/iptables static
594 else
595 iptables:
596 endif
597 else
598 iptables:
599         @echo Warning: You need to enable netfilter in the kernel !!!!!
600 endif
601
602 ifneq ($(strip $(BUILD_EBTABLES)),)
603 ebtables:
604         cd $(OPENSOURCE_DIR);   (tar xkfj ebtables.tar.bz2 2> /dev/null || true)
605         $(MAKE) -C $(OPENSOURCE_DIR)/ebtables $(BUILD_EBTABLES)
606 else
607 ebtables:
608 endif
609
610 ifneq ($(strip $(BUILD_PPPD)),)
611 pppd:
612         $(MAKE) -C $(OPENSOURCE_DIR)/ppp/pppoe $(BUILD_PPPD)
613 else
614 pppd:
615 endif
616
617 ifneq ($(strip $(BUILD_REAIM)),)
618 reaim:
619         cd $(OPENSOURCE_DIR);   (tar xkfj reaim.tar.bz2 2> /dev/null || true)
620         $(MAKE) -C $(OPENSOURCE_DIR)/reaim $(BUILD_REAIM)
621 else
622 reaim:
623 endif
624
625 ifneq ($(strip $(BRCM_KERNEL_NETQOS)),)
626 tc:
627         cd $(OPENSOURCE_DIR);   (tar xkfj iproute2.tar.bz2 2> /dev/null || true)
628         $(MAKE) -C $(OPENSOURCE_DIR)/iproute2 dynamic
629 else
630 tc:
631 endif
632
633 ifneq ($(strip $(BUILD_GDBSERVER)),)
634 gdbserver:
635         install -m 755 $(TOOLCHAIN)/mips-linux-uclibc/target-apps/usr/bin/gdbserver $(INSTALL_DIR)/bin
636         $(STRIP) $(INSTALL_DIR)/bin/gdbserver
637 else
638 gdbserver:
639 endif
640
641 ifneq ($(strip $(BUILD_ETHWAN)),)
642 export BUILD_ETHWAN=y
643 endif
644
645 ifneq ($(strip $(BUILD_UDHCP)),)
646 udhcp:
647         $(MAKE) -C $(OPENSOURCE_DIR)/udhcp $(BUILD_UDHCP)
648 else
649 udhcp:
650 endif
651
652 # UPNP is dependent on iptables
653 ifneq ($(strip $(BUILD_IPTABLES)),)
654 ifneq ($(strip $(BUILD_UPNP)),)
655 upnp: iptables-build
656         $(MAKE) -C $(BROADCOM_DIR)/upnp/router/upnp  $(BUILD_UPNP)
657 else
658 upnp:
659 endif
660 else
661 upnp:
662         @echo Warning: You need to build iptables first !!!!!
663 endif
664
665 ifneq ($(strip $(BUILD_IPSEC_TOOLS)),)
666 ipsec-tools:
667         cd $(OPENSOURCE_DIR);   (tar xkfj ipsec-tools.tar.bz2 2> /dev/null || true)
668         $(MAKE) -C $(OPENSOURCE_DIR)/ipsec-tools $(BUILD_IPSEC_TOOLS)
669 else
670 ipsec-tools:
671 endif
672
673 ifneq ($(strip $(BUILD_CERT)),)
674 openssl:
675         cd $(OPENSOURCE_DIR);   (tar xkfj openssl.tar.bz2 2> /dev/null || true)
676         $(MAKE) -C $(OPENSOURCE_DIR)/openssl dynamic
677 else
678 openssl:
679 endif
680
681
682 ifneq ($(strip $(BUILD_SIPROXD)),)
683 siproxd:
684         cd $(OPENSOURCE_DIR);   (tar xkfj siproxd.tar.bz2 2> /dev/null || true)
685         $(MAKE) -C $(OPENSOURCE_DIR)/siproxd $(BUILD_SIPROXD)
686 libosip2:
687         cd $(OPENSOURCE_DIR);   (tar xkfj libosip2.tar.bz2 2> /dev/null || true)
688         $(MAKE) -C $(OPENSOURCE_DIR)/libosip2
689 else
690 siproxd:
691
692 libosip2:
693
694 endif
695
696 ifneq ($(strip $(BUILD_SNMP)),)
697
698 ifneq ($(strip $(BUILD_SNMP_SET)),)
699 export SNMP_SET=1
700 else
701 export SNMP_SET=0
702 endif
703
704 ifneq ($(strip $(BUILD_SNMP_ADSL_MIB)),)
705 export SNMP_ADSL_MIB=1
706 else
707 export SNMP_ADSL_MIB=0
708 endif
709
710 ifneq ($(strip $(BUILD_SNMP_ATM_MIB)),)
711 export SNMP_ATM_MIB=1
712 else
713 export SNMP_ATM_MIB=0
714 endif
715
716 ifneq ($(strip $(BUILD_SNMP_AT_MIB)),)
717 export SNMP_AT_MIB=1
718 else
719 export SNMP_AT_MIB=0
720 endif
721
722 ifneq ($(strip $(BUILD_SNMP_SYSOR_MIB)),)
723 export SNMP_SYSOR_MIB=1
724 else
725 export SNMP_SYSOR_MIB=0
726 endif
727
728 ifneq ($(strip $(BUILD_SNMP_TCP_MIB)),)
729 export SNMP_TCP_MIB=1
730 else
731 export SNMP_TCP_MIB=0
732 endif
733
734 ifneq ($(strip $(BUILD_SNMP_UDP_MIB)),)
735 export SNMP_UDP_MIB=1
736 else
737 export SNMP_UDP_MIB=0
738 endif
739
740 ifneq ($(strip $(BUILD_SNMP_IP_MIB)),)
741 export SNMP_IP_MIB=1
742 else
743 export SNMP_IP_MIB=0
744 endif
745
746 ifneq ($(strip $(BUILD_SNMP_ICMP_MIB)),)
747 export SNMP_ICMP_MIB=1
748 else
749 export SNMP_ICMP_MIB=0
750 endif
751
752 ifneq ($(strip $(BUILD_SNMP_SNMP_MIB)),)
753 export SNMP_SNMP_MIB=1
754 else
755 export SNMP_SNMP_MIB=0
756 endif
757
758 ifneq ($(strip $(BUILD_SNMP_ATMFORUM_MIB)),)
759 export SNMP_ATMFORUM_MIB=1
760 else
761 export SNMP_ATMFORUM_MIB=0
762 endif
763
764 ifneq ($(strip $(BRCM_SNMP)),)
765
766 ifneq ($(strip $(BUILD_SNMP_CHINA_TELECOM_CPE_MIB)),)
767 export SNMP_CHINA_TELECOM_CPE_MIB=1
768 export SNMP_MIB2=1
769 endif
770
771 ifneq ($(strip $(BUILD_SNMP_UDP)),)
772 export SNMP_UDP=1
773 endif
774
775 ifneq ($(strip $(BUILD_SNMP_EOC)),)
776 export SNMP_EOC=1
777 endif
778
779 ifneq ($(strip $(BUILD_SNMP_AAL5)),)
780 export SNMP_AAL5=1
781 endif
782
783 ifneq ($(strip $(BUILD_SNMP_AUTO)),)
784 export SNMP_AUTO=1
785 endif
786
787 ifneq ($(strip $(BUILD_SNMP_DEBUG)),)
788 export SNMP_DEBUG=1
789 endif
790
791 ifneq ($(strip $(BUILD_SNMP_TRANSPORT_DEBUG)),)
792 export SNMP_TRANSPORT_DEBUG=1
793 endif
794
795 ifneq ($(strip $(BUILD_SNMP_LAYER_DEBUG)),)
796 export SNMP_LAYER_DEBUG=1
797 endif
798 endif
799
800 snmp:
801 ifneq ($(strip $(BRCM_SNMP)),)
802 ##      $(MAKE) -C $(BROADCOM_DIR)/snmp $(BUILD_SNMP)
803 else
804         cd $(OPENSOURCE_DIR);   (tar xkfj net-snmp.tar.bz2 2> /dev/null || true)
805         $(MAKE) -C $(OPENSOURCE_DIR)/net-snmp $(BUILD_SNMP)
806 endif
807 else
808 snmp:
809 endif
810
811 ifneq ($(strip $(BUILD_4_LEVEL_QOS)),)
812 export BUILD_4_LEVEL_QOS=y
813 endif
814
815 ifneq ($(strip $(BUILD_ILMI)),)
816 ilmi:
817         cd $(OPENSOURCE_DIR);   (tar xkfj net-snmp.tar.bz2 2> /dev/null || true)
818         $(MAKE) -C $(BROADCOM_DIR)/ilmi $(BUILD_ILMI)
819 else
820 ilmi:
821 endif
822
823 ifneq ($(strip $(BUILD_VODSL)),)
824 vodsl:
825         $(MAKE) -C $(BROADCOM_DIR)/vodsl $(BUILD_VODSL)
826 else
827 vodsl:
828 endif
829
830 # Leave it for the future when soap server is decoupled from cfm
831 ifneq ($(strip $(BUILD_SOAP)),)
832 ifeq ($(strip $(BUILD_SOAP_VER)),2)
833 soapserver:
834         $(MAKE) -C $(BROADCOM_DIR)/SoapToolkit/SoapServer $(BUILD_SOAP)
835 else
836 soap:
837         $(MAKE) -C $(BROADCOM_DIR)/soap $(BUILD_SOAP)
838 endif
839 else
840 soap:
841 endif
842
843 ifneq ($(strip $(BUILD_NAS)),)
844 export WIRELESS=1
845 nas:
846         if [ -e $(BRCMDRIVERS_DIR)/broadcom/net/wl/impl$(WLAN_IMPL)/nas ]; then \
847           rm -rf $(BROADCOM_DIR)/nas/*; \
848           cp -pRdf $(BRCMDRIVERS_DIR)/broadcom/net/wl/impl$(WLAN_IMPL)/nas/* $(BROADCOM_DIR)/nas; \
849         fi
850         $(MAKE) -C $(BROADCOM_DIR)/nas $(BUILD_NAS)
851
852 #add hotplug here, for nas use only
853 hotplug:
854         $(MAKE) -C $(BROADCOM_DIR)/hotplug $(BUILD_NAS)
855
856 else
857 export WIRELESS=0
858 nas:
859 #add hotplug here, for nas use only
860 hotplug:
861 endif
862
863 ifneq ($(strip $(BUILD_WLCTL)),)
864 export WIRELESS=1
865 wlctl:
866         if [ -e $(BRCMDRIVERS_DIR)/broadcom/net/wl/impl$(WLAN_IMPL)/wlctl ]; then \
867           rm -rf $(BROADCOM_DIR)/wlctl/*; \
868           cp -pRdf $(BRCMDRIVERS_DIR)/broadcom/net/wl/impl$(WLAN_IMPL)/wlctl/* $(BROADCOM_DIR)/wlctl; \
869         fi
870         $(MAKE) -C $(BROADCOM_DIR)/wlctl $(BUILD_WLCTL)
871 else
872 export WIRELESS=0
873 wlctl:
874 endif
875
876 ifneq ($(strip $(BUILD_EPITTCP)),)
877 epittcp:
878         $(MAKE) -C $(BROADCOM_DIR)/epittcp $(BUILD_EPITTCP)
879 else
880 epittcp:
881 endif
882
883 ifneq ($(strip $(BUILD_SES)),)
884 ses:
885         if [ -e $(BRCMDRIVERS_DIR)/broadcom/net/wl/impl$(WLAN_IMPL)/ses ]; then \
886           rm -rf $(BROADCOM_DIR)/ses/*; \
887           cp -pRdf $(BRCMDRIVERS_DIR)/broadcom/net/wl/impl$(WLAN_IMPL)/ses/* $(BROADCOM_DIR)/ses; \
888         fi
889         $(MAKE) -C $(BROADCOM_DIR)/ses $(BUILD_SES)
890 else
891 ses:
892 endif
893
894 ifneq ($(strip $(BUILD_NVRAM)),)
895 nvram:
896         $(MAKE) -C $(BROADCOM_DIR)/nvram $(BUILD_NVRAM)
897 else
898 nvram:
899 endif
900
901 #Always compile Ethernet control utility
902 ethctl:
903         $(MAKE) -C $(BROADCOM_DIR)/ethctl dynamic
904
905 ifneq ($(strip $(BUILD_DNSPROBE)),)
906 dnsprobe:
907         $(MAKE) -C $(BROADCOM_DIR)/dnsprobe $(BUILD_DNSPROBE)
908 else
909 dnsprobe:
910 endif
911
912 ifneq ($(strip $(BUILD_IGMP)),)
913 igmp:
914         $(MAKE) -C $(BROADCOM_DIR)/igmp $(BUILD_IGMP)
915 else
916 igmp:
917 endif
918
919 ifneq ($(strip $(BUILD_DHCPR)),)
920 dhcpr:
921         $(MAKE) -C $(BROADCOM_DIR)/dhcpr $(BUILD_DHCPR)
922 else
923 dhcpr:
924 endif
925
926 ifneq ($(strip $(BUILD_ZEBRA)),)
927 zebra:
928         cd $(OPENSOURCE_DIR);   (tar xkfj zebra.tar.bz2 2> /dev/null || true)
929         $(MAKE) -C $(OPENSOURCE_DIR)/zebra $(BUILD_ZEBRA)
930 else
931 zebra:
932 endif
933
934 ifneq ($(strip $(BUILD_ATMCTL)),)
935 atmctl:
936         $(MAKE) -C $(BROADCOM_DIR)/atmctl $(BUILD_ATMCTL)
937 else
938 atmctl:
939 endif
940
941 ifneq ($(strip $(BUILD_ADSLCTL)),)
942 adslctl:
943         $(MAKE) -C $(BROADCOM_DIR)/adslctl $(BUILD_ADSLCTL)
944 else
945 adslctl:
946 endif
947
948 ifeq ($(strip $(BUILD_CFM_CLI)),y)
949 ifneq ($(strip $(BUILD_NETCTL)),)
950 netctl:
951         $(MAKE) -C $(BROADCOM_DIR)/netctl $(BUILD_NETCTL)
952 else
953 netctl:
954 endif
955 else
956 netctl:
957 endif
958
959 ifneq ($(strip $(BUILD_BUSYBOX)),)
960 busybox:
961         cd $(OPENSOURCE_DIR); (tar xkfj busybox.tar.bz2 2> /dev/null || true)
962 #       $(MAKE) -C $(OPENSOURCE_DIR)/busybox $(BUILD_BUSYBOX)
963         cd $(OPENSOURCE_DIR)/busybox; cp -f brcm.config .config
964         $(MAKE) -C $(OPENSOURCE_DIR)/busybox install
965 else
966 busybox:
967 endif
968
969 ifneq ($(strip $(BUILD_LIBCREDUCTION)),)
970 libcreduction:
971         mkdir -p $(OPENSOURCE_DIR)/libcreduction/uclibc
972         $(MAKE) -C $(OPENSOURCE_DIR)/libcreduction install
973 else
974 libcreduction:
975 endif
976
977 ifneq ($(strip $(BUILD_DIAGAPP)),)
978 diagapp:
979         $(MAKE) -C $(BROADCOM_DIR)/diagapp $(BUILD_DIAGAPP)
980 else
981 diagapp:
982 endif
983
984 ifneq ($(strip $(BUILD_FTPD)),)
985 bftpd:
986         cd $(OPENSOURCE_DIR);   (tar xkfj ftpd.tar.bz2 2> /dev/null || true)
987         $(MAKE) -C $(OPENSOURCE_DIR)/ftpd $(BUILD_FTPD)
988 else
989 bftpd:
990 endif
991
992 ifneq ($(strip $(BUILD_DDNSD)),)
993 ddnsd:
994         $(MAKE) -C $(BROADCOM_DIR)/ddnsd $(BUILD_DDNSD)
995 else
996 ddnsd:
997 endif
998
999 ifneq ($(strip $(BUILD_SNTP)),)
1000 sntp:
1001         $(MAKE) -C $(BROADCOM_DIR)/sntp $(BUILD_SNTP)
1002 else
1003 sntp:
1004 endif
1005
1006 ifneq ($(strip $(BUILD_IPPD)),)
1007 ippd:
1008         $(MAKE) -C $(BROADCOM_DIR)/ippd $(BUILD_IPPD)
1009 else
1010 ippd:
1011 endif
1012
1013 ifneq ($(strip $(BUILD_PORT_MIRRORING)),)
1014 export BUILD_PORT_MIRRORING=1
1015 else
1016 export BUILD_PORT_MIRRORING=0
1017 endif
1018
1019 ifneq ($(strip $(BUILD_HOSTMGR)),)
1020 hmi2proxy: vdsl_processing
1021         $(MAKE) -C $(BROADCOM_DIR)/hostCode/hostMgr $(BUILD_HOSTMGR) TARGET=$@ PHY=memap6348
1022 else
1023 hmi2proxy:
1024 endif
1025
1026 ifneq ($(strip $(BUILD_RELAYCONTROL)),)
1027 relayctl:
1028         $(MAKE) -C $(BROADCOM_DIR)/relayCtl/relay6348 $(BUILD_RELAYCONTROL) TARGET=$@
1029 else
1030 relayctl:
1031 endif
1032
1033 ifneq ($(strip $(BUILD_VDSLCTL)),)
1034 vdslctl:
1035         $(MAKE) -C $(BROADCOM_DIR)/vdslctl/vdslctl $(BUILD_VDSLCTL) TARGET=$@
1036 else
1037 vdslctl:
1038 endif
1039 # USR9109/9113 BUILD_LEDCTRL
1040 ledctrl:
1041         $(MAKE) -C $(BROADCOM_DIR)/ledctrl $(BUILD_SNTP)
1042
1043 hosttools:
1044         $(MAKE) -C $(HOSTTOOLS_DIR)
1045
1046 vdsl_processing: add_6510_support vdsl_modem vdsl_modem_file
1047
1048 vdsl_modem_file:
1049         @echo "************* VDSL Housekeeping **************************************"
1050         @echo   "VCOPE_BOARD=$(VCOPE_BOARD) HMI_VERSION=$(HMI_VERSION)"
1051         @echo "VCOPE_TYPE=$(VCOPE_TYPE) VCOPE_LINE_NUMBER=$(VCOPE_LINE_NUMBER)"
1052         @echo "**********************************************************************"
1053   
1054 vdsl_modem:
1055         - cmp -s $(FSSRC_DIR)/images/modem.bin $(6510_REF_CODE)/images/$(VMODEM_BIN); \
1056         if [ ! $$? -eq 0 ]; then \
1057                 echo "VCOPE: different type - need clean up"; \
1058                 find userapps/broadcom/hostCode/ -name *.[oa]   | xargs rm; \
1059                 find userapps/broadcom/hostCode/ -name *.depend | xargs rm; \
1060                 find userapps/broadcom/relayCtl/ -name *.[oa]   | xargs rm; \
1061                 find userapps/broadcom/relayCtl/ -name *.depend | xargs rm; \
1062                 find userapps/broadcom/vdslctl/  -name *.[oa]   | xargs rm; \
1063                 find userapps/broadcom/vdslctl/  -name *.depend | xargs rm; \
1064         fi
1065         @echo "$(FSSRC_DIR)/images/: Creating \"modem.bin\" out of $(VMODEM_BIN)" 
1066         cp -f $(6510_REF_CODE)/images/$(VMODEM_BIN) $(FSSRC_DIR)/images/modem.bin;
1067         cp -f $(6510_REF_CODE)/images/$(VBOOT_BIN) $(FSSRC_DIR)/images/boot.bin;
1068
1069 buildimage: $(KERNEL_DIR)/vmlinux
1070         su --command="cd $(TARGETS_DIR); ./buildFS"
1071 ifeq ($(strip $(BRCM_KERNEL_ROOTFS)),squashfs)
1072         #$(HOSTTOOLS_DIR)/mksquashfs $(TARGET_FS) $(PROFILE_DIR)/rootfs.img -noappend -be -always-use-fragments -gzip
1073         $(HOSTTOOLS_DIR)/mksquashfs $(TARGET_FS) $(PROFILE_DIR)/rootfs.img -noappend -be -lzma -no-fragments -noI
1074 else
1075  ifeq ($(strip $(BRCM_KERNEL_ROOTFS)),cramfs)
1076 #       $(HOSTTOOLS_DIR)/mkcramfs -r -g $(TARGET_FS) $(PROFILE_DIR)/rootfs.img
1077         $(HOSTTOOLS_DIR)/mkcramfs -r $(TARGET_FS) $(PROFILE_DIR)/rootfs.img
1078  else
1079   ifeq ($(strip $(BRCM_KERNEL_ROOTFS)),jffs2)
1080         $(HOSTTOOLS_DIR)/mkfs.jffs2 -b -p -e $(BRCM_FLASHBLK_SIZE) -r $(TARGET_FS) -o $(PROFILE_DIR)/rootfs.img
1081   endif
1082  endif
1083 endif
1084
1085 ifneq ($(strip $(BRCM_KERNEL_ROOTFS)),nfs)
1086         cd $(PROFILE_DIR); \
1087         cp $(KERNEL_DIR)/vmlinux . ; \
1088         $(STRIP) --remove-section=.note --remove-section=.comment vmlinux; \
1089         $(OBJCOPY) -O binary vmlinux vmlinux.bin; \
1090         $(HOSTTOOLS_DIR)/cmplzma -k -2 vmlinux vmlinux.bin vmlinux.lz;\
1091         $(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; \
1092         $(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; \
1093         $(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); \
1094         $(HOSTTOOLS_DIR)/addvtoken $(FLASH_IMAGE_NAME) $(FLASH_IMAGE_NAME).w
1095         @mkdir -p $(IMAGES_DIR)
1096         @cp $(PROFILE_DIR)/$(FS_KERNEL_IMAGE_NAME) $(IMAGES_DIR)/$(FS_KERNEL_IMAGE_NAME)_$(BRCM_RELEASETAG)-$(shell date '+%y%m%d_%H%M')
1097         @echo
1098         @echo -e "Done! Image $(PROFILE) has been built in $(IMAGES_DIR)."
1099 else
1100         cd $(PROFILE_DIR); \
1101         cp $(KERNEL_DIR)/vmlinux . ; \
1102         $(STRIP) --remove-section=.note --remove-section=.comment vmlinux
1103         @echo
1104         @echo -e "\t=== Following the below steps to start your NFS root file system on host ==="
1105         @echo -e "Step 1: Copy $(PROFILE_DIR)/vmlinux to your TFTP server boot directory, such as /tftpboot"
1106         @echo -e "Step 2: Add \"$(PROFILE_DIR)/fs *(rw,no_root_squash)\" to /etc/exports"
1107         @echo -e "Step 3: Become root and restart your nfs server, such as \"service nfs restart\""
1108         @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\""
1109 endif
1110
1111
1112 ###########################################
1113 #
1114 # System code clean-up
1115 #
1116 ###########################################
1117
1118 subdirs: $(patsubst %, _dir_%, $(SUBDIRS))
1119
1120 $(patsubst %, _dir_%, $(SUBDIRS)) :
1121         $(MAKE) -C $(patsubst _dir_%, %, $@) $(TGT)
1122
1123 clean: target_clean app_clean kernel_clean hosttools_clean  remove_6510_support
1124         rm -f .tmpconfig*
1125
1126 fssrc_clean:
1127         rm -fr $(INSTALL_DIR)/bin
1128         rm -fr $(INSTALL_DIR)/sbin
1129         rm -fr $(INSTALL_DIR)/lib
1130         rm -fr $(INSTALL_DIR)/upnp
1131         rm -fr $(INSTALL_DIR)/docs
1132         rm -fr $(INSTALL_DIR)/webs
1133         rm -fr $(INSTALL_DIR)/usr
1134         rm -fr $(INSTALL_DIR)/linuxrc
1135
1136 kernel_clean: sanity_check
1137         $(MAKE) -C $(KERNEL_DIR) mrproper
1138         rm -f $(KERNEL_DIR)/arch/mips/defconfig
1139         rm -f $(HOSTTOOLS_DIR)/lzma/decompress/*.o
1140         rm -rf $(XCHANGE_DIR)/dslx/lib/LinuxKernel
1141         rm -rf $(XCHANGE_DIR)/dslx/obj/LinuxKernel
1142
1143 app_clean: sanity_check fssrc_clean
1144         $(MAKE) subdirs TGT=clean
1145         rm -rf $(XCHANGE_DIR)/dslx/lib/LinuxUser
1146         rm -rf $(XCHANGE_DIR)/dslx/obj/LinuxUser
1147
1148 target_clean: sanity_check
1149         rm -f $(PROFILE_DIR)/rootfs.img
1150         rm -f $(PROFILE_DIR)/vmlinux
1151         rm -f $(PROFILE_DIR)/vmlinux.bin
1152         rm -f $(PROFILE_DIR)/vmlinux.lz
1153         rm -f $(PROFILE_DIR)/$(FS_KERNEL_IMAGE_NAME)
1154         rm -f $(PROFILE_DIR)/$(CFE_FS_KERNEL_IMAGE_NAME)
1155         rm -f $(PROFILE_DIR)/$(FLASH_IMAGE_NAME)
1156         rm -f $(PROFILE_DIR)/$(FLASH_IMAGE_NAME).w
1157         rm -fr $(PROFILE_DIR)/modules
1158         find targets -name vmlinux -print -exec rm -f "{}" ";"
1159         su --command="rm -fr $(TARGET_FS)"
1160
1161 hosttools_clean:
1162         $(MAKE) -C $(HOSTTOOLS_DIR) clean
1163
1164 add_6510_support: 
1165         $(6510_REF_CODE)/add6510support DYMMY_HMI_VERSON $(6510_REF_CODE)
1166         
1167 remove_6510_support:
1168         rm -fr $(BROADCOM_DIR)/hostCode
1169         rm -fr $(BROADCOM_DIR)/relayCtl
1170         rm -fr $(BROADCOM_DIR)/vdslctl
1171
1172 clean_6510:
1173         rm -f `find userapps/broadcom/hostCode/ -name *.[oa]`
1174         rm -f `find userapps/broadcom/hostCode/ -name *.depend`
1175         rm -f `find userapps/broadcom/relayCtl/ -name *.[oa]`
1176         rm -f `find userapps/broadcom/relayCtl/ -name *.depend`
1177         rm -f `find userapps/broadcom/vdslctl/  -name *.[oa]`
1178         rm -f `find userapps/broadcom/vdslctl/  -name *.depend`
1179         rm -f `find userapps/broadcom/cfm/      -name *.[oa]`
1180         rm -f `find userapps/broadcom/cfm/      -name *.depend`
1181
1182 voice_clean:
1183         find bcmdrivers/broadcom/char/endpoint -name '*.o' -exec rm -f "{}" ";"
1184         find userapps/broadcom/cfm -name '*.o' -exec rm -f "{}" ";"
1185         find userapps/broadcom/vodsl -name '*.o' -exec rm -f "{}" ";"
1186         rm -rf $(XCHANGE_DIR)/dslx/lib/LinuxKernel
1187         rm -rf $(XCHANGE_DIR)/dslx/obj/LinuxUser
1188
1189 ###########################################
1190 #
1191 # System-wide exported variables
1192 # (in alphabetical order)
1193 #
1194 ###########################################
1195
1196 export \
1197 AR                         \
1198 AS                         \
1199 BRCM_APP_PHONE             \
1200 BRCMAPPS                   \
1201 BRCM_BOARD                 \
1202 BRCM_DRIVER_PCI            \
1203 BRCMDRIVERS_DIR            \
1204 BRCM_DSP_APM_FXO           \
1205 BRCM_DSP_APM_FXO_EXT       \
1206 BRCM_DSP_CODEC_G711        \
1207 BRCM_DSP_CODEC_G723        \
1208 BRCM_DSP_CODEC_G726        \
1209 BRCM_DSP_CODEC_G729        \
1210 BRCM_DSP_CODEC_G7xx        \
1211 BRCM_DSP_CODEC_T38_EXT     \
1212 BRCM_DSP_CODEC_T38_INT     \
1213 BRCM_DSP_HAL               \
1214 BRCM_DSP_HAL_EXTENSION     \
1215 BRCM_DSP_PCM               \
1216 BRCM_DSP_PCM_G726          \
1217 BRCM_DSP_PCM_T38_EXT       \
1218 BRCM_EXTRAVERSION          \
1219 BRCM_KERNEL_NETQOS         \
1220 BRCM_KERNEL_ROOTFS         \
1221 BRCM_LDX_APP               \
1222 BRCM_MIPS_ONLY_BUILD       \
1223 BRCM_MIPS_ONLY_BUILD       \
1224 BRCM_PSI_VERSION           \
1225 BRCM_PTHREADS              \
1226 BRCM_RELEASE               \
1227 BRCM_RELEASETAG            \
1228 BRCM_SNMP                  \
1229 BRCM_UCLIBC                \
1230 BRCM_VERSION               \
1231 BRCM_VODSL_DUAL_3341       \
1232 BRCM_VOICE_COUNTRY_JAPAN   \
1233 BRCM_VOICE_GLOBAL_CFLAGS   \
1234 BROADCOM_CFM_DIR           \
1235 BUILD_ADSLCTL              \
1236 BUILD_ATMCTL               \
1237 BUILD_BR2684CTL            \
1238 BUILD_BRCM_VLAN            \
1239 BUILD_BRCTL                \
1240 BUILD_BUSYBOX              \
1241 BUILD_CERT                 \
1242 BUILD_CFM                  \
1243 BUILD_CFM_CLI              \
1244 BUILD_CFM_SSHD             \
1245 BUILD_CFM_TELNETD          \
1246 BUILD_DDNSD                \
1247 BUILD_DHCPR                \
1248 BUILD_DIAGAPP              \
1249 BUILD_DIR                  \
1250 BUILD_DNSPROBE             \
1251 BUILD_EBTABLES             \
1252 BUILD_EPITTCP              \
1253 BUILD_ETHWAN               \
1254 BUILD_FTPD                 \
1255 BUILD_GDBSERVER            \
1256 BUILD_IGMP                 \
1257 BUILD_IPPD                 \
1258 BUILD_IPSEC_TOOLS          \
1259 BUILD_IPTABLES             \
1260 BUILD_NAS                  \
1261 BUILD_NETCTL               \
1262 BUILD_NVRAM                \
1263 BUILD_PORT_MIRRORING                     \
1264 BUILD_PPPD                 \
1265 BUILD_PVC2684CTL           \
1266 BUILD_REAIM                \
1267 BUILD_RT2684D              \
1268 BUILD_SES                  \
1269 BUILD_SIPROXD              \
1270 BUILD_SLACTEST             \
1271 BUILD_SNMP                 \
1272 BUILD_SNTP                 \
1273 BUILD_SOAP                 \
1274 BUILD_SOAP_VER             \
1275 BUILD_SSHD_MIPS_GENKEY     \
1276 BUILD_TOD                  \
1277 BUILD_TR69C                \
1278 BUILD_TR69C_SSL            \
1279 BUILD_UDHCP                \
1280 BUILD_UPNP                 \
1281 BUILD_VCONFIG              \
1282 BUILD_VCONFIG              \
1283 BUILD_VODSL                \
1284 BUILD_WLCTL                \
1285 BUILD_ZEBRA                \
1286 BUSYBOX_DIR                \
1287 CC                         \
1288 CROSS_COMPILE              \
1289 CXX                        \
1290 DEFAULTCFG_DIR             \
1291 FSSRC_DIR                  \
1292 HOSTTOOLS_DIR              \
1293 INC_ADSLDRV_PATH           \
1294 INC_BRCMBOARDPARMS_PATH    \
1295 INC_BRCMCFM_PATH           \
1296 INC_BRCMDRIVER_PRIV_PATH   \
1297 INC_BRCMDRIVER_PUB_PATH    \
1298 INC_BRCMSHARED_PRIV_PATH   \
1299 INC_BRCMSHARED_PUB_PATH    \
1300 INC_FLASH_PATH             \
1301 INC_ENDPOINT_PATH          \
1302 INC_KERNEL_BASE            \
1303 INSTALL_DIR                \
1304 JTAG_KERNEL_DEBUG          \
1305 KERNEL_DIR                 \
1306 LD                         \
1307 LIBCDIR                    \
1308 LIBDIR                     \
1309 LIB_PATH                   \
1310 LINUXDIR                   \
1311 NM                         \
1312 OBJCOPY                    \
1313 OBJDUMP                    \
1314 PROFILE_DIR                \
1315 RANLIB                     \
1316 RUN_NOISE                  \
1317 SSTRIP                     \
1318 STRIP                      \
1319 TARGETS_DIR                \
1320 TOOLCHAIN                  \
1321 USERAPPS_DIR               \
1322 WEB_POPUP                  \
1323 XCHANGE_DIR                \
1324 XCHANGE_DSP_APP_EXTENSION  \
1325 VCOPE_TYPE                 \
1326 VCOPE_BOARD                \
1327 VCOPE_LINE_NUMBER          \
1328