# $Id: Makefile.in,v 1.1.2.6 2002/12/12 21:29:04 jnelson Exp $


ifeq ($(wildcard $(DIR_LINUX)/.config),)
include ../../linux-2.6.30/.config
DIR_LINUX_KERNEL = ../../linux-2.6.30
else
KERNEL_VER=$(patsubst $(DIR_ROOT)/%,%,$(DIR_LINUX))
include $(DIR_LINUX)/.config
DIR_LINUX_KERNEL = $(DIR_LINUX)
endif

ifeq ($(wildcard $(DIR_USERS)/.config),)
include ../.config
else
include $(DIR_USERS)/.config
endif

ifndef DIR_RSDK
include ../../.config
ifeq ($(x86),1)
#
# x86 simulation for boa & flash
#
# usage: 
# 1. cd boa
# 2. make x86=1 (it will create x86 files, and copy to x86 dir)
# 3. cd x86 
# 
# * if APMIB_SHARED = 0 
# 1. ./flash default (it will create setting.bin to simulate flash)
# 2. ./boa -c . -r . (it will start boa, you may need run 'service httpd stop' first)
#
# * if APMIB_SHARED = 1
# 1. LD_LIBRARY_PATH=. ./flash default 
# 2. LD_LIBRARY_PATH=. ./boa -c . -r .
#
# Use browser to view html now!
#
export CC = gcc
export CPP = gcc -E
export AR = ar
export STRIP = strip
# uncomment it to disable strip behavior for gdb debug
#export STRIP = :
export DIR_USERS := $(shell pwd)/../
export DIR_LINUX := $(shell pwd)/../../linux-2.6.30
else
export PATH := $(shell pwd)/../../$(CONFIG_RSDKDIR)/bin:$(PATH)
CROSS_COMPILE ?= rsdk-linux-
export CC = $(CROSS_COMPILE)gcc
export CPP = $(CROSS_COMPILE)gcc -E
export AR = $(CROSS_COMPILE)ar
export STRIP = $(CROSS_COMPILE)strip
endif
export x86 = 1
endif

ifdef CONFIG_RTL_AP_PACKAGE 
CONFIG_RTL_AP = CONFIG_RTL_AP_PACKAGE
endif
#------------------------------------------------------------------------------

MAKE=make

.PHONY: clean mrclean distclean configcheck boa docs apmib utils system defconfig html tools cgi

#WNC-NMRXXXX-D2R030-YUAN-I-CHOU-20160102
# boa cgi support
export BOA_CGI_SUPPORT=y
ifeq ($(BOA_CGI_SUPPORT), y)
COMMON_CFLAGS += -DBOA_CGI_SUPPORT
endif
#WNC-NMRXXXX-D2R030-YUAN-I-CHOU-20160102 End

#WNC-MR1532-JOE-PENG-20120411-Patch PPPoE Disconnect solution from Realtek */
ifdef CONFIG_PPPOE_DISCONNECT_FLOW_PATCH
        COMMON_CFLAGS += -D PPPOE_DISC_FLOW_PATCH
endif
#WNC-MR1532-JOE-PENG-20120411-end */
ifeq ($(CONFIG_RTL8192CD), y)
COMMON_CFLAGS += -DCONFIG_WLAN_UI_SUPPORT
endif

ifeq ($(CONFIG_WLAN_HAL_8814AE),y)
COMMON_CFLAGS += -DCONFIG_WLAN_HAL_8814AE
ifeq ($(CONFIG_SLOT_0_8194AE),y)
COMMON_CFLAGS += -DCONFIG_SLOT_0_8194AE
endif
COMMON_CFLAGS += -DCONFIG_RTL_8812_SUPPORT
COMMON_CFLAGS += -DCONFIG_RTL_11AC_SUPPORT

ifeq ($(CONFIG_USE_PCIE_SLOT_0),y)
ifeq ($(CONFIG_USE_PCIE_SLOT_1),y)
COMMON_CFLAGS += -DCONFIG_RTL_8881A_SELECTIVE
COMMON_CFLAGS += -DCONFIG_RTL_92D_SUPPORT
COMMON_CFLAGS += -DCONFIG_RTL_DUAL_PCIESLOT_BIWLAN
COMMON_CFLAGS += -DCONFIG_RTL_DUAL_PCIESLOT_BIWLAN_D
COMMON_CFLAGS += -DFOR_DUAL_BAND
endif
endif
endif

ifeq ($(CONFIG_WLAN_HAL_8197F),y)
ifeq ($(CONFIG_USE_PCIE_SLOT_0),y)
COMMON_CFLAGS += -DCONFIG_RTL_92D_SUPPORT
COMMON_CFLAGS += -DFOR_DUAL_BAND
COMMON_CFLAGS += -DCONFIG_RTL_DUAL_PCIESLOT_BIWLAN_D
endif
endif

#zj: add for QoS from upvel
GATEWAY += -DENABLE_QOS
GATEWAY += -DQOS_BY_BANDWIDTH
COMMON_CFLAGS += -DADVANCED_IPQOS
ifeq ($(CONFIG_RTL_EXT_PORT_SUPPORT),y)
	COMMON_CFLAGS += -DCONFIG_RTL_EXT_PORT_SUPPORT
endif
ifeq ($(CONFIG_RTL_HW_QOS_SUPPORT),y)
	COMMON_CFLAGS += -DCONFIG_RTL_HW_QOS_SUPPORT
endif
ifeq ($(CONFIG_RTL_8367_QOS_SUPPORT),y)
    COMMON_CFLAGS += -DCONFIG_RTL_8367_QOS_SUPPORT
endif

ifeq ($(CONFIG_USER_CWMP_WHTH_TR098_QOS),y)
COMMON_CFLAGS += -DQOS_OF_TR069
endif

ifeq ($(CONFIG_IPV6),y)
        COMMON_CFLAGS += -DCONFIG_IPV6
endif
ifeq ($(CONFIG_RTL_8367R_SUPPORT),y)
COMMON_CFLAGS += -DCONFIG_RTL_8367R_SUPPORT
endif

ifeq ($(CONFIG_WLAN_HAL_8822BE),y)
COMMON_CFLAGS += -DCONFIG_RTL_8812_SUPPORT
COMMON_CFLAGS += -DCONFIG_RTL_11AC_SUPPORT
COMMON_CFLAGS += -DCONFIG_RTL_92D_SUPPORT
COMMON_CFLAGS += -DCONFIG_WLAN_HAL_8822BE
endif

ifdef CONFIG_RTL_WEBPAGES_IN_ROOTFS
COMMON_CFLAGS += -DCONFIG_RTL_WEBPAGES_IN_ROOTFS
endif

ifeq ($(CONFIG_RTL_8814_8194_2T2R_SUPPORT),y)
COMMON_CFLAGS += -DCONFIG_RTL_8814_8194_2T2R_SUPPORT
endif

ifeq ($(CONFIG_4G_LTE_SUPPORT), y)
COMMON_CFLAGS += -DCONFIG_4G_LTE_SUPPORT
endif
ifeq ($(CONFIG_BAND_2G_ON_WLAN0), y)
COMMON_CFLAGS += -DCONFIG_BAND_2G_ON_WLAN0
endif

ifeq ($(CONFIG_BAND_5G_ON_WLAN0), y)
COMMON_CFLAGS += -DCONFIG_BAND_5G_ON_WLAN0
endif

ifeq ($(CONFIG_RTK_OPENVPN_HW_CRYPTO),y)
COMMON_CFLAGS += -DCONFIG_RTK_OPENVPN_HW_CRYPTO
endif

ifeq ($(CONFIG_APP_OPENVPN),y)
COMMON_CFLAGS += -DCONFIG_APP_OPENVPN
endif

ifeq ($(CONFIG_MTD_NAME_MAPPING),y)
COMMON_CFLAGS += -DMTD_NAME_MAPPING
endif

ifeq ($(CONFIG_RTL_AP_PACKAGE),y)
COMMON_CFLAGS += -DCONFIG_RTL_AP_PACKAGE
endif

ifeq ($(CONFIG_APP_RTK_EVENTD_SUPPORT),y)
COMMON_CFLAGS += -DCONFIG_RTK_EVENTD_SUPPORT
endif

ifeq ($(CONFIG_RTL_TDLS_SUPPORT),y)
COMMON_CFLAGS += -DTDLS_SUPPORT
endif

ifeq ($(CONFIG_RTL_11V_SUPPORT),y)
COMMON_CFLAGS += -DCONFIG_IEEE80211V
endif

ifeq ($(CONFIG_APP_OPENCAPWAP),y)
COMMON_CFLAGS += -DRTK_CAPWAP
endif

ifndef CONFIG_RTL_AP
COMMON_CFLAGS += -DSEND_GRATUITOUS_ARP
endif

#WNC-MR1524-JOE-PENG-20120308-Implement NEC PPP Keep Alive
ifeq ($(CONFIG_WNC_NEC_PPP_KEEP_ALIVE),y)
COMMON_CFLAGS += -DCONFIG_WNC_NEC_PPP_KEEP_ALIVE
endif
#WNC-MR1524-JOE-PENG-20120308-end

#WNC-MR0000-JOE-PENG-20120419-Set Active Led for PPPoE according to NEC's spec.
ifeq ($(CONFIG_WNC_NEC_LED_CUSTOMIZATION),y)
COMMON_CFLAGS += -DCONFIG_WNC_NEC_LED_CUSTOMIZATION
endif
#WNC-MR0000-JOE-PENG-20120419-end

#WNC-NMRXXX-JDR230-YUAN-I-CHOU-20130703, Apply Realtek Patch 20130702_sdk-v3.3.5_NEC_Add_WAN_Bridge_Interface
#COMMON_CFLAGS += -DCONFIG_WAN_BRIDGE_SUPPORT
#WNC-NMRXXX-JDR230-YUAN-I-CHOU-20130703, Apply Realtek Patch 20130702_sdk-v3.3.5_NEC_Add_WAN_Bridge_Interface End

#WNC-NMRXXXX-D2R030-YUAN-I-CHOU-20160102
ifeq ($(CONFIG_APP_ACCESSTIMER),y)
COMMON_CFLAGS += -DCONFIG_APP_ACCESSTIMER
endif
#WNC-NMRXXXX-D2R030-YUAN-I-CHOU-20160102 End
#WNC-NMR00000-D2R031-HENG-I-CHEN-20160104: Add for Wi-Fi management #BEGIN
ifeq ($(CONFIG_APP_INIQUITOUS_CLIENT),y)
COMMON_CFLAGS += -DCONFIG_APP_INIQUITOUS_CLIENT
endif
#WNC-NMR00000-D2R031-HENG-I-CHEN-20160104: Add for Wi-Fi management #END
#WNC-NMR0000-Jog-20160831, AutoCH2 daemon
ifeq ($(CONFIG_APP_AUTOCH2),y)
COMMON_CFLAGS += -DCONFIG_APP_AUTOCH2
endif
#WNC-NMR0000-Jog-20160831, AutoCH2 daemon, end
ifeq ($(CONFIG_WNC_REMOVE_MESH),y)
COMMON_CFLAGS += -DCONFIG_WNC_REMOVE_MESH
endif

#WNC-MR0000-MIKE-YEH-20160805-implement remote maintenance.
ifeq ($(CONFIG_WNC_NEC_REMOTE_MAINTENANCE),y)
COMMON_CFLAGS += -DCONFIG_WNC_NEC_REMOTE_MAINTENANCE
endif
#WNC-MR0000-MIKE-YEH-20160805-end

#WNC-MR0000-MIKE-YEH-20170505-implement stok session authentication-start.
ifeq ($(CONFIG_WNC_NEC_STOK_SESSION_AUTH),y)
COMMON_CFLAGS += -DCONFIG_WNC_NEC_STOK_SESSION_AUTH
endif
#WNC-MR0000-MIKE-YEH-20170505-implement stok session authentication-end.

#------------------------------------------------------------------------------
# Targets
#------------------------------------------------------------------------------
ifeq ($(CONFIG_RTL_8196C_iNIC),y)
#iNIC no boa ,only need tools to build code
TARGET = tools
else
ifeq ($(CONFIG_RTL_8198_INBAND_AP),y)
TARGET = tools
else
TARGET = tools defconfig apmib utils system boa cgi html
endif
endif

all: configcheck generate_mk $(TARGET)
ifeq ($(x86),1)
	rm -rf x86
	mkdir x86
	cp -av html x86/web
	cp src/boa x86/
	cp utils/flash x86/
	cp src/boa.conf.x86 x86/boa.conf
	cp src/mime.types x86/
ifeq ($(APMIB_SHARED),1)
	cp apmib/libapmib.so x86/
endif
endif

generate_mk:
	@echo "SYS_COMMON_CFLAGS=$(COMMON_CFLAGS)" > ./wfaudio.include.mk
	@echo "export SYS_COMMON_CFLAGS" >> ./wfaudio.include.mk

configcheck:
	@echo "" > ./.diff_config;
	@if [ -e .kernel_config ]; then \
		diff .kernel_config $(DIR_LINUX_KERNEL)/.config > .diff_config; \
		if [ -s .diff_config ]; then \
		        cp $(DIR_LINUX_KERNEL)/.config .kernel_config; \
			make clean; \
                fi; \
        else \
                cp $(DIR_LINUX_KERNEL)/.config ./.kernel_config; \
	fi;

	@echo "" > ./.diff_users_config;
	@if [ -e .users_config ]; then \
		diff .users_config $(DIR_USERS)/.config > .diff_users_config; \
		if [ -s .diff_users_config ]; then \
			cp $(DIR_USERS)/.config .users_config; \
			make	clean; \
		fi; \
	else \
		cp $(DIR_USERS)/.config ./.users_config; \
	fi;	
#boa:
#	(cd src && $(MAKE) $(MFLAGS))

boa:
	make -C src CF_ENC_KEY=$(CF_ENC_KEY) FW_ENC_KEY=$(FW_ENC_KEY)

boa-clean:
	make -C src clean

apmib:
	make -C apmib CF_ENC_KEY=$(CF_ENC_KEY) FW_ENC_KEY=$(FW_ENC_KEY)

apmib-clean:
	make -C apmib clean

utils:
	make -C utils CF_ENC_KEY=$(CF_ENC_KEY) FW_ENC_KEY=$(FW_ENC_KEY)

utils-clean:
	make -C utils clean
	
system:
	make -C system CF_ENC_KEY=$(CF_ENC_KEY) FW_ENC_KEY=$(FW_ENC_KEY)

system-clean:
	make -C system clean

defconfig:
	make -C defconfig 
	
defconfig-clean:
	make -C defconfig clean
	
tools:
	make -C tools CF_ENC_KEY=$(CF_ENC_KEY) FW_ENC_KEY=$(FW_ENC_KEY)

tools-clean:
	make -C tools clean
	
cgi:
ifeq ($(BOA_CGI_SUPPORT),y)
	make -C cgi
endif
cgi-clean:
ifeq ($(BOA_CGI_SUPPORT),y)
	make -C cgi clean
endif
#html: tools
html:
	make -C html

html-clean:
	make -C html clean

docs:
	(cd docs && $(MAKE) $(MFLAGS))

clean:
	-(cd src && $(MAKE) $(MFLAGS) clean)
	-(cd docs && $(MAKE) clean)
	make apmib-clean
	make utils-clean
	make system-clean
	make boa-clean
	make defconfig-clean
	make html-clean
	make tools-clean
	make cgi-clean

distclean:	mrclean

mrclean:	clean
	-(cd src && $(MAKE) $(MFLAGS) mrclean)
	-(cd docs && $(MAKE)$(MFLAGS) mrclean)
	rm -f config.status config.cache config.h config.log 
	rm -f Makefile *~

# dummy target for install
install:
	@echo Please read the documentation then install manually.

romfs:
ifeq ($(APMIB_SHARED),1)
	$(ROMFSINST) apmib/$(APMIB_LIB) /lib/libapmib.so
endif
ifeq ($(CONFIG_MTD_NAME_MAPPING),y)
	$(ROMFSINST) $(DIR_ROOT)/users/lib/lib/libmtdapi.so /lib/libmtdapi.so
endif
	$(ROMFSINST) -s /var/resolv.conf /etc/resolv.conf
ifneq ($(CONFIG_RTL_8196C_iNIC),y)
ifneq ($(CONFIG_RTL_8198_INBAND_AP),y)
ifneq ($(CONFIG_RTL_NFJROM_MP),y)
ifneq ($(CONFIG_RTL_8198_AP_ROOT),y)
ifneq ($(CONFIG_RTL_8197D_AP),y)
ifneq ($(CONFIG_RTL_AP_PACKAGE),y)
	$(ROMFSINST) system/ppp_inet /bin/ppp_inet
	$(ROMFSINST) system/ntp_inet /bin/ntp_inet
	$(ROMFSINST) system/ddns_inet /bin/ddns_inet
ifeq  ($(CONFIG_IPV6_DNSV6_MODE_SUPPORT),y)
	$(ROMFSINST) system/ipv6_manage_inet /bin/ipv6_manage_inet
endif
ifeq  ($(CONFIG_IPV6_CE_ROUTER_SUPPORT),y)
        $(ROMFSINST) system/ipv6_manage_inet /bin/ipv6_manage_inet
endif
endif	#CONFIG_RTL_AP_PACKAGE
endif  #CONFIG_RTL_8197D_AP
endif	#CONFIG_RTL_8198_AP_ROOT
	$(ROMFSINST) src/boa /bin/boa

ifeq ($(CONFIG_APP_RTK_INBAND_CTL), y)	
	$(ROMFSINST) src/showwanstatus /bin/showwanstatus
endif

	$(ROMFSINST) -d src/boa.conf /etc/boa/boa.conf
	$(ROMFSINST) -d src/mime.types /etc/boa/mime.types
#WNC-NMRXXXX-D2R030-YUAN-I-CHOU-20160102
	$(ROMFSINST) -d src/auth.conf /etc/boa/auth.conf
ifdef CONFIG_RTL_WEBPAGES_IN_ROOTFS
	rm -rf tmp-html
	mkdir tmp-html
	cd tmp-html && tar jxvf ../html/www_files.tar.bz2 && cd -
	mv tmp-html $(DIR_ROMFS)/web
	$(ROMFSINST) -s /var/config.bin /web/config.bin
ifeq ($(CONFIG_APP_OPENVPN), y)
	$(ROMFSINST) -s /var/openvpn/client.ovpn /web/client.ovpn
endif
else
	$(ROMFSINST) -s /var/web /web
endif
endif	#CONFIG_RTL_NFJROM_MP
	$(ROMFSINST) utils/flash /bin/flash
#WNC-NMRXXXX-D2R030-YUAN-I-CHOU-20160102
	$(ROMFSINST) utils/online-getfw /bin/online-getfw
	$(ROMFSINST) utils/console_password /bin/console_password
	$(ROMFSINST) utils/sysmon /bin/sysmon
	$(ROMFSINST) utils/handle_wpsbtn /bin/handle_wpsbtn
ifeq ($(CONFIG_WNC_NEC_REMOTE_MAINTENANCE),y)		
	$(ROMFSINST) utils/handle_rm_btn /bin/handle_rm_btn
endif	
	$(ROMFSINST) utils/wlan_partition.sh /bin/wlan_partition.sh
#WNC-NMR2202-D2R030-YUAN-I-CHOU-20161220-WiFi schedule would work after 1 minute from system time updated
#	$(ROMFSINST) utils/start_wifi_sch.sh /bin/start_wifi_sch.sh
	$(ROMFSINST) utils/pppoe_discovery /bin/pppoe_discovery
	$(ROMFSINST) utils/conn_mgmt /bin/conn_mgmt
#WNC-NMRXXXX-D2R030-YUAN-I-CHOU-20160102 End
ifeq ($(CONFIG_APP_FWD),y)	
	$(ROMFSINST) utils/fwd /bin/fwd
endif
	#$(ROMFSINST) utils/main_lc5761 /bin/main_lc5761
#NMR0000-20160726-Implement responsive GUI page of Aero model-start
	$(ROMFSINST) -s /var/amgr_local.html /web/amgr_local.html
	$(ROMFSINST) -s /var/basic_main.html /web/basic_main.html
	$(ROMFSINST) -s /var/index_contents.html /web/index_contents.html
	$(ROMFSINST) -s /var/info_main.html /web/info_main.html
	$(ROMFSINST) -s /var/help.html /web/help.html
#NMR0000-20160726-Implement responsive GUI page of Aero model-end
	#WNC-NMR0000-JOE-PENG-20151007-Implement section 4.6 sensor function of Spider Spec.-start
#	$(ROMFSINST) utils/sensor_light /bin/sensor_light
#	$(ROMFSINST) utils/sensor_notify /bin/sensor_notify
#	$(ROMFSINST) utils/sensor_manager /bin/sensor_manager
	#WNC-NMR0000-JOE-PENG-20151007-Implement section 4.6 sensor function of Spider Spec.-end
	#WNC-NMR000-[Spider]-Libera-20160107- WDF function-start
	$(ROMFSINST) utils/wdf /bin/wdf
	$(ROMFSINST) utils/wifi_notify /bin/wifi_notify
	#WNC-NMR000-[Spider]-Libera-20160107- WDF function-end

ifeq ($(CONFIG_APP_OPENCAPWAP),y)	
	$(ROMFSINST) utils/fwupg /bin/fwupg
endif

ifneq ($(CONFIG_RTL_NFJROM_MP),y)
	$(ROMFSINST) system/sysconf /bin/sysconf
endif
	$(ROMFSINST) system/timelycheck /bin/timelycheck
ifeq ($(CONFIG_APP_RTK_EVENTD_SUPPORT),y)
	$(ROMFSINST) system/rtk_eventd /bin/rtk_eventd
endif
ifeq ($(CONFIG_AUTO_DHCP_CHECK),y)
	$(ROMFSINST) system/Auto_DHCP_Check /bin/Auto_DHCP_Check
endif
endif	#CONFIG_RTL_8198_INBAND_AP
endif	#CONFIG_RTL_8196C_iNIC
ifeq ($(CONFIG_RTL_DNS_TRAP),y)
	$(ROMFSINST) -s /var/hosts /etc/hosts
endif
ifeq ($(CONFIG_RTL_COMAPI_CFGFILE),y)
	rm -rf Wireless
	mkdir Wireless
	mv Wireless $(DIR_ROMFS)/etc
	$(ROMFSINST) -s /var/RTL8192CD.dat  /etc/Wireless/RTL8192CD.dat
endif
	cp ./src/certificate.crt ./../../romfs/etc
	cp ./src/privateKey.key ./../../romfs/etc
ifeq ($(SHOW_LAN_DEV_INFO),1)
	$(ROMFSINST) src/device_mac_brand.txt /etc/device_mac_brand.txt
endif
ifeq ($(CONFIG_SYS_DIAGNOSTIC),y)
ifdef CONFIG_RTL_WEBPAGES_IN_ROOTFS
	$(ROMFSINST) -s /var/sys_diagnostic.txt /web/sys_diagnostic.txt
endif
endif
