#
# Makefile for the GoAhead web server reference source base
#  for the Linux OS
#
# Copyright (c) GoAhead Software, Inc. 1995-2000
#
# $Id: Makefile,v 1.23 2006/02/16 05:18:00 davidhsu Exp $
#

all:	compile

ARCH	= libwebs.a

NAME_VPN = webs-vpn
NAME_GW	= webs-gw
NAME_AP = webs-ap
FLASH_VPN = flash-vpn
FLASH_GW = flash-gw
FLASH_AP = flash-ap

CC	= mips-uclibc-gcc

AR	= mips-uclibc-ar

# User Management switch
UMSW	= -DUSER_MANAGEMENT_SUPPORT

# TLS client mode support
#TLS= -DTLS_CLIENT

# routing support
#ROUTE = -DROUTE_SUPPORT

# WLAN support
WLANSUPP= -DUNIVERSAL_REPEATER -DWLAN_WPA -DWLAN_WDS -DWLAN_8185AG -DWLAN_WPA2 -DWLAN_EASY_CONFIG $(TLS)

# Digest Access switch
DASW	= -DDIGEST_ACCESS_SUPPORT

# Gateway flag
GATEWAY = -DHOME_GATEWAY -DDOS_SUPPORT

# have VPN support
VPN = -DVPN_SUPPORT 
# SSL switches (enable all to activate)
# SSLINC = /RSASSL/library/include
# SSLLIB = /RSASSL/library/lib/libsslc.a
# SSLSW	= -DWEBS_SSL_SUPPORT -I$(SSLINC)
# SSLPATCHFILE = ../websSSL.o

# If-Modified-Support switches (requires math library, libm.a)
# IFMODSW = -DWEBS_IF_MODIFIED_SUPPORT
# IFMODLIB = /usr/lib/libm.a
# goahead SSL support
#OPENSSL = 1
#MATRIXSSL = 1

ifeq ($(strip $(OPENSSL)),1)
SSLINC = ../../auth/Package/openssl-0.9.7b/include
SSLLIB =  ../../auth/Package/libssl.a  ../../auth/Package/libcrypto.a
#-lkrb5
SSLSW	= -DOPENSSL -DWEBS_SSL_SUPPORT -I$(SSLINC) 
SSLPATCHFILE = ../websSSL.o
endif


ifeq ($(strip $(MATRIXSSL)),1)
SSLINC = ../matrixssl/examples 
SSLLIB =  ../matrixssl/src/libmatrixssl.a #-lpthread
SSLSW	= -DMATRIX_SSL  -DWEBS_SSL_SUPPORT -I$(SSLINC) 
SSLPATCHFILE = ../matrix_ssl.o
MATRIXSSL = libmatrixssl.a
endif

# Dependencies
DEPEND_FILES	= ../asp.o ../balloc.o ../base64.o ../cgi.o ../default.o  \
				  ../ejlex.o ../ejparse.o ../form.o \
				  ../h.o ../handler.o ../mime.o ../misc.o ../page.o  \
				  ../ringq.o ../rom.o \
				  ../sock.o ../sockGen.o $(SSLPATCHFILE) \
				  ../security.o ../sym.o ../uemf.o ../url.o ../value.o \
				  ../md5c.o ../um.o ../umui.o ../websda.o ../emfdb.o \
				  ../webrom.o ../webs.o ../websuemf.o

REALTEK_GW_FILES = apmib_gw.o fmtcpip_gw.o utility_gw.o mibtbl_gw.o fmfwall_gw.o \
			fmget_gw.o fmwlan_gw.o fmmgmt_gw.o version_gw.o fmddns_gw.o fmroute_gw.o

REALTEK_VPN_FILES = apmib_vpn.o fmtcpip_vpn.o utility_vpn.o mibtbl_vpn.o fmfwall_vpn.o \
			fmget_vpn.o fmwlan_vpn.o fmmgmt_vpn.o version_vpn.o fmvpn.o fmddns_vpn.o fmroute_vpn.o

REALTEK_AP_FILES = apmib_ap.o fmtcpip_ap.o utility_ap.o mibtbl_ap.o \
			fmget_ap.o fmwlan_ap.o fmmgmt_ap.o version_ap.o


CFLAGS	= -fno-strict-aliasing -DWEBS -DUEMF -DOS="LINUX" -DLINUX $(WLANSUPP) $(UMSW) $(DASW) $(SSLSW) $(IFMODSW) -Os -DDOWN_SIZE $(ROUTE)
OTHERS	= -DB_STATS -DB_FILL -DDEBUG
DEBUG	= -g -Wall
IFLAGS 	= -I..
LDFLAGS	= $(SSLLIB) $(IFMODLIB)

ifeq ($(SLINK),1)
CFLAGS  += -DCOMPACK_SIZE -ffunction-sections -fdata-sections
LDFLAGS += --static -Wl,--gc-sections
TARGET = $(NAME_AP) $(FLASH_AP)
NEWADDEDCFLAGS = -DCOMPACK_SIZE -ffunction-sections -fdata-sections
else

TARGET = $(NAME_GW) $(NAME_AP) $(NAME_VPN) $(FLASH_AP) $(FLASH_GW) $(FLASH_VPN)
NEWADDEDCFLAGS =
endif

compile: $(TARGET) \
	webpages-gw.bin webpages-ap.bin webpages-vpn.bin

#
#	Build archive of objects
#
$(ARCH): $(DEPEND_FILES)
	$(AR) $(ARFLAGS) $(ARCH) $?

#
#	Primary link
#
$(NAME_VPN): Makefile $(ARCH) $(REALTEK_VPN_FILES) main_vpn.o $(MATRIXSSL)
	$(CC) -o $(NAME_VPN) $(DEBUG) \
		$(CFLAGS) $(IFLAGS) \
		main_vpn.o $(ARCH) $(REALTEK_VPN_FILES) $(LDFLAGS)
	mips-uclibc-strip $@

$(NAME_GW): Makefile $(ARCH) $(REALTEK_GW_FILES) main_gw.o $(MATRIXSSL)
	$(CC) -o $(NAME_GW) $(DEBUG) \
		$(CFLAGS) $(IFLAGS) \
		main_gw.o $(ARCH) $(REALTEK_GW_FILES) $(LDFLAGS)
	mips-uclibc-strip $@

$(NAME_AP): Makefile $(ARCH) $(REALTEK_AP_FILES) main_ap.o
	$(CC) -o $(NAME_AP) $(DEBUG) \
		$(CFLAGS) $(IFLAGS) \
		main_ap.o $(ARCH) $(REALTEK_AP_FILES) $(LDFLAGS)
	mips-uclibc-strip $@

$(FLASH_VPN): Makefile flash_vpn.o apmib_vpn_flash.o mibtbl_vpn.o
	$(CC) -o $@ $(DEBUG) \
		$(CFLAGS) $(IFLAGS) \
		flash_vpn.o apmib_vpn_flash.o mibtbl_vpn.o $(LDFLAGS)
	mips-uclibc-strip $@

$(FLASH_GW): Makefile flash_gw.o apmib_gw_flash.o mibtbl_gw.o
	$(CC) -o $@ $(DEBUG) \
		$(CFLAGS) $(IFLAGS) \
		flash_gw.o apmib_gw_flash.o mibtbl_gw.o $(LDFLAGS)
	mips-uclibc-strip $@

$(FLASH_AP): Makefile flash_ap.o apmib_ap_flash.o mibtbl_ap.o
	$(CC) -o $@ $(DEBUG) \
		$(CFLAGS) $(IFLAGS) \
		flash_ap.o apmib_ap_flash.o mibtbl_ap.o $(LDFLAGS)
	mips-uclibc-strip $@
webpages-vpn.bin: tools
	find ../web-vpn -name "*.*" > web_files
	./compweb web_files webpages-vpn.bin

webpages-gw.bin: tools
	find ../web-gw -name "*.*" > web_files
	./compweb web_files webpages-gw.bin

webpages-ap.bin: tools
	find ../web-ap -name "*.*" > web_files
	./compweb web_files webpages-ap.bin

webpages-cl.bin: tools
	find ../web-cl -name "*.*" > web_files
	./compweb web_files webpages-cl.bin

$(MATRIXSSL):
	make -C ../matrixssl/src

clean:
	rm -f $(NAME_GW) $(NAME_AP) $(NAME_VPN) $(FLASH_AP) $(FLASH_GW) $(FLASH_VPN) $(ARCH) *.o ../*.o *.bin web_files
	make -C ../matrixssl/src clean
	make -f Makefile-tools clean
	make -f Makefile-x86 clean

#
#	Dependencies
#
../asp.o:  ../webs.h ../wsIntrn.h ../ej.h ../ejIntrn.h ../uemf.h

../balloc.o: ../balloc.c ../uemf.h

../base64.o:  ../base64.c ../webs.h ../wsIntrn.h  ../ej.h ../ejIntrn.h ../uemf.h

../cgi.o:  ../webs.h ../wsIntrn.h ../uemf.h

../default.o:  ../default.c ../webs.h ../wsIntrn.h ../ej.h ../ejIntrn.h ../uemf.h

../ejlex.o:  ../ejlex.c ../ej.h ../ejIntrn.h ../uemf.h

../ejparse.o:  ../ejparse.c ../ej.h ../ejIntrn.h ../uemf.h

../emfdb.o:  ../emfdb.h ../wsIntrn.h ../uemf.h

../form.o:  ../form.c ../webs.h ../wsIntrn.h ../ej.h ../ejIntrn.h ../uemf.h

../h.o:  ../h.c ../uemf.h

../handler.o:  ../handler.c ../webs.h ../wsIntrn.h ../ej.h ../ejIntrn.h ../uemf.h

../md5c.o:  ../md5.h ../wsIntrn.h ../uemf.h

../mime.o:  ../mime.c ../webs.h ../wsIntrn.h ../ej.h ../ejIntrn.h ../uemf.h

../misc.o:  ../misc.c ../uemf.h

../page.o:  ../page.c ../webs.h ../wsIntrn.h ../ej.h ../ejIntrn.h ../uemf.h

../ringq.o:  ../ringq.c ../uemf.h

../rom.o:  ../rom.c ../webs.h ../wsIntrn.h ../ej.h ../ejIntrn.h ../uemf.h

../security.o:  ../security.c ../webs.h ../wsIntrn.h ../ej.h ../ejIntrn.h ../uemf.h

../sock.o:  ../sock.c ../uemf.h

../sockGen.o:  ../sockGen.c ../uemf.h

../sym.o:  ../sym.c ../uemf.h

../uemf.o:  ../uemf.c ../uemf.h

../um.o:  ../webs.h ../wsIntrn.h ../um.h ../uemf.h

../umui.o:  ../webs.h ../wsIntrn.h ../um.h ../uemf.h

../url.o:  ../url.c ../webs.h ../wsIntrn.h ../ej.h ../ejIntrn.h ../uemf.h

../value.o:  ../value.c ../uemf.h

../webrom.o:  ../webrom.c ../webs.h ../wsIntrn.h ../uemf.h

../webs.o:  ../webs.c ../webs.h ../wsIntrn.h ../ej.h ../ejIntrn.h ../uemf.h

../websda.o:  ../webs.h ../wsIntrn.h ../websda.h ../uemf.h

../websuemf.o:  ../websuemf.c ../webs.h ../wsIntrn.h ../ej.h ../ejIntrn.h ../uemf.h

../websSSL.o:  ../websSSL.c ../websSSL.h ../wsIntrn.h ../ej.h ../ejIntrn.h ../uemf.h

## new added modules by realtek ---------------
main_gw.o:  main.c ../wsIntrn.h ../webs.h ../ej.h ../ejIntrn.h ../uemf.h
	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(GATEWAY) $(IFLAGS) $<

#apmib_gw.o: apmib.c
#	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(GATEWAY) $(IFLAGS) $<

#fmtcpip_gw.o: fmtcpip.c
#	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(GATEWAY) $(IFLAGS) $<

#fmddns_gw.o: fmddns.c
#	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(GATEWAY) $(IFLAGS) $<

utility_gw.o: utility.c
	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(GATEWAY) $(IFLAGS) $<

#mibtbl_gw.o: mibtbl.c
#	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(GATEWAY) $(IFLAGS) $<

#fmfwall_gw.o: fmfwall.c
#	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(GATEWAY) $(IFLAGS) $<

#fmget_gw.o: fmget.c
#	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(GATEWAY) $(IFLAGS) $<

#fmwlan_gw.o: fmwlan.c
#	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(GATEWAY) $(IFLAGS) $<

#fmmgmt_gw.o: fmmgmt.c
#	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(GATEWAY) $(IFLAGS) $<

version_gw.o: version.c
	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(GATEWAY) $(IFLAGS) $<

#flash_gw.o: flash.c
#	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(GATEWAY) $(IFLAGS) $<

convert_gw.o: convert.c
	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(GATEWAY) $(IFLAGS) $<

#fmroute_gw.o: fmroute.c
#	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(GATEWAY) $(VPN) $(IFLAGS) $<
################################################################################
main_vpn.o:  main.c ../wsIntrn.h ../webs.h ../ej.h ../ejIntrn.h ../uemf.h
	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(GATEWAY) $(VPN) $(IFLAGS) $<

#apmib_vpn.o: apmib.c
#	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(GATEWAY) $(VPN) $(IFLAGS) $<

#fmtcpip_vpn.o: fmtcpip.c
#	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(GATEWAY) $(VPN) $(IFLAGS) $<

#fmddns_vpn.o: fmddns.c
#	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(GATEWAY) $(VPN) $(IFLAGS) $<

utility_vpn.o: utility.c
	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(GATEWAY) $(VPN) $(IFLAGS) $<

#mibtbl_vpn.o: mibtbl.c
#	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(GATEWAY) $(VPN) $(IFLAGS) $<

#fmfwall_vpn.o: fmfwall.c
#	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(GATEWAY) $(VPN) $(IFLAGS) $<

#fmvpn.o: fmvpn.c
#	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(GATEWAY) $(VPN) $(IFLAGS) $<

#fmget_vpn.o: fmget.c
#	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(GATEWAY) $(VPN) $(IFLAGS) $<

#fmwlan_vpn.o: fmwlan.c
#	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(GATEWAY) $(VPN) $(IFLAGS) $<

#fmmgmt_vpn.o: fmmgmt.c
#	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(GATEWAY) $(VPN) $(IFLAGS) $<

version_vpn.o: version.c
	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(GATEWAY) $(VPN) $(IFLAGS) $<

#flash_vpn.o: flash.c
#	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(GATEWAY) $(VPN) $(IFLAGS) $<

convert_vpn.o: convert.c
	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(GATEWAY) $(VPN) $(IFLAGS) $<

#fmroute_vpn.o: fmroute.c
#	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(GATEWAY) $(VPN) $(IFLAGS) $<

main_ap.o:  main.c ../wsIntrn.h ../webs.h ../ej.h ../ejIntrn.h ../uemf.h
	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(IFLAGS) $<

#apmib_ap.o: apmib.c
#	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(IFLAGS) $<

#fmtcpip_ap.o: fmtcpip.c
#	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(IFLAGS) $<

utility_ap.o: utility.c
	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(IFLAGS) $<

#mibtbl_ap.o: mibtbl.c
#	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(IFLAGS) $<

#fmget_ap.o: fmget.c
#	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(IFLAGS) $<

#fmwlan_ap.o: fmwlan.c
#	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(IFLAGS) $<

#fmmgmt_ap.o: fmmgmt.c
#	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(IFLAGS) $<

version_ap.o: version.c
	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(IFLAGS) $<

#flash_ap.o: flash.c
#	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(IFLAGS) $<

convert_ap.o: convert.c
	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(IFLAGS) $<
	
#apmib_vpn_flash.o: apmib.c
#	$(CC) -c -o $@ $(DEBUG) $(GATEWAY) $(WLANSUPP) $(NEWADDEDCFLAGS)$(ROUTE) $(VPN) $<

#apmib_gw_flash.o: apmib.c
#	$(CC) -c -o $@ $(DEBUG) $(GATEWAY) $(WLANSUPP) $(NEWADDEDCFLAGS) $(ROUTE) $<

#apmib_ap_flash.o: apmib.c
#	$(CC) -c -o $@ $(DEBUG) $(WLANSUPP) $(NEWADDEDCFLAGS)  $<
## --------------------------------------------
x86:
	make -f Makefile-x86
tools:
	make -f Makefile-tools

#
#	Transition rules (add -o to put object in right directory)
#
.c.o:
	$(CC) -c -o $@ $(DEBUG) $(CFLAGS) $(IFLAGS) $<
