1# 2# Broadcom Linux Router Makefile 3# 4# Copyright (C) 2010, Broadcom Corporation. All Rights Reserved. 5# 6# Permission to use, copy, modify, and/or distribute this software for any 7# purpose with or without fee is hereby granted, provided that the above 8# copyright notice and this permission notice appear in all copies. 9# 10# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY 13# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION 15# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 16# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17# 18# $Id: Makefile,v 1.263 2010/10/22 12:47:08 Exp $ 19# 20 21include .config 22 23ifndef FW_TYPE 24FW_TYPE = WW 25endif 26export FW_TYPE 27 28BOARDID_FILE=compatible_WNDR4500rev.txt 29FW_NAME=WNDR4500REV 30ifeq ($(PROFILE),WNDR4500REV) 31BOARDID_FILE=compatible_WNDR4500rev.txt 32FW_NAME=WNDR4500REV 33endif 34ifeq ($(PROFILE),WNDR4500v2) 35BOARDID_FILE=compatible_WNDR4500v2.txt 36FW_NAME=WNDR4500v2 37endif 38 39 40# 41# Paths 42# 43 44 45CPU ?= 46LINUX_VERSION = 2_6 47MAKE_ARGS ?= 48ARCH = mips 49PLT ?= mipsel 50 51# Get ARCH from PLT argument 52ifneq ($(findstring arm,$(PLT)),) 53ARCH := arm 54endif 55 56# uClibc wrapper 57ifeq ($(CONFIG_UCLIBC),y) 58PLATFORM := $(PLT)-uclibc 59else ifeq ($(CONFIG_GLIBC),y) 60PLATFORM := $(PLT)-glibc 61else 62PLATFORM := $(PLT) 63endif 64 65# Source bases 66export PLATFORM LIBDIR USRLIBDIR LINUX_VERSION 67 68export BCM_KVERSIONSTRING := $(subst _,.,$(LINUX_VERSION)) 69 70WLAN_ComponentsInUse := bcmwifi clm ppr olpc 71include ../makefiles/WLAN_Common.mk 72export SRCBASE := $(WLAN_SrcBaseA) 73export BASEDIR := $(WLAN_TreeBaseA) 74export TOP = $(CURDIR) 75 76ifeq (2_6_36,$(LINUX_VERSION)) 77export LINUXDIR := $(BASEDIR)/components/opensource/linux/linux-2.6.36 78export KBUILD_VERBOSE := 1 79export BUILD_MFG := 0 80# for now, only suitable for 2.6.36 router platform 81SUBMAKE_SETTINGS = SRCBASE=$(SRCBASE) BASEDIR=$(BASEDIR) 82else ifeq (2_6,$(LINUX_VERSION)) 83export LINUXDIR := $(SRCBASE)/linux/linux-2.6 84export KBUILD_VERBOSE := 1 85export BUILD_MFG := 0 86else 87export LINUXDIR := $(SRCBASE)/linux/linux 88endif 89 90 91# 92# Cross-compile environment variables 93# 94 95# Build platform 96export BUILD := i386-pc-linux-gnu 97export HOSTCC := gcc 98 99ifeq ($(PLATFORM),mipsel) 100export CROSS_COMPILE := mipsel-linux- 101export CONFIGURE := ./configure mipsel-linux --build=$(BUILD) 102export TOOLCHAIN := $(shell cd $(dir $(shell which $(CROSS_COMPILE)gcc))/../mipsel-linux && pwd -P) 103endif 104 105ifeq ($(PLATFORM),mipsel-uclibc) 106ifeq (2_6_36,$(LINUX_VERSION)) 107export CROSS_COMPILE := mipsel-uclibc-linux-2.6.36- 108CFLAGS += -D__EXPORTED_HEADERS__ -fPIC 109else ifeq (2_6,$(LINUX_VERSION)) 110export CROSS_COMPILE := mipsel-uclibc-linux26- 111else 112export CROSS_COMPILE := mipsel-uclibc- 113endif 114export CONFIGURE := ./configure mipsel-linux --build=$(BUILD) 115export TOOLCHAIN := $(shell cd $(dir $(shell which $(CROSS_COMPILE)gcc))/.. && pwd -P) 116endif 117 118ifeq ($(PLATFORM),mipsel-glibc) 119ifeq (2_6_36,$(LINUX_VERSION)) 120export CROSS_COMPILE := mipsel-glibc-linux-2.6.36- 121export TOOLCHAIN := $(shell cd $(dir $(shell which $(CROSS_COMPILE)gcc))/.. && pwd -P) 122CFLAGS += -D__EXPORTED_HEADERS__ -fPIC 123else ifeq (2_6,$(LINUX_VERSION)) 124export CROSS_COMPILE := mipsel-linux-linux26- 125else 126export CROSS_COMPILE := mipsel-linux- 127export CONFIGURE := ./configure mipsel-linux --build=$(BUILD) 128export TOOLCHAIN := $(shell cd $(dir $(shell which $(CROSS_COMPILE)gcc))/../mipsel-linux && pwd -P) 129endif 130endif 131 132ifeq ($(PLATFORM),arm-uclibc) 133export CROSS_COMPILE := arm-brcm-linux-uclibcgnueabi- 134export CONFIGURE := ./configure arm-linux --build=$(BUILD) 135export TOOLCHAIN := $(shell cd $(dir $(shell which $(CROSS_COMPILE)gcc))/.. && pwd -P) 136export CFLAGS += -fno-strict-aliasing 137SUBMAKE_SETTINGS += ARCH=$(ARCH) 138EXTRA_LDFLAGS := -lgcc_s 139endif 140 141 142ifeq ($(CONFIG_RTR_OPTIMIZE_SIZE),y) 143export CFLAGS += -Os 144export OPTCFLAGS = -Os 145else 146export CFLAGS += -O2 147export OPTCFLAGS = -O2 148endif 149 150#look at driver configuration 151WLCFGDIR=$(SRCBASE)/wl/config 152 153ifeq ($(CONFIG_NVRAM),y) 154export CFLAGS += -DBCMNVRAM 155endif 156 157ifeq ($(CONFIG_BCMWPA2),y) 158export CFLAGS += -DBCMWPA2 159endif 160export CFLAGS += -DRESTART_ALL_PROCESSES 161#export CFLAGS += -DRESTART_ALL_PROCESSES_DEBUG 162 163ifeq ("$(CONFIG_USBAP)","y") 164export CFLAGS += -D__CONFIG_USBAP__ 165endif 166 167ifeq ($(CONFIG_BCMQOS),y) 168export CFLAGS += -DBCMQOS 169endif 170ifeq ($(CONFIG_WPS),y) 171export CFLAGS += -D__CONFIG_WPS__ 172# WFA WPS 2.0 Testbed extra caps 173#export CFLAGS += -DWFA_WPS_20_TESTBED 174endif 175 176ifeq ($(CONFIG_EMF),y) 177export CFLAGS += -D__CONFIG_EMF__ 178endif 179 180ifeq ($(CONFIG_IGMP_PROXY),y) 181export CFLAGS += -D__CONFIG_IGMP_PROXY__ 182endif 183 184#ifdef __CONFIG_NORTON__ 185ifeq ($(CONFIG_NORTON),y) 186export CFLAGS += -D__CONFIG_NORTON__ 187endif 188#endif /* __CONFIG_NORTON__ */ 189 190ifeq ($(CONFIG_TRAFFIC_MGMT_RSSI_POLICY),y) 191export CFLAGS += -DTRAFFIC_MGMT_RSSI_POLICY 192endif 193 194obj-$(CONFIG_UTELNETD) += utelnetd 195 196MNL_CFLAGS:="-I$(LIBMNL_DIR)/install/include" 197MNL_LIBS:="-L$(LIBMNL_DIR)/install/lib -lmnl" 198 199NFNETLINK_CFLAGS:="-I$(LIBNFNETLINK_DIR)/install/include" 200NFNETLINK_LIBS:="-L$(LIBNFNETLINK_DIR)/install/lib -lnfnetlink" 201 202NETFILTER_CONNTRACK_CFLAGS:="-I$(LIBNETFILTER_CONNTRACK_DIR)/install/include" 203NETFILTER_CONNTRACK_LIBS:="-L$(LIBNETFILTER_CONNTRACK_DIR)/install/lib -lnetfilter_conntrack" 204 205NETFILTER_QUEUE_CFLAGS:="-I$(LIBNETFILTER_QUEUE_DIR)/install/include" 206NETFILTER_QUEUE_LIBS:="-L$(LIBNETFILTER_QUEUE_DIR)/install/lib -lnetfilter_queue" 207 208# add probsup for NTGR SmartMesh 209#ifdef WLPROBSUP 210export CFLAGS += -DWLPROBSUP 211#endif 212 213ifeq ($(CONFIG_SOUND),y) 214export CFLAGS += -D__CONFIG_SOUND__ 215endif 216 217ifeq ($(CONFIG_VOIP),y) 218export CFLAGS += -DBCMVOIP 219endif 220 221ifeq ($(CONFIG_SQUASHFS), y) 222ROOT_IMG :=target.squashfs 223else 224ROOT_IMG := target.cramfs 225endif 226 227ifeq ($(CONFIG_WAPI),y) 228export CFLAGS += -DBCMWAPI_WAI -DBCMWAPI_WPI 229endif 230 231ifeq ($(CONFIG_PHYMON_UTILITY),y) 232export CFLAGS += -DPHYMON 233endif 234 235ifeq ($(CONFIG_OPENSSL),y) 236export CFLAGS += -DSUPPORT_REMOTE_HTTPS 237endif 238 239 240ifeq ($(CONFIG_NETFLIX_QOS_RULE),y) 241export CFLAGS += -DNETFLIX_QOS_RULE 242endif 243 244 245 246ifeq ($(CONFIG_QOS_AUTO_CHECK_BW),y) 247export CFLAGS += -DQOS_AUTO_CHECK_BANDWIDTH 248endif 249 250ifeq ($(CONFIG_WPS_V20),y) 251export CFLAGS += -DINCLUDE_WPS_V20 252endif 253 254ifeq ($(CONFIG_5G_AUTO_CHANNEL),y) 255export CFLAGS += -DINCLUDE_5G_AUTO_CHANNEL 256endif 257 258ifneq (2_4,$(LINUX_VERSION)) 259CRAMFSDIR := cramfs 260else 261CRAMFSDIR := $(LINUXDIR)/scripts/cramfs 262endif 263 264ifeq ($(CONFIG_OPENDNS),y) 265export CFLAGS += -DOPENDNS_PARENTAL_CONTROL 266endif 267 268 269ifeq ($(CONFIG_ACCESSCONTROL),y) 270export CFLAGS += -DINCLUDE_ACCESSCONTROL 271endif 272 273 274ifeq ($(PROFILE),WNDR4500REV) 275export CFLAGS += -DU12H189 -DWNDR4500REV 276export CFLAGS += -DMULTIPLE_SSID 277export CFLAGS += -DENABLE_ML 278#export CFLAGS += -DWIFI_DISABLE 279export CFLAGS += -DBCM53125 280export CFLAGS += -DCONFIG_RUSSIA_IPTV 281 282 283export CFLAGS += -DINCLUDE_UCP 284 285ifeq ($(CONFIG_DLNA),y) 286export CFLAGS += -DDLNA 287#export CFLAGS += -DDLNA_DEBUG 288endif 289export CFLAGS += -DHTTP_ACCESS_USB 290#export CFLAGS += -DMAX_USB_ACCESS 291export CFLAGS += -DSAMBA_ENABLE 292export CFLAGS += -DUSB_NEW_SPEC 293export CFLAGS += -DINCLUDE_WIFI_BUTTON 294export CONFIG_LIBNSL=y 295export CFLAGS += -DINCLUDE_USB_LED 296export CFLAGS += -DINCLUDE_DUAL_BAND 297export CFLAGS += -DSINGLE_FIRMWARE 298export CFLAGS += -DINCLUDE_GET_ST_CHKSUM 299export CFLAGS += -DUNIFIED_STR_TBL 300export CFLAGS += -DFIRST_MTD_ROTATION 301export CFLAGS += -DWIFI_ON_OFF_SCHE 302export CFLAGS += -DAUTO_CONN_24HR 303export CFLAGS += -DIGMP_PROXY 304export CFLAGS += -DAP_MODE 305export CFLAGS += -D__CONFIG_IGMP_SNOOPING__ 306ifeq ($(LINUXDIR), $(SRCBASE)/linux/linux-2.6) 307export CFLAGS += -DLINUX26 308export CFLAGS += -DINCLUDE_IPV6 309endif 310export CFLAGS += -DPRESET_WL_SECURITY 311export CFLAGS += -DNEW_BCM_WPS_IPC 312endif 313 314ifeq ($(PROFILE),WNDR4500v2) 315export CFLAGS += -DU12H189 -DWNDR4500REV -DWNDR4500v2 316export CFLAGS += -DMULTIPLE_SSID 317export CFLAGS += -DENABLE_ML 318#export CFLAGS += -DWIFI_DISABLE #Foxconn, [DEBUG][MJ] disable wifi. 319export CFLAGS += -DBCM53125 320export CFLAGS += -DCONFIG_RUSSIA_IPTV 321#added by dennis ,01/02/2013, for ap mode detection 322#export CFLAGS += -DINCLUDE_DETECT_AP_MODE 323 324export CFLAGS += -DINCLUDE_UCP 325ifeq ($(CONFIG_DLNA),y) 326export CFLAGS += -DDLNA 327#export CFLAGS += -DDLNA_DEBUG 328endif 329export CFLAGS += -DHTTP_ACCESS_USB 330#export CFLAGS += -DMAX_USB_ACCESS 331export CFLAGS += -DSAMBA_ENABLE 332export CFLAGS += -DUSB_NEW_SPEC 333export CFLAGS += -DINCLUDE_WIFI_BUTTON 334export CONFIG_LIBNSL=y 335 336export CFLAGS += -DINCLUDE_USB_LED 337export CFLAGS += -DINCLUDE_DUAL_BAND 338export CFLAGS += -DSINGLE_FIRMWARE 339export CFLAGS += -DINCLUDE_GET_ST_CHKSUM 340export CFLAGS += -DUNIFIED_STR_TBL 341export CFLAGS += -DFIRST_MTD_ROTATION 342export CFLAGS += -DWIFI_ON_OFF_SCHE 343export CFLAGS += -DAUTO_CONN_24HR 344export CFLAGS += -DIGMP_PROXY 345export CFLAGS += -DAP_MODE 346export CFLAGS += -D__CONFIG_IGMP_SNOOPING__ 347ifeq ($(LINUXDIR), $(SRCBASE)/linux/linux-2.6) 348export CFLAGS += -DLINUX26 349export CFLAGS += -DINCLUDE_IPV6 350endif 351export CFLAGS += -DPRESET_WL_SECURITY 352export CFLAGS += -DNEW_BCM_WPS_IPC 353export CFLAGS += -DSTA_MODE 354endif 355 356 357ifeq ($(FW_TYPE),NA) 358export CFLAGS += -DFW_VERSION_NA 359endif 360 361ifeq ($(CONFIG_BCMDCS),y) 362export CFLAGS += -DBCM_DCS 363endif 364 365ifeq ($(CONFIG_EXTACS),y) 366export CFLAGS += -DEXT_ACS 367endif 368 369ifeq ($(CONFIG_BCMBSD),y) 370export CFLAGS += -DBCM_BSD 371endif 372 373ifeq ($(CONFIG_MFP),y) 374export CFLAGS += -DMFP 375endif 376 377ifeq ($(CONFIG_HSPOT),y) 378export CFLAGS += -DNAS_GTK_PER_STA 379endif 380 381ifeq ($(CONFIG_MFP_TEST),y) 382export CFLAGS += -DMFP_TEST 383endif 384 385ifeq ($(CONFIG_SIGMA),y) 386export CFLAGS += -D__CONFIG_SIGMA__ 387endif 388 389ifeq ($(CONFIG_MINI_ROUTER), y) 390export CFLAGS += -D__CONFIG_ROUTER_MINI__ 391endif 392 393ifeq ($(CONFIG_WNM), y) 394export CFLAGS += -DWLWNM 395endif 396 397ifeq ($(CONFIG_TIMEMACHINE),y) 398export CFLAGS += -DINCLUDE_AFP 399endif 400 401export CC := $(CROSS_COMPILE)gcc 402export CXX := $(CROSS_COMPILE)g++ 403export AR := $(CROSS_COMPILE)ar 404export AS := $(CROSS_COMPILE)as 405export LD := $(CROSS_COMPILE)ld 406export NM := $(CROSS_COMPILE)nm 407export RANLIB := $(CROSS_COMPILE)ranlib 408export STRIP := $(CROSS_COMPILE)strip 409export SIZE := $(CROSS_COMPILE)size 410export OBJCOPY := $(CROSS_COMPILE)objcopy 411 412ifneq ("$(LINUX_VERSION)","2_4") 413export MKSYM := $(shell which $(TOP)/misc/mksym.pl) 414endif 415 416# 417# Install and target directories 418# 419 420export PLATFORMDIR := $(TOP)/$(PLATFORM) 421export INSTALLDIR := $(PLATFORMDIR)/install 422export TARGETDIR := $(PLATFORMDIR)/target 423 424define STRIP_DEBUG_SYMBOLS 425 @dbgsymf=$(basename $(1))_dbgsym$(suffix $(1)); \ 426 if [ "$(1)" -nt "$${dbgsymf}" ]; then \ 427 echo "#- $0"; \ 428 ls -ln $1 | awk '{printf "Orig size: %10d bytes, %s\n",$$5,$$NF}'; \ 429 cp -p -v $1 $$dbgsymf; $(STRIP) -d $(1); touch $$dbgsymf; \ 430 ls -ln $1 | awk '{printf "Strip size: %10d bytes, %s\n",$$5,$$NF}'; \ 431 fi 432endef 433 434# USB AP support 435# note : the dongle target is only for after pre-build 436obj-$(CONFIG_USBAP) += bmac dongle 437 438# always build libbcmcrypto 439#obj-y += libbcmcrypto 440 441# 442# Configuration 443# 444 445#ifdef BCMSOUND 446obj-$(CONFIG_SIGMA) += sigma 447obj-$(CONFIG_SALSA) += salsa 448obj-$(CONFIG_LIBZ) += libz 449obj-$(CONFIG_LIBID3TAG) += libid3tag 450obj-$(CONFIG_LIBMAD) += libmad 451obj-$(CONFIG_MADPLAY) += madplay 452obj-$(CONFIG_APLAY) += alsa-utils/aplay 453#endif 454obj-$(CONFIG_NVRAM) += nvram 455obj-$(CONFIG_SHARED) += shared 456#obj-$(CONFIG_LIBBCM) += libbcm 457 458obj-$(CONFIG_OPENSSL) += openssl 459 460ifeq ($(CONFIG_ACOS_MODULES),y) 461#obj-y += ../../ap/acos 462obj-y += ../../ap/gpl 463fw_cfg_file := ../../../project/acos/include/ambitCfg.h 464else 465obj-$(CONFIG_HTTPD) += httpd 466obj-$(CONFIG_WWW) += www 467endif 468 469obj-$(CONFIG_RC) += rc 470obj-$(CONFIG_GLIBC) += lib 471obj-$(CONFIG_UCLIBC) += lib 472obj-$(CONFIG_WLCONF) += wlconf 473obj-$(CONFIG_BRIDGE) += bridge 474obj-$(CONFIG_BUSYBOX) += busybox 475obj-$(CONFIG_DNSMASQ) += dnsmasq 476obj-$(CONFIG_IPTABLES) += iptables 477obj-$(CONFIG_LIBIPT) += iptables 478# Build only for kernel >= 2.6.36. 479ifeq ($(call wlan_version_ge,$(BCM_KVERSIONSTRING),2.6.36),TRUE) 480#ifdef __CONFIG_NORTON__ 481obj-$(CONFIG_NORTON) += norton 482#endif /* __CONFIG_NORTON__ */ 483obj-$(CONFIG_LIBSTDCPP) += libstdcpp 484obj-$(CONFIG_LIBFLOW) += libflow 485obj-$(CONFIG_LIBMNL) += libmnl 486obj-$(CONFIG_LIBNFNETLINK) += libnfnetlink 487obj-$(CONFIG_LIBNETFILTER_CONNTRACK) += libnetfilter_conntrack 488obj-$(CONFIG_LIBNETFILTER_QUEUE) += libnetfilter_queue 489endif 490obj-$(CONFIG_HSPOT) += hspot_ap 491obj-$(CONFIG_NAS) += nas 492obj-$(CONFIG_WAPI) += wapi/wapid 493obj-$(CONFIG_WAPI_IAS) += wapi/as 494obj-$(CONFIG_SES) += ses/ses 495obj-$(CONFIG_SES_CL) += ses/ses_cl 496obj-$(CONFIG_EZC) += ezc 497#obj-$(CONFIG_NETCONF) += netconf 498#obj-$(CONFIG_NTP) += ntpclient 499#obj-$(CONFIG_PPP) += ppp 500obj-$(CONFIG_UDHCPD) += udhcpd 501#obj-$(CONFIG_IGD) += igd 502obj-$(CONFIG_LIBUPNP) += libupnp 503obj-$(CONFIG_FFMPEG) += ffmpeg 504obj-$(CONFIG_DLNA_DMR) += dlna/dmr 505obj-$(CONFIG_DLNA_DMS) += dlna/dms 506obj-$(CONFIG_SAMBA) += samba 507obj-$(CONFIG_UTILS) += utils 508obj-$(CONFIG_ETC) += etc 509obj-$(CONFIG_VLAN) += vlan 510obj-$(CONFIG_WPS) += wps 511#obj-$(CONFIG_NFC) += nfc 512obj-$(CONFIG_EMF) += emf 513obj-$(CONFIG_EMF) += igs 514#obj-$(CONFIG_IGMP_PROXY) += igmp 515obj-$(CONFIG_WL_ACI) += aci 516ifeq (2_6,$(LINUX_VERSION)) 517obj-y += udev 518obj-y += hotplug2 519endif 520obj-$(CONFIG_LLD2D) += lltd/wrt54g-linux 521#obj-$(CONFIG_ACL_LOGD) += acl_log 522obj-$(CONFIG_GPIO) += gpio 523obj-$(CONFIG_SWRESETD) += swresetd 524#if defined(PHYMON) 525obj-$(CONFIG_PHYMON_UTILITY) += phymon 526#endif 527#if defined(EXT_ACS) 528obj-$(CONFIG_EXTACS) += acsd 529#endif 530 531obj-$(CONFIG_RADVD) += radvd 532obj-$(CONFIG_IPROUTE2) += iproute2 533obj-$(CONFIG_IPUTILS) += iputils 534obj-$(CONFIG_DHCPV6S) += dhcp6s 535obj-$(CONFIG_DHCPV6C) += dhcp6c 536ifeq ($(LINUX_VERSION)$(PLT),2_6_36arm) 537obj-$(CONFIG_MPSTAT) += mpstat 538obj-$(CONFIG_TASKSET) += taskset 539endif 540 541 542# BUZZZ tools: function call tracing, performance monitoring, event history 543obj-$(CONFIG_BUZZZ) += buzzz 544# Gigle apps 545obj-$(CONFIG_PLC) += plc 546ifeq ($(CONFIG_PLC),y) 547export CFLAGS += -D__CONFIG_PLC__ -D__CONFIG_URE__ 548CFLAGS += -DPLC -DWPS_LONGPUSH_DISABLE 549endif 550 551# always build eap dispatcher 552obj-y += eapd/linux 553 554ifeq ($(CONFIG_VOIP),y) 555obj-y += voipd 556endif 557 558 559obj-clean := $(foreach obj,$(obj-y) $(obj-n),$(obj)-clean) 560obj-install := $(foreach obj,$(obj-y),$(obj)-install) 561 562# separate the libraries which need to be built first 563obj-prelibs =$(filter nvram libbcmcrypto shared netconf libupnp libz libid3tag ffmpeg libbcm, $(obj-y)) 564# remaining libraries that are built next 565obj-postlibs := $(filter-out $(obj-prelibs), $(obj-y)) 566 567ifneq ($(WLTEST),1) 568ifneq ($(shell grep "CONFIG_EMBEDDED_RAMDISK=y" $(LINUXDIR)/.config),) 569export WLTEST := 1 570endif 571endif 572 573ifeq ($(WLTEST),1) 574export CFLAGS += -DWLTEST 575endif 576 577ifneq (2_4,$(LINUX_VERSION)) 578ifneq ($(shell grep "CONFIG_BLK_DEV_INITRD=y" $(LINUXDIR)/.config),) 579ifeq ($(shell grep "CONFIG_BLK_DEV_RAM=y" $(LINUXDIR)/.config),) 580export BUILD_MFG := 1 581endif 582endif 583endif 584 585# 586# Basic rules 587# 588 589 590all: acos_link version $(LINUXDIR)/.config $(obj-y) 591 # Also build kernel 592ifeq ($(LINUXDIR), $(SRCBASE)/linux/linux-2.6) 593 $(MAKE) -C $(LINUXDIR) zImage 594 $(MAKE) CONFIG_SQUASHFS=$(CONFIG_SQUASHFS) -C $(SRCBASE)/router/compressed 595else 596 if ! grep -q "CONFIG_EMBEDDED_RAMDISK=y" $(LINUXDIR)/.config ; then \ 597 $(MAKE) -C $(LINUXDIR) zImage ; \ 598 fi 599endif 600 if grep -q "CONFIG_MODULES=y" $(LINUXDIR)/.config ; then \ 601 $(MAKE) -C $(LINUXDIR) modules ; \ 602 fi 603 # Preserve the debug versions of these and strip for release 604 $(call STRIP_DEBUG_SYMBOLS,$(LINUXDIR)/vmlinux) 605ifneq (2_4,$(LINUX_VERSION)) 606 $(call STRIP_DEBUG_SYMBOLS,$(LINUXDIR)/drivers/net/wl/wl.ko) 607ifeq ("$(CONFIG_USBAP)","y") 608 $(call STRIP_DEBUG_SYMBOLS,$(LINUXDIR)/drivers/net/wl/wl_high/wl_high.ko) 609endif # CONFIG_USBAP 610 $(call STRIP_DEBUG_SYMBOLS,$(LINUXDIR)/drivers/net/et/et.ko) 611 $(call STRIP_DEBUG_SYMBOLS,$(LINUXDIR)/drivers/net/ctf/ctf.ko) 612 $(call STRIP_DEBUG_SYMBOLS,$(LINUXDIR)/drivers/net/bcm57xx/bcm57xx.ko) 613 $(call STRIP_DEBUG_SYMBOLS,$(LINUXDIR)/drivers/net/emf/emf.ko) 614 $(call STRIP_DEBUG_SYMBOLS,$(LINUXDIR)/drivers/net/igs/igs.ko) 615else # LINUXDIR 616 $(call STRIP_DEBUG_SYMBOLS,$(LINUXDIR)/drivers/net/wl/wl.o) 617ifeq ("$(CONFIG_USBAP)","y") 618 $(call STRIP_DEBUG_SYMBOLS,$(LINUXDIR)/drivers/net/wl/wl_high/wl_high.o) 619endif # CONFIG_USBAP 620 $(call STRIP_DEBUG_SYMBOLS,$(LINUXDIR)/drivers/net/et/et.o) 621 $(call STRIP_DEBUG_SYMBOLS,$(LINUXDIR)/drivers/net/ctf/ctf.o) 622 $(call STRIP_DEBUG_SYMBOLS,$(LINUXDIR)/drivers/net/bcm57xx/bcm57xx.o) 623 $(call STRIP_DEBUG_SYMBOLS,$(LINUXDIR)/drivers/net/emf/emf.o) 624 $(call STRIP_DEBUG_SYMBOLS,$(LINUXDIR)/drivers/net/igs/igs.o) 625endif # LINUXDIR 626 627 628# well, we should always be able to use the BOM, but right now, the last build step on 629# the build machine doesn't have it, so we don't rerun this is the file already 630# exists 631 632version: $(SRCBASE)/router/shared/router_version.h 633 634# this could fail if the bom doesn't exist. We don't care as long as there is a valid router_version.h 635# if not, the build will fail anyway. 636$(SRCBASE)/router/shared/router_version.h: $(SRCBASE)/router/shared/version.h.in 637 [ ! -e $(SRCBASE)/tools/release/linux-router-bom.mk ] || make SRCBASE=$(SRCBASE) -f $(SRCBASE)/tools/release/linux-router-bom.mk version 638 639 640 641router-clean: $(obj-clean) config-clean 642 rm -rf $(TARGETDIR) 643 #rm -f $(PLATFORMDIR)/linux.trx $(PLATFORMDIR)/vmlinuz $(PLATFORMDIR)/target.cramfs 644 rm -f $(PLATFORMDIR)/linux.trx $(PLATFORMDIR)/vmlinuz $(PLATFORMDIR)/target.squashfs 645 rm -rf $(INSTALLDIR)/busybox 646 647clean: router-clean 648 @echo cleaning LINUXDIR = $(LINUXDIR) 649ifneq (2_4,$(LINUX_VERSION)) 650 # we need to pass some conf file for cleaning 2.6. The kbuild clean doesn't seem to 651 # to load the .config the way our wl Makefile is expecting. 652 $(MAKE) CONFIG_WL_CONF=wlconfig_lx_router_ap -C $(LINUXDIR) clean 653 $(MAKE) -C $(SRCBASE)/router/compressed clean 654else 655 $(MAKE) -C $(LINUXDIR) clean 656endif 657# $(MAKE) -C $(SRCBASE)/cfe/build/broadcom/bcm947xx clean 658# $(MAKE) -C $(SRCBASE)/tools/misc clean#water, @make clean error, 11/10/2008 659 660distclean mrproper: clean 661 rm -f .config $(LINUXDIR)/.config 662 663install package: $(filter-out lib-install,$(obj-install)) $(LINUXDIR)/.config 664 # Install binaries into target directory 665 install -d $(TARGETDIR) 666 for dir in $(wildcard $(patsubst %,$(INSTALLDIR)/%,$(obj-y))) ; do \ 667 (cd $${dir} && tar cpf - .) | (cd $(TARGETDIR) && tar xpf -) \ 668 done 669 # optimize the crypto library by removing unneeded symbols 670 #[ ! -d libbcmcrypto ] || $(MAKE) -C libbcmcrypto optimize 671ifneq ("$(CONFIG_WAPI)$(CONFIG_WAPI_IAS)","") 672 # optimize the OPENSSL library by removing unneeded symbols 673# [ ! -d wapi/wapid ] || $(MAKE) -C wapi/wapid optimize 674endif 675 # Install (and possibly optimize) C library 676 $(MAKE) lib-install 677 # Install modules into filesystem 678 if grep -q "CONFIG_MODULES=y" $(LINUXDIR)/.config ; then \ 679 $(MAKE) -C $(LINUXDIR) modules_install DEPMOD=/bin/true INSTALL_MOD_PATH=$(TARGETDIR) ; \ 680 fi 681 #$(MAKE) acos-install 682 for dir in $(SRCBASE)/prebuilt/$(FW_TYPE); do \ 683 (cd $${dir} && tar cpf - .) | (cd $(TARGETDIR) && tar xpf -) \ 684 done 685 #water, 08/11/2009 686 rm -rf $(TARGETDIR)/lib/modules/2.6.22/build 687 rm -rf $(TARGETDIR)/lib/modules/2.6.22/source 688 rm -rf $(TARGETDIR)/lib/modules/2.6.22/modules.* 689 rm -rf $(TARGETDIR)/lib/modules/2.6.22/extra 690 find $(TARGETDIR) -name .svn | xargs rm -rf 691 rm -rf $(TARGETDIR)/usr/bin/[ 692 rm -rf $(TARGETDIR)/usr/bin/[[ 693 rm -rf $(TARGETDIR)/usr/bin/test 694 rm -rf $(TARGETDIR)/bin/false 695 rm -rf $(TARGETDIR)/bin/true 696 rm -rf $(TARGETDIR)/usr/sbin/upnpnat 697 rm -rf $(TARGETDIR)/usr/sbin/epi_ttcp 698 $(STRIP) $(TARGETDIR)/bin/eapd 699 install -d $(TARGETDIR)/lib/modules/2.6.22/kernel/drivers/usbprinter 700 install usbprinter/NetUSB.ko $(TARGETDIR)/lib/modules/2.6.22/kernel/drivers/usbprinter 701 install ookla/ookla $(TARGETDIR)/bin 702 install -d $(TARGETDIR)/lib/modules/2.6.22/kernel/drivers/ufsd 703 install ufsd/ufsd.ko $(TARGETDIR)/lib/modules/2.6.22/kernel/drivers/ufsd 704 install ufsd/chkntfs $(TARGETDIR)/bin 705 706ifneq (2_4,$(LINUX_VERSION)) 707ifeq ("$(CONFIG_USBAP)","y") 708 # Don't delete wl_high.ko for USBAP 709 find $(TARGETDIR) -name "wl_*.ko" | sed s/\.\*wl_high\\\.ko//g | xargs rm -rf 710else 711 find $(TARGETDIR) -name "wl_*.ko" | xargs rm -rf 712endif 713else # Linux 2.4 714ifeq ("$(CONFIG_USBAP)","y") 715 # Don't delete wl_high.o for USBAP 716 find $(TARGETDIR) -name "wl_*.o" | sed s/\.\*wl_high\\\.o//g | xargs rm -rf 717else 718 find $(TARGETDIR) -name "wl_*.o" | xargs rm -rf 719endif 720endif 721 # Prepare filesystem 722 cd $(TARGETDIR) && $(TOP)/misc/rootprep.sh 723 724ifeq ($(CONFIG_SQUASHFS), y) 725 ########################################### 726 ### Create Squashfs filesystem ############ 727 rm -f $(PLATFORMDIR)/$(ROOT_IMG) 728 rm -f $(PLATFORMDIR)/$(ROOT_IMG).trim 729 rm -f $(TARGETDIR)/sbin/st* 730 find $(TARGETDIR) -name ".svn" | xargs rm -rf 731 cd $(TARGETDIR)/etc && ln -s /tmp/resolv.conf resolv.conf 732endif 733ifeq ($(CONFIG_SQUASHFS), y) 734 # Make sure mksquashfs 3.0 is used 735 $(MAKE) -C squashfs mksquashfs 736 find $(TARGETDIR) -name ".svn" | xargs rm -rf 737 squashfs/mksquashfs $(TARGETDIR) $(PLATFORMDIR)/$(ROOT_IMG) -noappend -all-root 738 # for i in $(shell ls $(INSTALLDIR)/utils/usr/sbin) ; do \ 739 # rm -f $(TARGETDIR)/usr/sbin/$${i} ; \ 740 # done 741 # squashfs/mksquashfs $(TARGETDIR) $(PLATFORMDIR)/$(ROOT_IMG).trim -noappend -all-root 742else 743 # Make sure mkcramfs-2.0 is used 744 $(MAKE) -C $(CRAMFSDIR) mkcramfs 745 # '-u 0 -g 0' will set the uid and gid of all the files to 0 (root) 746 # These options are currently only available on our version of mkcramfs 747 $(CRAMFSDIR)/mkcramfs -u 0 -g 0 $(TARGETDIR) $(PLATFORMDIR)/$(ROOT_IMG) 748endif 749 750ifeq ($(LINUXDIR), $(SRCBASE)/linux/linux-2.6) 751 # Package kernel and filesystem 752ifeq ($(BUILD_MFG), 1) 753 cd $(TARGETDIR) ; \ 754 find . | cpio -o -H newc | gzip > $(LINUXDIR)/usr/initramfs_data.cpio.gz 755 ls -l $(LINUXDIR)/usr/initramfs_data.cpio.gz 756 $(MAKE) -C $(LINUXDIR) zImage 757 $(MAKE) -C $(SRCBASE)/router/compressed 758else 759 cp $(SRCBASE)/router/compressed/vmlinuz $(PLATFORMDIR)/ 760 trx -o $(PLATFORMDIR)/linux.trx $(PLATFORMDIR)/vmlinuz $(PLATFORMDIR)/$(ROOT_IMG) 761 addpattern -i $(PLATFORMDIR)/linux.trx -o $(PLATFORMDIR)/linux_lsys.bin ; \ 762 if grep -q "CONFIG_SQUASHFS=y" $(LINUXDIR)/.config ; then \ 763 cp $(SRCBASE)/router/compressed/vmlinuz-lzma $(PLATFORMDIR)/ ; \ 764 trx -o $(PLATFORMDIR)/linux-lzma.trx $(PLATFORMDIR)/vmlinuz-lzma $(PLATFORMDIR)/$(ROOT_IMG) ; \ 765 fi 766endif 767 # Pad self-booting Linux to a 64 KB boundary 768 cp $(SRCBASE)/router/compressed/zImage $(PLATFORMDIR)/ 769else 770 # Package kernel and filesystem 771 if grep -q "CONFIG_EMBEDDED_RAMDISK=y" $(LINUXDIR)/.config ; then \ 772 cp $(PLATFORMDIR)/$(ROOT_IMG) $(LINUXDIR)/arch/mips/ramdisk/$${CONFIG_EMBEDDED_RAMDISK_IMAGE} ; \ 773 $(MAKE) -C $(LINUXDIR) zImage ; \ 774 else \ 775 cp $(LINUXDIR)/arch/mips/brcm-boards/bcm947xx/compressed/vmlinuz $(PLATFORMDIR)/ ; \ 776 trx -o $(PLATFORMDIR)/linux.trx $(PLATFORMDIR)/vmlinuz $(PLATFORMDIR)/$(ROOT_IMG) ; \ 777 if grep -q "CONFIG_SQUASHFS=y" $(LINUXDIR)/.config ; then \ 778 cp $(LINUXDIR)/arch/mips/brcm-boards/bcm947xx/compressed/vmlinuz-lzma $(PLATFORMDIR)/ ; \ 779 trx -o $(PLATFORMDIR)/linux-lzma.trx $(PLATFORMDIR)/vmlinuz-lzma $(PLATFORMDIR)/$(ROOT_IMG) ; \ 780 fi \ 781 fi 782 # Pad self-booting Linux to a 64 KB boundary 783 cp $(LINUXDIR)/arch/mips/brcm-boards/bcm947xx/compressed/zImage $(PLATFORMDIR)/ 784endif 785 dd conv=sync bs=64k < $(PLATFORMDIR)/zImage > $(PLATFORMDIR)/linux.bin 786 # Append filesystem to self-booting Linux 787 cat $(PLATFORMDIR)/$(ROOT_IMG) >> $(PLATFORMDIR)/linux.bin 788 789 ########################################### 790 ### Create LZMA kernel #################### 791 $(OBJCOPY) -O binary -g $(LINUXDIR)/vmlinux $(PLATFORMDIR)/vmlinux.bin 792 ../../tools/lzma e $(PLATFORMDIR)/vmlinux.bin $(PLATFORMDIR)/vmlinux.lzma 793 trx -o $(PLATFORMDIR)/linux.trx $(PLATFORMDIR)/vmlinux.lzma $(PLATFORMDIR)/$(ROOT_IMG) 794 rm -f $(PLATFORMDIR)/vmlinux.bin $(PLATFORMDIR)/vmlinux.lzma 795 796 ########################################### 797 ### Create .chk files for Web UI upgrade ## 798 cd $(PLATFORMDIR) && touch rootfs && \ 799 ../../../tools/packet -k linux.trx -f rootfs -b $(BOARDID_FILE) \ 800 -ok kernel_image -oall kernel_rootfs_image -or rootfs_image \ 801 -i $(fw_cfg_file) && \ 802 rm -f rootfs && \ 803 cp kernel_rootfs_image.chk $(FW_NAME)_`date +%m%d%H%M`.chk 804 805#ifeq ($(BOARDID_FILE), compatible_WNR3500v2.txt) 806# cd $(PLATFORMDIR) && touch rootfs && \ 807# ../../../tools/packet -k linux.trx -f rootfs -b compatible_WNR3500v2VCNA.txt \ 808# -ok kernel_image -oall kernel_rootfs_image -or rootfs_image \ 809# -i $(fw_cfg_file) && \ 810# rm -f rootfs && \ 811# cp kernel_rootfs_image.chk WNR3500v2vcna_`date +%m%d%H%M`.chk 812#endif 813 814# 815# Configuration rules 816# 817 818conf mconf: 819 $(MAKE) -C config 820 @./config/$@ ./config/Config 821 # Also configure kernel 822 $(MAKE) k$@ 823 824oldconf: .config 825 $(MAKE) -C config 826 @./config/conf -o ./config/Config 827 # Also configure kernel 828 $(MAKE) k$@ 829 830kconf: 831 $(MAKE) -C $(LINUXDIR) config 832 833kmconf: $(LINUXDIR)/.config 834 $(MAKE) -C $(LINUXDIR) menuconfig 835 836koldconf: $(LINUXDIR)/.config 837 $(MAKE) -C $(LINUXDIR) oldconfig 838 839# Convenience 840config: conf 841 842menuconfig: mconf 843 844oldconfig: oldconf 845 846# Default configurations 847ifneq ("$(LINUX_VERSION)","2_6") 848.config: 849 cp config/defconfig $@ 850 $(MAKE) oldconfig 851else 852.config: 853 cp config/defconfig-2.6 $@ 854 $(MAKE) oldconfig 855endif 856 857ifneq ("$(CONFIG_USBAP)","y") 858ifneq ("$(LINUX_VERSION)","2_6") 859$(LINUXDIR)/.config: 860 cp $(LINUXDIR)/arch/mips/defconfig-bcm947xx $@ 861else 862$(LINUXDIR)/.config: 863 cp $(LINUXDIR)/arch/mips/defconfig-bcm947xx-$(if $(CPU),$(CPU)-,)slimrtr $@ 864endif 865else 866ifneq ("LINUX_VERSION","2_6") 867$(LINUXDIR)/.config: 868 cp $(LINUXDIR)/arch/mips/defconfig-bcm947xx-usbap $@ 869else 870$(LINUXDIR)/.config: 871 cp $(LINUXDIR)/arch/mips/defconfig-bcm947xx-slimrtr-usbap $@ 872endif 873endif 874 875# Overwrite Kernel .config 876check_kernel_config: $(LINUXDIR)/.config 877 cp $(LINUXDIR)/.config $(LINUXDIR)/.config.tmp 878ifeq ($(CONFIG_SQUASHFS), y) 879 if ! grep -q "CONFIG_SQUASHFS=y" $(LINUXDIR)/.config ; then \ 880 cp $(LINUXDIR)/.config $(LINUXDIR)/.config.chk ; \ 881 sed -e "s/CONFIG_CRAMFS=y/# CONFIG_CRAMFS is not set/g" $(LINUXDIR)/.config.chk | \ 882 sed -e "s/# CONFIG_SQUASHFS is not set/CONFIG_SQUASHFS=y/g" > \ 883 $(LINUXDIR)/.config ; \ 884 rm -f $(LINUXDIR)/.config.chk ; \ 885 fi 886endif 887ifeq ($(CONFIG_CRAMFS), y) 888 if ! grep -q "CONFIG_CRAMFS=y" $(LINUXDIR)/.config ; then \ 889 cp $(LINUXDIR)/.config $(LINUXDIR)/.config.chk ; \ 890 sed -e "s/CONFIG_SQUASHFS=y/# CONFIG_SQUASHFS is not set/g" $(LINUXDIR)/.config.chk | \ 891 sed -e "s/# CONFIG_CRAMFS is not set/CONFIG_CRAMFS=y/g" > \ 892 $(LINUXDIR)/.config ; \ 893 rm -f $(LINUXDIR)/.config.chk ; \ 894 fi 895endif 896ifeq ($(CONFIG_SHRINK_MEMORY), y) 897 if ! grep -q "CONFIG_SHRINKMEM=y" $(LINUXDIR)/.config ; then \ 898 cp $(LINUXDIR)/.config $(LINUXDIR)/.config.chk ; \ 899 sed -e "s/# CONFIG_SHRINKMEM is not set/CONFIG_SHRINKMEM=y/g" $(LINUXDIR)/.config.chk > \ 900 $(LINUXDIR)/.config ; \ 901 rm -f $(LINUXDIR)/.config.chk ; \ 902 fi 903else 904 if grep -q "CONFIG_SHRINKMEM=y" $(LINUXDIR)/.config ; then \ 905 cp $(LINUXDIR)/.config $(LINUXDIR)/.config.chk ; \ 906 sed -e "s/CONFIG_SHRINKMEM=y/# CONFIG_SHRINKMEM is not set/g" $(LINUXDIR)/.config.chk > \ 907 $(LINUXDIR)/.config ; \ 908 rm -f $(LINUXDIR)/.config.chk ; \ 909 fi 910endif 911 # Make kernel config again if changed 912 if ! cmp $(LINUXDIR)/.config $(LINUXDIR)/.config.tmp ; then \ 913 $(MAKE) -C $(LINUXDIR) oldconfig ; \ 914 fi 915 916# 917# Overrides 918# 919 920ifeq ($(LINUXDIR), $(SRCBASE)/linux/linux-2.6) 921busybox-1.x/Config.h: dummy 922 cd busybox-1.x && rm -f Config.h && ln -sf include/autoconf.h Config.h && touch Config.h 923ifeq ($(PROFILE),WNDR4500REV) 924 cd busybox-1.x && cp configs/bbconfig-$(CONFIG_BUSYBOX_CONFIG)_$(PROFILE) .config && make clean 925else 926ifeq ($(PROFILE),WNDR4500v2) 927 cd busybox-1.x && cp configs/bbconfig-$(CONFIG_BUSYBOX_CONFIG)_$(PROFILE) .config && make clean 928else 929 cd busybox-1.x && cp configs/bbconfig-$(CONFIG_BUSYBOX_CONFIG) .config && make clean 930endif 931endif 932 933busybox: busybox-1.x/Config.h 934 $(MAKE) -C busybox-1.x ARCH=mips INSTALL 935 936busybox-install: 937 $(MAKE) -C busybox-1.x ARCH=mips CONFIG_PREFIX=$(INSTALLDIR)/busybox install 938 939 940rc: netconf nvram shared 941 make LINUXDIR=$(LINUXDIR) -C rc 942ifneq ($(CONFIG_BUSYBOX),) 943rc: busybox-1.x/Config.h 944endif 945else #linux-2.6 946CURBBCFG=$(CONFIG_BUSYBOX_CONFIG).h 947OLDBBCFG=$(shell basename $$(readlink busybox/Config.h) 2> /dev/null) 948busybox/Config.h: dummy 949ifneq ($(OLDBBCFG),$(CURBBCFG)) 950 cd busybox && rm -f Config.h && ln -sf configs/$(CURBBCFG) Config.h && touch Config.h 951endif 952 953busybox: busybox/Config.h 954 $(MAKE) -C busybox STRIPTOOL=$(STRIP) 955 956busybox-install: 957 $(MAKE) -C busybox STRIPTOOL=$(STRIP) PREFIX=$(INSTALLDIR)/busybox install 958 959# rc: netconf nvram shared 960rc: nvram shared 961ifneq ($(CONFIG_BUSYBOX),) 962rc: busybox/Config.h 963endif 964endif #linux-2.6 965 966rc-install: 967 make LINUXDIR=$(LINUXDIR) INSTALLDIR=$(INSTALLDIR)/rc -C rc install 968 969lib-install: 970 make LX_VERS=$(LINUX_VERSION) INSTALLDIR=$(INSTALLDIR)/lib -C lib install 971 972www www-%: 973 $(MAKE) -C www/$(CONFIG_VENDOR) $* INSTALLDIR=$(INSTALLDIR)/www 974 975 976 977 978 979# To re-build bcmdl target, uncomment and exchange libusb and bcmdl targets 980# libusb : 981# cd $(SRCBASE)/usbdev/libusb; ./configure --host=mipsel-linux CC=mipsel-uclibc-gcc; make 982 983 984# bcmdl : 985# make TARGETENV=linuxmips -C $(SRCBASE)/usbdev/usbdl 986 987# bcmdl-install : 988# install -d $(TARGETDIR)/bin 989# install -D $(SRCBASE)/usbdev/usbdl/bcmdl $(TARGETDIR)/bin/bcmdl 990 991libusb : 992 993bcmdl : 994 995bcmdl-install : 996 install -d $(INSTALLDIR)/dongle/sbin 997 install -D $(SRCBASE)/usbdev/usbdl/mips_$(LINUX_VERSION)/bcmdl $(INSTALLDIR)/dongle/sbin/bcmdl 998 999bridge: 1000ifeq ($(LINUXDIR), $(SRCBASE)/linux/linux-2.6) 1001 $(MAKE) -C bridge-1.x 1002else 1003 $(MAKE) -C bridge brctl/brctl 1004endif 1005 1006dongle : 1007 1008bridge-install: 1009ifeq ($(LINUXDIR), $(SRCBASE)/linux/linux-2.6) 1010 install -D bridge-1.x/brctl/brctl $(INSTALLDIR)/bridge/usr/sbin/brctl 1011else 1012 install -D bridge/brctl/brctl $(INSTALLDIR)/bridge/usr/sbin/brctl 1013endif 1014 $(STRIP) $(INSTALLDIR)/bridge/usr/sbin/brctl 1015 1016dnsmasq-install: 1017 install -D dnsmasq/dnsmasq $(INSTALLDIR)/dnsmasq/usr/sbin/dnsmasq 1018 $(STRIP) $(INSTALLDIR)/dnsmasq/usr/sbin/dnsmasq 1019 1020ifeq ($(LINUXDIR), $(SRCBASE)/linux/linux-2.6) 1021iptables: 1022 $(MAKE) -C iptables-1.x BINDIR=/usr/sbin LIBDIR=/usr/lib KERNEL_DIR=$(LINUXDIR) 1023 1024iptables-install: 1025ifeq ($(CONFIG_IPTABLES),y) 1026 install -d $(INSTALLDIR)/iptables/usr/lib/iptables 1027 install iptables-1.x/extensions/*.so $(INSTALLDIR)/iptables/usr/lib/iptables 1028 $(STRIP) $(INSTALLDIR)/iptables/usr/lib/iptables/*.so 1029 install -D iptables-1.x/iptables $(INSTALLDIR)/iptables/usr/sbin/iptables 1030 $(STRIP) $(INSTALLDIR)/iptables/usr/sbin/iptables 1031else 1032 # So that generic rule does not take precedence 1033 @true 1034endif 1035iptables-clean: 1036 -$(MAKE) -C iptables-1.x KERNEL_DIR=$(LINUXDIR) clean 1037else # linux-2.6 1038iptables: 1039 $(MAKE) -C iptables BINDIR=/usr/sbin LIBDIR=/usr/lib KERNEL_DIR=$(LINUXDIR) 1040 1041iptables-install: 1042ifeq ($(CONFIG_IPTABLES),y) 1043 install -d $(INSTALLDIR)/iptables/usr/lib/iptables 1044 install iptables/extensions/*.so $(INSTALLDIR)/iptables/usr/lib/iptables 1045 $(STRIP) $(INSTALLDIR)/iptables/usr/lib/iptables/*.so 1046 install -D iptables/iptables $(INSTALLDIR)/iptables/usr/sbin/iptables 1047 $(STRIP) $(INSTALLDIR)/iptables/usr/sbin/iptables 1048else 1049 # So that generic rule does not take precedence 1050 @true 1051endif 1052iptables-clean: 1053 -$(MAKE) -C iptables KERNEL_DIR=$(LINUXDIR) clean 1054endif # linux-2.6 1055 1056 1057netconf: iptables 1058ifeq ($(CONFIG_NETCONF),y) 1059 make LINUXDIR=$(LINUXDIR) -C netconf 1060else 1061 # In case of "Prerequisite 'iptables' is newer than target 'netconf'" 1062 @true 1063endif 1064 1065ntpclient-install: 1066 install -D ntpclient/ntpclient $(INSTALLDIR)/ntpclient/usr/sbin/ntpclient 1067 $(STRIP) $(INSTALLDIR)/ntpclient/usr/sbin/ntpclient 1068 1069ppp ppp-%: 1070 $(MAKE) -C ppp/pppoecd $* INSTALLDIR=$(INSTALLDIR)/ppp 1071 1072udhcpd-install: 1073 install -D udhcpd/udhcpd $(INSTALLDIR)/udhcpd/usr/sbin/udhcpd 1074 $(STRIP) $(INSTALLDIR)/udhcpd/usr/sbin/udhcpd 1075 cd $(INSTALLDIR)/udhcpd/usr/sbin && ln -sf udhcpd udhcpc 1076 1077upnp: netconf nvram shared 1078 1079bcmupnp: netconf nvram shared 1080 [ ! -f bcmupnp/Makefile ] || $(MAKE) -C bcmupnp 1081 1082bcmupnp-install: 1083 [ ! -f bcmupnp/Makefile ] || $(MAKE) -C bcmupnp install INSTALLDIR=$(INSTALLDIR)/bcmupnp 1084 1085bcmupnp-clean: 1086 [ ! -f bcmupnp/Makefile ] || $(MAKE) -C bcmupnp clean 1087 1088wlconf: nvram shared 1089 1090vlan: 1091 $(MAKE) -C vlan CROSS=$(CROSS_COMPILE) STRIPTOOL=$(STRIP) 1092 1093vlan-install: 1094 $(MAKE) -C vlan CROSS=$(CROSS_COMPILE) STRIPTOOL=$(STRIP) INSTALLDIR=$(INSTALLDIR) install 1095 1096vlan-clean: 1097 $(MAKE) -C vlan clean 1098 1099 1100 1101 1102emf: 1103 +$(MAKE) -C emf/emfconf CROSS=$(CROSS_COMPILE) 1104 1105emf-install: 1106ifeq ($(CONFIG_EMF),y) 1107 install -d $(TARGETDIR) 1108 +$(MAKE) install -C emf/emfconf \ 1109 CROSS=$(CROSS_COMPILE) INSTALLDIR=$(INSTALLDIR) 1110 1111endif 1112 1113emf-clean: 1114 #$(MAKE) -C emf/emfconf clean 1115 1116igs: 1117 +$(MAKE) -C emf/igsconf CROSS=$(CROSS_COMPILE) 1118 1119igs-install: 1120ifeq ($(CONFIG_EMF),y) 1121 install -d $(TARGETDIR) 1122 +$(MAKE) -C emf/igsconf CROSS=$(CROSS_COMPILE) INSTALLDIR=$(INSTALLDIR) install 1123 1124endif 1125 1126igs-clean: 1127 #$(MAKE) -C emf/igsconf clean 1128 1129igmp: 1130 $(MAKE) -C igmp CROSS=$(CROSS_COMPILE) 1131 1132igmp-install: 1133ifeq ($(CONFIG_IGMP_PROXY),y) 1134# install -d $(TARGETDIR) 1135 +$(MAKE) -C igmp CROSS=$(CROSS_COMPILE) INSTALLDIR=$(INSTALLDIR) install 1136endif 1137 1138igmp-clean: 1139 $(MAKE) -C igmp clean 1140 1141wps: nvram shared 1142ifeq ($(PROFILE),WNDR4500REV) 1143 [ ! -f wps/Makefile ] || $(MAKE) -C wps 1144else 1145ifeq ($(PROFILE),WNDR4500v2) 1146 [ ! -f wps/Makefile ] || $(MAKE) -C wps 1147else 1148 # Prevent to use generic rules" 1149 @true 1150endif 1151endif 1152 1153wps-install: 1154ifeq ($(PROFILE),WNDR4500REV) 1155 [ ! -f wps/Makefile ] || $(MAKE) -C wps install INSTALLDIR=$(INSTALLDIR)/wps 1156else 1157ifeq ($(PROFILE),WNDR4500v2) 1158 [ ! -f wps/Makefile ] || $(MAKE) -C wps install INSTALLDIR=$(INSTALLDIR)/wps 1159else 1160 # Prevent to use generic rules" 1161 @true 1162endif 1163endif 1164wps-clean: 1165ifeq ($(PROFILE),WNDR4500REV) 1166 [ ! -f wps/Makefile ] || $(MAKE) -C wps clean 1167else 1168ifeq ($(PROFILE),WNDR4500v2) 1169 [ ! -f wps/Makefile ] || $(MAKE) -C wps clean 1170else 1171 # Prevent to use generic rules" 1172 @true 1173endif 1174endif 1175# Foxconn Add, Jasmine Yang, 03/23/2006 1176acos_link: 1177ifneq ($(PROFILE),) 1178 cp ../../ap/gpl/minidlna/minidlna.07.26/config_$(PROFILE).h ../../ap/gpl/minidlna/minidlna.07.26/config.h 1179 cd ../../project/acos/include; rm -f ambitCfg.h; ln -s ambitCfg_$(FW_TYPE)_$(PROFILE).h ambitCfg.h 1180else 1181 cd ../../project/acos/include; rm -f ambitCfg.h; ln -s ambitCfg_$(FW_TYPE).h ambitCfg.h 1182endif 1183 1184ifneq ($(PROFILE),) 1185ifneq ($(PROFILE), WNR3500v2VCNA) 1186# cp ../../project/acos/config_$(PROFILE).in ../../project/acos/config.in 1187# cp ../../project/acos/config_$(PROFILE).mk ../../project/acos/config.mk 1188# cp ../../project/acos/Makefile_$(PROFILE) ../../project/acos/Makefile 1189 cp $(LINUXDIR)/.config_$(PROFILE) $(LINUXDIR)/.config 1190# cp $(LINUXDIR)/autoconf.h_$(PROFILE) $(LINUXDIR)/include/linux/autoconf.h 1191endif 1192else 1193# cp ../../project/acos/config_WNR3500v2.in ../../project/acos/config.in 1194# cp ../../project/acos/config_WNR3500v2.mk ../../project/acos/config.mk 1195# cp ../../project/acos/Makefile_WNR3500v2 ../../project/acos/Makefile 1196# cp $(LINUXDIR)/.config_WNR3500v2 $(LINUXDIR)/.config 1197# cp $(LINUXDIR)/autoconf.h_WNR3500v2 $(LINUXDIR)/include/linux/autoconf.h 1198endif 1199 1200 1201acos: 1202 1203acos-install: 1204 1205acos-clean: 1206 1207gpl: 1208 $(MAKE) -C ../../ap/gpl CROSS=$(CROSS_COMPILE) STRIPTOOL=$(STRIP) 1209 1210gpl-install: 1211 $(MAKE) -C ../../ap/gpl CROSS=$(CROSS_COMPILE) STRIPTOOL=$(STRIP) INSTALLDIR=$(INSTALLDIR) install 1212 1213gpl-clean: 1214 $(MAKE) -C ../../ap/gpl clean 1215 1216#Leon Lv Add below for UBD,Apr 15,2008 1217.PHONY:ubd opendns 1218ubd: 1219 $(MAKE) -C ubd CROSS=$(CROSS_COMPILE) 1220 1221ubd-install: 1222ifeq ($(CONFIG_UBD),y) 1223 install -d $(TARGETDIR) 1224# $(MAKE) -C ubd CROSS=$(CROSS_COMPILE) INSTALLDIR=$(INSTALLDIR) install 1225 install -D ubd/ubd $(INSTALLDIR)/ubdu/usr/sbin/ubd 1226 $(STRIP) $(INSTALLDIR)/ubdu/usr/sbin/ubd 1227endif 1228 1229ubd-clean: 1230 $(MAKE) -C ubd clean 1231 1232opendns: 1233 $(MAKE) -C ../../ap/acos/opendns 1234 1235opendns-install: 1236 $(MAKE) -C ../../ap/acos/opendns install 1237 1238opendns-clean: 1239 $(MAKE) -C ../../ap/acos/opendns clean 1240 1241 1242netflix_tc: 1243 1244 1245acos_nat: 1246 1247acos_nat-install: 1248 1249acos_nat-clean: 1250 1251ifeq ($(LINUXDIR), $(SRCBASE)/linux/linux-2.6) 1252udev: 1253 $(MAKE) -C udev CROSS_COMPILE=$(CROSS_COMPILE) 1254 1255udev-install: 1256 install -d $(TARGETDIR) 1257 $(MAKE) -C udev CROSS_COMPILE=$(CROSS_COMPILE) DESTDIR=$(INSTALLDIR) prefix=/udev install-udevtrigger 1258 1259udev-clean: 1260 $(MAKE) -C udev clean 1261 1262hotplug2: 1263 $(MAKE) -C hotplug2 CROSS_COMPILE=$(CROSS_COMPILE) 1264 1265hotplug2-install: 1266 install -d $(TARGETDIR) 1267 install -d $(INSTALLDIR)/hotplug2 1268 $(MAKE) -C hotplug2 CROSS_COMPILE=$(CROSS_COMPILE) PREFIX=$(INSTALLDIR) install 1269 1270hotplug2-clean: 1271 $(MAKE) -C hotplug2 clean 1272endif 1273 1274openssl: 1275 $(MAKE) -C ../../ap/gpl/openssl CROSS=$(CROSS_COMPILE) STRIPTOOL=$(STRIP) 1276 1277openssl-install: 1278 $(MAKE) -C ../../ap/gpl/openssl CROSS=$(CROSS_COMPILE) STRIPTOOL=$(STRIP) INSTALLDIR=$(INSTALLDIR) install 1279 1280openssl-clean: 1281 $(MAKE) -C ../../ap/gpl/openssl clean 1282 1283 1284 1285ifeq ($(LINUX_VERSION),2_4) 1286UCLIBC_IPV6=../lib/mipsel-uclibc/libc.so.0 1287endif 1288 1289radvd: flex dummy 1290 [ ! -d $@ ] || [ -f $@/Makefile ] || ( cd $@ && CC=$(CC) ./configure --host=mipsel-linux && cd .. ) 1291 [ ! -d $@ ] || $(MAKE) -C radvd CC=$(CC) radvd_LDADD="-L../flex -lfl" 1292 1293radvd-install: 1294 [ ! -d radvd ] || install -D -m 755 radvd/radvd $(INSTALLDIR)/radvd/usr/sbin/radvd 1295 [ ! -d radvd ] || $(STRIP) $(INSTALLDIR)/radvd/usr/sbin/radvd 1296 1297radvd-clean: 1298 [ ! -f radvd/Makefile ] || $(MAKE) -C radvd distclean 1299 1300flex: dummy 1301 [ ! -d $@ ] || [ -f $@/Makefile ] || ( cd $@ && CC=$(CC) ./configure --host=mipsel-linux && cd .. ) 1302 [ ! -d $@ ] || $(MAKE) -C flex CC=$(CC) RANLIB=$(RANLIB) 1303 1304iproute2: 1305 [ ! -d $@ ] || $(MAKE) -C iproute2 KERNEL_INCLUDE=$(LINUXDIR)/include CC=$(CC) AR=$(AR) LDLIBS= 1306 1307iproute2-install: 1308 [ ! -d iproute2 ] || install -D -m 755 iproute2/ip/ip $(INSTALLDIR)/iproute2/usr/sbin/ip 1309 [ ! -d iproute2 ] || $(STRIP) $(INSTALLDIR)/iproute2/usr/sbin/ip 1310 1311iputils: 1312 [ ! -d $@ ] || [ -f $@/include-glibc/bits/socket.h ] || ( cd $@/include-glibc/bits && ln -s ../socketbits.h socket.h && cd ../../.. ) 1313 [ ! -d $@ ] || $(MAKE) -C iputils KERNEL_INCLUDE=$(LINUXDIR)/include CC=$(CC) LDLIBS= 1314 1315iputils-install: 1316 [ ! -d iputils ] || install -D -m 755 iputils/ping6 $(INSTALLDIR)/iputils/usr/sbin/ping6 1317 [ ! -d iputils ] || $(STRIP) $(INSTALLDIR)/iputils/usr/sbin/ping6 1318 [ ! -d iputils ] || install -D -m 755 iputils/traceroute6 $(INSTALLDIR)/iputils/usr/sbin/traceroute6 1319 [ ! -d iputils ] || $(STRIP) $(INSTALLDIR)/iputils/usr/sbin/traceroute6 1320 [ ! -d iputils ] || install -D -m 755 iputils/tracepath6 $(INSTALLDIR)/iputils/usr/sbin/tracepath6 1321 [ ! -d iputils ] || $(STRIP) $(INSTALLDIR)/iputils/usr/sbin/tracepath6 1322 1323dhcp6s dhcp6c: dummy 1324 [ ! -d dhcp6 ] || [ -f dhcp6/Makefile ] || ( cd dhcp6 && ./configure CC=gcc CFLAGS+="-I../shared" && cd .. ) 1325ifeq ($(CONFIG_UCLIBC),y) 1326# [ ! -d dhcp6 ] || $(MAKE) -C dhcp6 CC=$(CC) LIBS="$(UCLIBC_IPV6)" $@ 1327 [ ! -d dhcp6 ] || $(MAKE) -C dhcp6 CC=$(CC) LIBS="-L lib" $@ 1328else 1329 [ ! -d dhcp6 ] || $(MAKE) -C dhcp6 CC=$(CC) LIBS="-lresolv -L../libbcmcrypto -lbcmcrypto -L$(INSTALLDIR)/libbcmcrypto/usr/lib" $@ 1330endif 1331 1332dhcp6s-install: 1333 [ ! -d dhcp6 ] || install -D -m 755 dhcp6/dhcp6s $(INSTALLDIR)/dhcp6s/usr/sbin/dhcp6s 1334 [ ! -d dhcp6 ] || $(STRIP) $(INSTALLDIR)/dhcp6s/usr/sbin/dhcp6s 1335 1336dhcp6c-install: 1337 [ ! -d dhcp6 ] || install -D -m 755 dhcp6/dhcp6c $(INSTALLDIR)/dhcp6c/usr/sbin/dhcp6c 1338 [ ! -d dhcp6 ] || $(STRIP) $(INSTALLDIR)/dhcp6c/usr/sbin/dhcp6c 1339 1340dhcp6s-clean dhcp6c-clean: 1341 [ ! -f dhcp6/Makefile ] || $(MAKE) -C dhcp6 distclean 1342 1343swresetd-install: 1344swresetd-clean: 1345 1346acl_log-install: 1347acl_log-clean: 1348 1349gpio-install: 1350gpio-clean: 1351# 1352# Generic rules 1353# 1354 1355%: 1356 [ ! -d $* ] || $(MAKE) -C $* 1357 1358%-clean: 1359 [ ! -d $* ] || $(MAKE) -C $* clean 1360 1361%-install: 1362 [ ! -d $* ] || $(MAKE) -C $* install INSTALLDIR=$(INSTALLDIR)/$* 1363 1364$(obj-y) $(obj-n) $(obj-clean) $(obj-install): dummy 1365 1366.PHONY: all clean distclean mrproper install package 1367.PHONY: conf mconf oldconf kconf kmconf config menuconfig oldconfig 1368.PHONY: dummy 1369