include .config
export TARGET := $(FS_PATH)
export KERNEL_DIR := $(KERNEL_PATH)
export TOP := $(APPS_PATH)
export CFLAGS := $(APPS_CFLAG)

export CONFIG_MODEL_NAME := $(CONFIG_MODEL_NAME)
export CONFIG_HTTPD_PURE := $(CONFIG_HTTPD_PURE)
export CONFIG_XML_AGENT := $(CONFIG_XML_AGENT)
export CONFIG_AJAX := $(CONFIG_AJAX)
export IPROUTE2_IP := $(IPROUTE2_IP)
export CONFIG_TC := $(CONFIG_TC)
export CROSS_COMPILE = $(APPS_CROSS)
export CC := $(CROSS_COMPILE)gcc
export CXX := $(CROSS_COMPILE)g++
export AR := $(CROSS_COMPILE)ar
export AS := $(CROSS_COMPILE)as
export LD := $(CROSS_COMPILE)ld
export NM := $(CROSS_COMPILE)nm
export RANLIB := $(CROSS_COMPILE)ranlib
export STRIP := $(CROSS_COMPILE)strip
export SIZE := $(CROSS_COMPILE)size
# Support graphic auth or not
export CONFIG_AUTHGRAPH := $(CONFIG_AUTHGRAPH)
# Support https
export CONFIG_HTTPS := $(CONFIG_HTTPS)
# 	Date: 2009-1-19
# 	Name: Ken_Chiang
# 	Reason: modify for 3g usb client call ppp to used chat.
# 	Notice :	
export CONFIG_PPP_USED_CHAT := $(CONFIG_PPP_USED_CHAT)
# 	Date: 2009-7-14
# 	Name: Ken_Chiang
# 	Reason: modify for support pppoe relay feature.
# 	Notice :
export CONFIG_PPPOE_RELAY := $(CONFIG_PPPOE_RELAY)

ifeq ($(CONFIG_LINUX_NVRAM),y)
	ifeq ($(CONFIG_NVRAM),y)
	$(error nvram and linux_nvram can not coexist)
	else
	export NVRAM_PATH := $(APPS_PATH)/linux_nvram
	endif
else
	ifeq ($(CONFIG_NVRAM),y)
	export NVRAM_PATH := $(APPS_PATH)/nvram
	else
	$(error must select one of linux_nvram or nvram)
	endif
endif

#       Date: 2009-11-13
#       Name: Jery Lin
#       Reason: add for support RDNSS(dlink ipv6 spec v1.06)
#       Notice
ifeq ($(CONFIG_STATELESS_WAN),y) 
    obj-y += ndisc6-0.9.9/rdnssd
endif



#obj-y  += libplatform
obj-$(CONFIG_LIBVERSION) += libplatform

#ifeq ($(CONFIG_GET_SET_ARTBLOCK),y)
#obj-$(CONFIG_GET_SET_ARTBLOCK)	+= artblock
#endif

# support get/set hwversion,lanmac,wanmac for ART mtdblock 
ifeq ($(CONFIG_GET_SET_ARTBLOCK),y)
        obj-$(CONFIG_GET_SET_ARTBLOCK) +=artblock
	CFLAGS +=-DSET_GET_FROM_ARTBLOCK
endif

# 	Date: 2010-02-04
# 	Name: Bing Chou
# 	Reason: for get special default value(ex:lan_device_name = "dlink-xxxxxx		",the "xxxxxx" is the last three Mac address)
#			
ifeq ($(CONFIG_GET_SPECIAL_DEFAULT_VALUE),y)
	CFLAGS += -DCONFIG_GET_SPECIAL_DEFAULT_VALUE
endif


# BASE FEATURE
ifeq ($(PLATFORM), sl3516)
obj-$(CONFIG_LINUX_NVRAM)	+= linux_nvram
else
ifeq ($(PLATFORM), MV88F6281)
CFLAGS += -D$(PLATFORM)
obj-$(CONFIG_LINUX_NVRAM)	+= linux_nvram
CFLAGS += -DLINUX_NVRAM
endif
endif
obj-$(CONFIG_USB_LIB) += libusb
obj-$(CONFIG_NVRAM) += nvram
obj-$(CONFIG_SUTIL) += sutil
obj-$(CONFIG_RC) += rc
obj-$(CONFIG_TIMER) += timer
#obj-$(CONFIG_SYS) += sys

# radvd support
ifeq ($(CONFIG_RADVD),y)
obj-$(CONFIG_RADVD) += flex radvd
endif

#wpa supplicant for Atheros solution
ifeq ($(CONFIG_SUPPLICANT_ATH),y)
obj-$(CONFIG_SUPPLICANT_ATH) += wpa/wpa_supplicant-0.5.5
ifeq ($(CONFIG_SUPPORT_AUTO_IE_AND_CIPHER),y)
	CFLAGS +=-DSUPPORT_AUTO_IE_AND_CIPHER
endif
endif

#wan 8021x support
ifeq ($(CONFIG_WAN_8021X),y)
	CFLAGS += -DCONFIG_WAN_8021X
endif

ifneq ($(PLATFORM),AthSDK_AP61)
obj-$(CONFIG_BUSYBOX) += busybox-1.01
else
obj-$(CONFIG_BUSYBOX) += busybox-1.00-pre10
endif

# Application
obj-$(CONFIG_OPENSSL) += openssl
obj-$(CONFIG_HTTPD) += httpd
obj-$(CONFIG_DNSMASQ) += dnsmasq-2.41
ifeq ($(CONFIG_OPENDNS),y)
CFLAGS += -DOPENDNS
endif

ifeq ($(CONFIG_WEB_404_REDIRECT),y)
CFLAGS += -DCONFIG_WEB_404_REDIRECT
endif

ifeq ($(CONFIG_DLINK_ROUTER_URL),y)
CFLAGS += -DCONFIG_DLINK_ROUTER_URL
endif

ifeq ($(CONFIG_AJAX),y)
ifeq ($(CONFIG_AJAX_NEED_LOGIN),y)
CFLAGS += -DCONFIG_AJAX_NEED_LOGIN
endif
endif

ifeq ($(CONFIG_DDNS_ORAY),y)
	obj-$(CONFIG_DDNS) += oray
	CFLAGS += -DDDNS_ORAY_ENABLE
else
	obj-$(CONFIG_DDNS) += noip2
endif

# 	Date: 2009-4-30 
# 	Name: Ken_Chiang
# 	Reason: modify for support heartbeat feature.
# 	Notice :
ifeq ($(CONFIG_HEARTBEAT),y)
obj-$(CONFIG_HEARTBEAT) += heartbeat
CFLAGS += -DCONFIG_HEARTBEAT
endif

# 	Date: 2009-05-26
# 	Name: Jimmy Huang
# 	Reason: for lcm collecting info used
# 	Notice : CFLAGS is for rc/app.c used
#			package "infod" is within www/model_name/project_apps
ifeq ($(CONFIG_LCM_FEATURE_INFOD),y)
CFLAGS += -DLCM_FEATURE_INFOD
endif


#	Date:	2010-01-11
#	Name:	Jimmy Huang
#	Reason:	Add support for test TEW-673GRU LCM panel
#	Note:	Only
#			1. init httpd
#			2. insmod /lib/modules/2.6.15/io/keypad.ko
#			3. echo "ACT:test" > /dev/lcd_status
# Button Action  --- LCM Screen Color --- Value in wlan.txt
# right                    blue                8
# up                       black               4
# left                     red                 2
# down                     white               0
#
ifeq ($(CONFIG_LCM_FEATURE_TEST),y)
CFLAGS += -DLCM_FEATURE_TEST
endif

ifeq ($(PLATFORM), AthSDK_AP61)
obj-$(CONFIG_IPTABLES) += iptables
else
ifeq ($(PLATFORM), MV88F6281) 
# it is better to use iptabels-1.4.3.2
obj-$(CONFIG_IPTABLES) += iptables-1.3.8
else
obj-$(CONFIG_IPTABLES) += iptables_2_6
endif
endif

ifeq ($(CONFIG_DHCP_RELAY),y)
	obj-$(CONFIG_DHCP_RELAY) += dhcp-forwarder-0.7
	CFLAGS +=-DDHCP_RELAY
endif

ifeq ($(CONFIG_UPNP),y)
obj-$(CONFIG_UPNP_ATH_MINIUPNPD) += upnpd_ath
obj-$(CONFIG_UPNP_ATH_MINIUPNPD_RC) += miniupnpd-1.0-RC7
#	Date:	2009-04-16
#	Name:	jimmy huang
#	Reason:	new package for miniupnpd-1.3
#	Note:	Used for miniupnpd-1.3
obj-$(CONFIG_UPNP_ATH_MINIUPNPD_1_3) += miniupnpd-1.3
obj-$(CONFIG_UPNP_ATH_LIBUPNP) += libupnp-1.6.3
obj-$(CONFIG_UPNP_BCM) += upnpd_bcm
obj-$(CONFIG_UPNP_MVL) += upnpd_mvl
endif

obj-$(CONFIG_UDHCP) += udhcp
#obj-$(CONFIG_IPV6_DHCP) += dhcpv6
obj-$(CONFIG_IPV6_DHCP) += wide-dhcpv6
ifeq ($(PLATFORM), sl3516)
obj-$(CONFIG_PPPD) += ppp-2.4.4
else
obj-$(CONFIG_PPPD) += ppp
endif
obj-$(CONFIG_RP_PPPoE) += rp-pppoe
# 	Date: 2009-7-14
# 	Name: Ken_Chiang
# 	Reason: modify for support pppoe relay feature.
# 	Notice :
ifeq ($(CONFIG_PPPOE_RELAY),y)
	CFLAGS +=-DPPPOE_RELAY
endif
obj-$(CONFIG_TFTPD) += tftpd
obj-$(CONFIG_NTP)   += ntpclient
obj-$(CONFIG_GPIO)  += gpio
ifeq ($(CONFIG_MFORWARD),y)
obj-$(CONFIG_MFORWARD)	+= igmpproxy
	CFLAGS += -DCONFIG_MFORWARD
endif
obj-$(CONFIG_BIGPOND) += bpalogin
#obj-$(CONFIG_PPTP_CLIENT) += pptp
obj-$(CONFIG_PPTP_CLIENT) += accel-pptp-0.7.12
obj-$(CONFIG_PPTP_CLIENT_V082) += accel-pptp-0.8.2
ifeq ($(CONFIG_OPENAGENT),y)
	obj-$(CONFIG_OPENAGENT) += openssl openagent-2.0
	CFLAGS += -DCONFIG_OPENAGENT
endif

obj-$(CONFIG_ZLIB)		+= zlib
ifeq ($(CONFIG_DROPBEAR),y)
	obj-$(CONFIG_DROPBEAR) += zlib dropbear
	CFLAGS += -DCONFIG_DROPBEAR
endif

ifeq ($(CONFIG_IPV6_LLMNR),y)
	obj-$(CONFIG_IPV6_LLMNR) += llmnr
	CFLAGS += -DCONFIG_IPV6_LLMNR
endif

ifeq ($(PLATFORM), sl3516)
obj-$(CONFIG_FREERADIUS)	+= freeradius-client-1.1.6
obj-$(CONFIG_OPENLDAP)		+= openldap-2.4.11
obj-$(CONFIG_CLI) 		+= cmds
obj-$(CONFIG_CGI)		+= cgi

obj-$(CONFIG_GMP)		+= gmp-4.2.2
obj-$(CONFIG_OPENSWAN) 		+= openswan-2.6.16

obj-$(CONFIG_OPENSSL_0_9_8_H)	+= openssl-0.9.8h
obj-$(CONFIG_OPENVPN)		+= openvpn-2.1_rc9
# https depend on openssl
obj-$(CONFIG_BUSYBOX_1_6_1)	+= busybox-1.6.1

obj-$(CONFIG_LIBPCAP)		+= libpcap-0.9.8
obj-$(CONFIG_PCRE)		+= pcre-7.7
obj-$(CONFIG_SNORT)		+= snort-2.8.2.2
obj-$(CONFIG_PPTPD)		+= pptpd-1.3.4
obj-$(CONFIG_ORAY)		+= oray
obj-$(CONFIG_CROWDCONTROL)	+= crowdcontrol
endif
obj-$(CONFIG_PCIUTILS)		+= pciutils
obj-$(CONFIG_L2TP_CLIENT) += rp-l2tp
obj-$(CONFIG_LLD2D) += lld2d
obj-$(CONFIG_SNMP) += snmp
obj-$(CONFIG_WCN) += wcn
obj-$(CONFIG_DCC) += DCC
obj-$(CONFIG_ZEBRA) += zebra
obj-$(CONFIG_WPASUPPLICANT) += wpa_supplicant
obj-$(CONFIG_SMTP) += mail_client
obj-$(CONFIG_TRACEGW) += tracegw
obj-$(CONFIG_MBANDWIDTH) += mbandwidth
obj-$(CONFIG_DLINK_FW_QUERY) += fw_query
obj-$(CONFIG_NMBD) += nmbd
obj-$(CONFIG_MRD) += mrd
obj-$(CONFIG_IP) += iproute2
obj-$(CONFIG_IP_LOOKUP) +=ip_lookup
obj-$(CONFIG_UUID) += uuid
obj-$(CONFIG_3G_USB_CLIENT_IPHONE) += iphone


ifeq ($(CONFIG_WPS),y)
ifeq ($(CONFIG_WPS_WPATALK), y)
CFLAGS += -DWPS_WPATALK
else
obj-$(CONFIG_WL_ATH) += wps_ath
endif
obj-$(CONFIG_WL_BCM) += wps_bcm
obj-$(CONFIG_WL_MVL) += wps_mvl
endif

ifeq ($(CONFIG_SMTP),y)
obj-$(CONFIG_MAILOS) += Mail-On-Schedule
endif

# Support MLDv1 mldc daemon or not
ifeq ($(CONFIG_MLDC),y)
obj-$(CONFIG_MLDC) += mldc
endif

ifeq ($(CONFIG_WAKE_ON_LAN),y)
obj-$(CONFIG_WAKE_ON_LAN) += wake-on-lan-proxy
CFLAGS += -DWAKE_ON_LAN
endif

ifeq ($(CONFIG_MIREDO),y)
obj-$(CONFIG_MIREDO) += miredo
export MIREDO_CC := $(CROSS_COMPILE)gcc -std=gnu99
endif

# 	Date: 2009-1-05 
# 	Name: Ken_Chiang
# 	Reason: modify for blocked url to redirect the reject page by crowdcontrol(http proxy).
# 	Notice :
ifeq ($(CONFIG_CROWDCONTROL),y)
obj-$(CONFIG_CROWDCONTROL) += crowdcontrol
CFLAGS += -DHTTP_FILTER_PROXY
endif

# Tools
obj-$(CONFIG_BRCTL) += bridge-utils
obj-$(CONFIG_VLAN) += vlan


ifeq ($(PLATFORM), sl3516)
obj-$(CONFIG_HEADER) += header
obj-$(CONFIG_HW_NAT) += nat_cfg

ifeq ($(CONFIG_HW_NAT),y)
CFLAGS += -DHW_NAT
endif
CFLAGS += -DWATCH_DOG
endif

ifeq ($(CONFIG_IP_MATCH_3),y)
CFLAGS += -DIP_MATCH_3
endif

ifeq ($(CONFIG_IP_MATCH_4),y)
CFLAGS += -DIP_MATCH_4
endif

# Atheros support MAC filter or not
ifeq ($(CONFIG_WL_ATH_MAC_FILTER),y)
CFLAGS += -DATH_MAC_FILTER
endif

# Only support WLAN MAC Address filter  
ifeq ($(CONFIG_ONLY_FILTER_WLAN_MAC),y)
CFLAGS += -DONLY_FILTER_WLAN_MAC
endif

# Atheros support 5GHz or not
ifeq ($(CONFIG_WL_ATH_5GHZ),y)
CFLAGS += -DATH_5GHZ
endif

# Atheros support Guest Zone or not
ifeq ($(CONFIG_WL_ATH_GUEST_ZONE),y)
CFLAGS += -DATH_GUEST_ZONE
endif

# Atheros Disable scan for 2040 coexistence in 2.4GHz
ifeq ($(CONFIG_WL_ATH_NO_2040_SCAN),y)
CFLAGS += -DATH_NO_2040_SCAN
endif

# Atheros support WDS AP or not
ifeq ($(CONFIG_WL_ATH_WDS_AP),y)
CFLAGS += -DATH_WDS_AP
endif

# Atheros support WDS BR or not
ifeq ($(CONFIG_WL_ATH_WDS_BR),y)
CFLAGS += -DATH_WDS_BR
endif

# Atheros support WDS RPT or not
ifeq ($(CONFIG_WL_ATH_WDS_RPT),y)
CFLAGS += -DATH_WDS_RPT
endif

# Wireless SSID Support HEX mode in NVRAM or not
ifeq ($(CONFIG_HEX_MODE_WITH_WIRELESS),y)
CFLAGS += -DSSID_HEX_MODE
endif

# Support MRD or not
ifeq ($(CONFIG_MRD),y)
	CFLAGS +=-DMRD_ENABLE
endif

# Support Pure network or not
ifeq ($(CONFIG_HTTPD_PURE),y)
	CFLAGS += -DPURE_NETWORK_ENABLE
endif

ifeq ($(CONFIG_UUID),y)
	CFLAGS += -DUUID
endif

ifeq ($(HTTPD_DENY_USERID),y)
	CFLAGS += -DHTTPD_DENY_USERID
endif

#   Date: 2009-4-24
#   Name: Ken Chiang
#   Reason: Added to support the spcial admin used the MAC as the password.
#   Notice :
ifeq ($(HTTPD_USED_SP_ADMINID),y)
	CFLAGS += -DHTTPD_USED_SP_ADMINID
endif

ifeq ($(HTTPD_USED_MUTIL_AUTH),y)
	CFLAGS += -DHTTPD_USED_MUTIL_AUTH
endif

ifeq ($(HTTPD_LOGOUT_ADMIN_CHANGED),y)
	CFLAGS += -DHTTPD_LOGOUT_ADMIN_CHANGED
endif

# Support OWERA or not
ifeq ($(CONFIG_OWERA),y)
	CFLAGS +=-DCONFIG_OWERA
endif

# Support Multiple PPPOE or not
ifeq ($(CONFIG_MULTIPLE_PPPoE),y)
	CFLAGS +=-DMPPPOE
endif

# Support Russia PPPOE or not
ifeq ($(CONFIG_RUSSIA_PPPoE),y)
	CFLAGS +=-DRPPPOE
endif

# Support NAT or not
ifeq ($(CONFIG_NAT_ENABLE),y)
	CFLAGS +=-DNAT_ENABLE
endif

# Support SPI or not
ifeq ($(CONFIG_SPI),y)
	CFLAGS +=-DSPI
endif

# Support Access Control or not
ifeq ($(CONFIG_ACCESS_CONTROL),y)
	CFLAGS +=-DACCESS_CONTROL
endif

# Support Port Forward Both or not
ifeq ($(CONFIG_PORT_FORWARD_BOTH),y)
	CFLAGS +=-DPORT_FORWARD_BOTH
endif

#   Date: 2009-3-31
#   Name: Ken Chiang
#   Reason: Added the port forward rule to syslog when port forword is save the rule.
#   Notice :
# Support Port Forward to Syslog or not
ifeq ($(CONFIG_PORT_FORWARD_TO_LOG),y)
	CFLAGS +=-DPORT_FORWARD_TO_LOG
endif

# Support Inbound Filter or not
ifeq ($(CONFIG_INBOUND_FILTER),y)
	CFLAGS +=-DINBOUND_FILTER
endif

# Enhance dhcp option length or not
ifeq ($(CONFIG_UDHCP_ENHANCE_OPTION_SIZE),y)
	CFLAGS +=-DUDHCP_ENHANCE_OPTION_SIZE
endif
         
# Support netbios for udhcpd or not
ifeq ($(CONFIG_UDHCPD_NETBIOS),y)
	CFLAGS +=-DUDHCPD_NETBIOS
endif

# Support unicast for udhcpc or not
ifeq ($(CONFIG_UDHCPC_UNICAST),y)
	CFLAGS +=-DUDHCPC_UNICAST
endif

## jimmy added 20080428
# Support Static Route option (33) for udhcpc or not
ifeq ($(CONFIG_UDHCPC_STATIC_ROUTE),y)
	CFLAGS += -DUDHCPC_STATIC_ROUTE
endif
### Albert added 20080526
# Support ip look up in status page
ifeq ($(CONFIG_IP_LOOKUP),y)
	CFLAGS += -DCONFIG_IP_LOOKUP
endif

ifeq ($(CLASSLESS_STATIC_ROUTE_SHOW_UI),y)
	CFLAGS += -DCLASSLESS_STATIC_ROUTE_SHOW_UI
endif


#NickChou add
ifeq ($(CONFIG_WIRELESS_SCHEDULE),y)
	CFLAGS += -DCONFIG_WIRELESS_SCHEDULE
endif

# Support classess static route for udhcpc or not
ifeq ($(CONFIG_UDHCPC_CLASSLESS_STATIC_ROUTE),y)
	ifeq ($(CONFIG_RFC_UDHCPC_CLASSLESS_STATIC_ROUTE),y)
		CFLAGS +=-DUDHCPC_RFC_CLASSLESS_STATIC_ROUTE
	endif
	ifeq ($(CONFIG_MS_UDHCPC_CLASSLESS_STATIC_ROUTE),y)
		CFLAGS +=-DUDHCPC_MS_CLASSLESS_STATIC_ROUTE
	endif
endif
##---------------------

#   Date: 2009-4-10
#   Name: Ken Chiang
#   Reason: Add support for enable auto mode select(router mode/ap mode).
#   Notice : The optinn is to depend with brige mode support(CONFIG_BRIDGE_MODE).
ifeq ($(CONFIG_AUTO_MODE_SELECT),y)
	CFLAGS += -DAUTO_MODE_SELECT
endif

# Support revoke for udhcpd or not
ifeq ($(CONFIG_UDHCPD_REVOKE),y)
	CFLAGS +=-DUDHCPD_REVOKE
endif

# Check udhcpd reservation table setting by GUI or not
ifeq ($(CONFIG_UDHCPD_CHECK_RESERV_BY_GUI),y)
	CFLAGS +=-DDHCPD_CHECK_RESERV_BY_GUI
endif

# Support always broadcast for udhcpd or not
ifeq ($(CONFIG_UDHCPD_ALWAYS_BROADCAST),y)
	CFLAGS +=-DUDHCPD_ALWAYS_BROADCAST
endif

# Support timer interval for ddns or not
ifeq ($(CONFIG_DDNS_TIME_INTERVAL),y)
	CFLAGS +=-DDDNS_TIME_INTERVAL
endif

# Support reservate wireless domain or not
ifeq ($(CONFIG_RESERVATE_WIRELESS_DOMAIN),y)
	CFLAGS +=-DRESERVATE_WIRELESS_DOMAIN
endif

# Support radvd or not
ifeq ($(CONFIG_RADVD),y)
	CFLAGS +=-DRADVD
endif

#Support nmbd or not
ifeq ($(CONFIG_NMBD),y)
	CFLAGS +=-DCONFIG_NMBD
endif

#Support SNMP or not
ifeq ($(CONFIG_SNMP),y)
	CFLAGS +=-DCONFIG_SNMP
endif

#Support SNMP trap or not
ifeq ($(CONFIG_SNMP_TRAP),y)
	CFLAGS +=-DCONFIG_SNMP_TRAP
endif

#Support WCN or not
ifeq ($(CONFIG_WCN),y)
	CFLAGS +=-DCONFIG_WCN
endif

#Support ZEBRA or not
ifeq ($(CONFIG_ZEBRA),y)
	CFLAGS +=-DCONFIG_ZEBRA
endif

# Support IPv6 or not
ifeq ($(CONFIG_IPV6_SUPPORT),y)
	CFLAGS +=-DIPv6_SUPPORT
endif

# Support static IPv6 or not
ifeq ($(CONFIG_IPV6_STATIC),y)
	CFLAGS +=-DIPv6_STATIC
endif

# Support DHCPv6 or not
ifeq ($(CONFIG_IPV6_DHCP),y)
	CFLAGS +=-DDHCPv6
endif

# Support IPv6 tunnel or not
ifeq ($(CONFIG_IPV6_TUNNEL),y)
	CFLAGS +=-DIPV6_TUNNEL
endif

# Support 6to4 tunnel or not
ifeq ($(CONFIG_6TO4_TUNNEL),y)
	CFLAGS +=-DSIX_TO4_TUNNEL
endif

# Support 6in4 tunnel or not
ifeq ($(CONFIG_6IN4_TUNNEL),y)
	CFLAGS +=-DSIX_IN4_TUNNEL
endif

# Support IPv6 PPPoE or not
ifeq ($(CONFIG_IPV6_PPPoE),y)
	CFLAGS +=-DIPV6_PPPoE
endif

# Support stateless autoconfiguration on WAN interface
ifeq ($(CONFIG_STATELESS_WAN),y)
	CFLAGS +=-DIPV6_STATELESS_WAN
endif

# Support monitor ipv6 clients in LAN side
ifeq ($(CONFIG_IPV6_CLIENT_LIST),y)
	CFLAGS +=-DIPV6_CLIENT_LIST
endif

# httpd support ipv6
ifeq ($(CONFIG_IPV6_HTTPD),y)
	CFLAGS +=-DIPV6_HTTPD
endif

# Support IPv6 test function for CHT or not
ifeq ($(CONFIG_IPv6_TEST_FUNCTION),y)
	CFLAGS +=-DIPv6_TEST
endif

# Support QoS or not
ifeq ($(CONFIG_QOS),y)
	CFLAGS +=-DQOS
endif

#Support WISH or not
ifeq ($(CONFIG_WISH),y)
	CFLAGS +=-DCONFIG_WISH
endif

#Support DLINK_ROUTER_LED_DEFINE or not
ifeq ($(CONFIG_DLINK_ROUTER_LED_DEFINE),y)
	CFLAGS +=-DDLINK_ROUTER_LED_DEFINE
endif

#Support DLINK_FW_QUERY or not
ifeq ($(CONFIG_DLINK_FW_QUERY),y)
	CFLAGS +=-DDLINK_FW_QUERY
endif

#Support CHECKSUM or not
ifeq ($(CONFIG_SHOW_CHECKSUM),y)
	CFLAGS +=-DCONFIG_SHOW_CHECKSUM
endif

# Support different wireless solution for HTTPD
ifeq ($(CONFIG_WL_ATH),y)
	CFLAGS +=-DCONFIG_WL_ATH
endif
ifeq ($(CONFIG_WL_BCM),y)
	CFLAGS +=-DCONFIG_WL_BCM
endif
ifeq ($(CONFIG_WL_MVL),y)
	CFLAGS +=-DCONFIG_WL_MVL
endif

# support 802.11n or not
ifeq ($(CONFIG_WL_ATH_WITH_N),y)
	CFLAGS +=-DAR9100
endif

# support miniupnpd or not
ifeq ($(CONFIG_UPNP_ATH_MINIUPNPD_RC),y)
	CFLAGS +=-DUPNP_ATH_MINIUPNPD_RC
endif

# jimmy added 20080918
ifeq ($(CONFIG_UPNP_ATH_LIBUPNP),y)
	CFLAGS +=-DUPNP_ATH_LIBUPNP
	ifeq ($(CONFIG_UPNP_ATH_LIBUPNP_SAVE2FILE),y)
		CFLAGS +=-DUPNP_PORTMAPPING_SAVE
		endif
	ifeq ($(CONFIG_UPNP_ATH_LIBUPNP_CHECK_NVRAM),y)
		CFLAGS +=-DUPNP_PORTMAPPING_CHECK_NVRAM
	endif
endif

ifeq ($(CONFIG_WPS_PIN_GENERATE),y)
	CFLAGS +=-DWPS_PIN_GENERATE
endif

# -------------------------------------

#	Date:	2009-04-16
#	Name:	jimmy huang
#	Reason:	for miniupnpd-1.3 used
#	Note:	for rc, httpd to read this definitions
# 
ifeq ($(CONFIG_UPNP_ATH_MINIUPNPD_1_3),y)
	CFLAGS +=-DUPNP_ATH_MINIUPNPD_1_3
	ifeq ($(CONFIG_UPNP_ATH_MINIUPNPD_1_3_LEASE_FILES),y)
		CFLAGS +=-DUPNP_ATH_MINIUPNPD_1_3_LEASE_FILES
	endif
	ifeq ($(CONFIG_UPNP_ATH_MINIUPNPD_1_3_CHECK_VS_NVRAM),y)
		CFLAGS += -DUPNP_CHECK_VS_NVRAM
	endif
	#	Date:	2009-07-08
	#	Name:	jimmy huang
	#	Reason:	for miniupnpd-1.3 hairpin feature used
	#	Note:	for rc, httpd to read this definitions
	#			miniupnpd-1.3 use his own Makefile to read the definition
	# 
	ifeq ($(CONFIG_UPNP_ATH_MINIUPNPD_1_3_HAIRPIN),y)
		CFLAGS += -DUPNP_ATH_MINIUPNPD_1_3_HAIRPIN
	endif
endif

# support httpd time out to login page 
ifeq ($(CONFIG_HTTP_TIMEOUT),y)
	CFLAGS +=-DHTTP_TIMEOUT
endif

# support login fail alert message 
ifeq ($(CONFIG_LOGIN_ALERT),y)
	CFLAGS +=-DGUI_LOGIN_ALERT
endif


# support get/set hwversion,lanmac,wanmac for MAC mtdblock
ifeq ($(CONFIG_GET_SET_MACBLOCK),y)
	CFLAGS +=-DSET_GET_FROM_MACBLOCK
endif

# support chklist show hwversion 
ifeq ($(CONFIG_SHOW_HW_VERSION),y)
	CFLAGS +=-DSHOW_HW_VERSION
endif

# support igmp privacy mulit-cast ip address
ifeq ($(CONFIG_SUPPORT_PRIVACY_ADDRESS),y)
	CFLAGS +=-DCONFIG_SUPPORT_PRIVACY_ADDRESS
endif

# 	Date: 2009-1-19
# 	Name: Ken_Chiang
# 	Reason: modify for 3g usb client card to used.
# 	Notice :
ifeq ($(CONFIG_3G_USB_CLIENT),y)
	CFLAGS +=-DCONFIG_3G_USB_CLIENT
	ifeq ($(CONFIG_3G_USB_CLIENT_WM5),y)
		CFLAGS +=-DCONFIG_3G_USB_CLIENT_WM5
	endif
	ifeq ($(CONFIG_3G_USB_CLIENT_IPHONE),y)
		CFLAGS +=-DCONFIG_3G_USB_CLIENT_IPHONE
	endif
endif

ifeq ($(CONFIG_KCODES),y)
	CFLAGS += -DUSE_KCODES
else
	ifeq ($(CONFIG_SILEX),y)
		CFLAGS += -DUSE_SILEX
	endif	
endif

# 	Date: 2010-3-29
# 	Name: Bing_Chou
# 	Reason: added this definition for multi usb share port use purpose for MP.
# 	Notice :
ifeq ($(CONFIG_MULTI_USB_SHARE_PORT),y)
	CFLAGS += -DCONFIG_MULTI_USB_SHARE_PORT
endif
#   Date: 2009-2-10
#   Name: Jackey Chen
#   Reason: igmpproxy will fail in python solution with connect() function.
#   Notice :
ifeq ($(CONFIG_SUPPORT_BIND),y)
	CFLAGS += -DSUPPORT_BIND
endif

#   Date: 2009-3-31
#   Name: Nick Chou
ifneq ($(CONFIG_IP_CONNTRACK_NUMBER),) 
	CFLAGS += -DCONFIG_IP_CONNTRACK_NUMBER=$(CONFIG_IP_CONNTRACK_NUMBER)
endif


ifeq ($(CONFIG_DFS_NOT_SUPPORT), y)
	CFLAGS +=-DDFS_NOT_SUPPORT
endif

#   Date: 2009-6-26
#   Name: Albert Chen
ifneq ($(CONFIG_NVRAM_BLK),) 
	CFLAGS += -DCONFIG_NVRAM_BLK=$(CONFIG_NVRAM_BLK)
endif

#   Date: 2010-3-29
#   Name: Jimmy Huang
ifneq ($(CONFIG_IP_LOOKUP_INTERVAL),) 
# if specify CONFIG_IP_LOOKUP_INTERVAL
	CFLAGS += -DCONFIG_IP_LOOKUP_INTERVAL=$(CONFIG_IP_LOOKUP_INTERVAL)
endif

#   Date	:	2010-04-21
#   Name	:	Jimmy Huang
#	Reason	:	This value is used for minimal bandwidth for QoS, when bandwidth is not measure
#			 	or lower then this value, bandwidth will be set to this value (kbps).
ifneq ($(CONFIG_MBANDWIDTH_MINIMAL_VALUE),)
# if specify CONFIG_IP_LOOKUP_INTERVAL
	CFLAGS += -DCONFIG_MBANDWIDTH_MINIMAL_VALUE=$(CONFIG_MBANDWIDTH_MINIMAL_VALUE)
endif

CFLAGS +=-DCONFIG_NVRAM_SIZE=$(CONFIG_NVRAM_SIZE) -DCONFIG_FIREWALL_NUMBER=$(CONFIG_FIREWALL_NUMBER) \
	-DCONFIG_MAC_FILTER_NUMBER=$(CONFIG_MAC_FILTER_NUMBER) -DCONFIG_APPLICATION_NUMBER=$(CONFIG_APPLICATION_NUMBER) \
	-DCONFIG_PORT_FORWARD_NUMBER=$(CONFIG_PORT_FORWARD_NUMBER) -DCONFIG_VIRTUAL_SERVER_NUMBER=$(CONFIG_VIRTUAL_SERVER_NUMBER) \
	-DCONFIG_URL_FILTER_NUMBER=$(CONFIG_URL_FILTER_NUMBER) -DCONFIG_SCHEDULE_NUMBER=$(CONFIG_SCHEDULE_NUMBER) \
	-DCONFIG_STATIC_ROUTE_NUMBER=$(CONFIG_STATIC_ROUTE_NUMBER) -DCONFIG_BLOCK_SERVICE_NUMBER=$(CONFIG_BLOCK_SERVICE_NUMBER) \
	-DCONFIG_TRUST_IP_NUMBER=$(CONFIG_TRUST_IP_NUMBER) -DCONFIG_DHCPD_RESERVATION_NUMBER=$(CONFIG_DHCPD_RESERVATION_NUMBER) \
	-DCONFIG_MULTIPLE_ROUTING_NUMBER=$(CONFIG_MULTIPLE_ROUTING_NUMBER) -DCONFIG_QOS_NUMBER=$(CONFIG_QOS_NUMBER) \
	-DCONFIG_INBOUND_FILTER_NUMBER=$(CONFIG_INBOUND_FILTER_NUMBER) -DCONFIG_ACCESS_CONTROL_NUMBER=$(CONFIG_ACCESS_CONTROL_NUMBER) \
	-DCONFIG_SRC_MACHINE_NUMBER=$(CONFIG_SRC_MACHINE_NUMBER) \
	-DCONFIG_UPLOAD_TIME=$(CONFIG_UPLOAD_TIME) -DCONFIG_REBOOT_TIME=$(CONFIG_REBOOT_TIME) -DCONFIG_RESTORE_TIME=$(CONFIG_RESTORE_TIME) \
	-DCONFIG_RESTORE_WIRELESS_TIME=$(CONFIG_RESTORE_WIRELESS_TIME) -DCONFIG_RESET_TIME=$(CONFIG_RESET_TIME) \
	-DCONFIG_UPLOAD_CERTIFICATION_TIME=$(CONFIG_UPLOAD_CERTIFICATION_TIME) -DCONFIG_LAN_IP_CHANGE_REBOOT_TIME=$(CONFIG_LAN_IP_CHANGE_REBOOT_TIME) \
	-DCONFIG_SUPER_G_REBOOT_TIME=$(CONFIG_SUPER_G_REBOOT_TIME) -DCONFIG_UPGRADE_TIME=$(CONFIG_UPGRADE_TIME) -I$(WWW_PATH)/include

# Flash Type
#ifeq ($(CONFIG_FLASH_MXIC_29LV640TB),y)
#	CFLAGS += -DMXIC_FLASH
#else
#	CFLAGS += -DINTEL_FLASH
#endif

obj-clean := $(foreach obj,$(obj-y) $(obj-n),$(obj)-clean)
obj-install := $(foreach obj,$(obj-y),$(obj)-install)

all:

ifeq ($(CONFIG_MODEL_NAME),DIR-615_C1)
#   Date: 2009-2-18
#   Name: Ken Chiang
#   Reason: To use different hardware country ID for US and other regions for DIR-615_C1.
#   Notice :
ifdef CONFIG_LANGUAGE_PACK
	cp -f $(WWW_PATH)/bsp_other.h $(WWW_PATH)/bsp.h
	cp -f $(WWW_PATH)/version$(CONFIG_LANGUAGE_PACK).c $(WWW_PATH)/version.c
else
	cp -f $(WWW_PATH)/bsp_usa.h $(WWW_PATH)/bsp.h
	cp -f $(WWW_PATH)/version_NA.c $(WWW_PATH)/version.c
endif
ifeq ($(CONFIG_IPV6_SUPPORT),y)
	cp -f $(WWW_PATH)/nvram.default_ipv6$(CONFIG_LANGUAGE_PACK) $(WWW_PATH)/nvram.default
else
	cp -f $(WWW_PATH)/nvram.default_ipv4 $(WWW_PATH)/nvram.default
endif
endif

ifeq ($(PLATFORM), AthSDK_AP61)
	cd $(APPS_PATH)/../platform/$(PLATFORM)/ && make busybox_build;
endif

ifeq ($(CONFIG_WL_ATH), y)
ifneq ($(WL_PLATFORM), AP94)
	ln -sf wps_ath wpa
endif	
ifeq ($(CONFIG_MODEL_NAME),WLAN-2000)
	echo "cp apps at AthSDK/Makefile"
else		
ifeq ($(CONFIG_MODEL_NAME),TEW-670APB)
	echo "cp apps at AthSDK/Makefile"
else
	cp -f $(WWW_PATH)/bsp.h	./gpio/
	cp -f $(WWW_PATH)/bsp.h	./rc/
	cp -f $(WWW_PATH)/project.h	./sutil/
ifeq ($(WL_PLATFORM), AP94)
	cp -f ./rc/wlan_ath_ap94.c ./rc/wlan.c
else
	cp -f ./rc/wlan_ath.c ./rc/wlan.c
endif
endif
endif
endif

ifeq ($(PLATFORM), sl3516)
	cp -f $(WWW_PATH)/bsp.h	./gpio/
	cp -f $(WWW_PATH)/bsp.h	./rc/
	cp -f ./rc/wlan_ralink.c ./rc/wlan.c
endif

ifeq ($(PLATFORM), MV88F6281)
	cp -f $(WWW_PATH)/bsp.h ./gpio/
	cp -f $(WWW_PATH)/bsp.h ./rc/
endif

ifeq ($(CONFIG_WL_BCM), y)
	cp -f ./rc/wlan_bcm.c ./rc/wlan.c
endif

ifeq ($(CONFIG_WL_MVL), y)
	cp -f ./rc/wlan_mvl.c ./rc/wlan.c
endif
ifeq ($(PLATFORM), sl3516)
	for i in $(obj-y); do \
		make $$i || exit 1; \
	done
else
ifeq ($(PLATFORM), MV88F6281)
	for i in $(obj-y); do \
		make $$i || exit 1; \
	done
else
	for i in $(obj-y); do \
		(cd $$i; make) || exit 1; \
	done
endif
endif
ifeq ($(CONFIG_OWERA), y)
	cd ./owera/src/build/release; \
	make oppc; \
	cp -f ./app/oppc $(FS_PATH)/sbin; \
	chmod 777 $(FS_PATH)/sbin/oppc
endif




clean: $(obj-clean);
	$(MAKE) -C config clean	
#	Date:		2009-05-26
#	Name:		Jimmy Huang
#	Reason:		Modified Makefile to support project depended packages
#	Notice :
#
	$(MAKE) -C $(APPS_PATH)/../www clean


install: $(obj-install)
	$(MAKE) -C $(APPS_PATH)/../www install

conf mconf:
	$(MAKE) -C config
	@./config/$@ ./config/Config

menuconfig: mconf


# Default configurations
.config:
	cp config/defconfig $@
	$(MAKE) mconf
	
ifeq ($(PLATFORM), sl3516)
include Makefile.vpn
else
ifeq ($(PLATFORM), MV88F6281)
include Makefile.vpn
endif
endif
##############################################################
# LINUX_NVRAM
###############################################################
linux_nvram/.unpacked:
#	svn co $(SVNPACKAGE)/linux_nvram
	touch $@

linux_nvram:linux_nvram/.unpacked
	$(MAKE) -C $@ KERNELDIR=$(KERNEL_PATH)
	
linux_nvram-install:
	cd linux_nvram;						\
	$(INSTALL) -d $(TARGET)/bin;				\
	$(INSTALL) -m 755 nvram $(TARGET)/bin;			\
	$(INSTALL) -d $(TARGET)/lib;				\
	$(INSTALL) -m 644 libnvram.so $(TARGET)/lib/;		\
	$(INSTALL) -m 644 devnvram.ko $(TARGET)/lib/
	$(INSTALL) -m 644 $(WWW_PATH)/nvram.default $(TARGET)/etc
	$(STRIP) $(TARGET)/bin/nvram
	$(STRIP) $(TARGET)/lib/libnvram.so
#nvram-install: linux_nvram-install
#	@#keep tab for as force target
#
## Generic rules
#

%:
	[ ! -d $* ] || $(MAKE) -C $*

%-clean:
	[ ! -d $* ] || $(MAKE) -C $* clean

%-install:
	[ ! -d $* ] || $(MAKE) -C $* install

$(obj-y) $(obj-n) $(obj-clean) $(obj-install): dummy
.PHONY: all clean install
.PHONY: conf mconf menuconfig
.PHONY: dummy
