#
# Copyright 2008, Gemtek Corporation
# All Rights Reserved.
# 
# THIS SOFTWARE IS OFFERED "AS IS", AND GEMTEK GRANTS NO WARRANTIES OF ANY
# KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. GEMTEK
# SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
# FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
#
# $Id$
#

PKT_VERSION=1.1

EXEC = config_server cs_client

ifeq (GPL_RELEASE, $(wildcard GPL_RELEASE))
include GPL_RELEASE

ifeq (.config, $(wildcard .config))
include .config
all: $(EXEC)
else
all: config_error
endif

clean:
	rm -f *.o $(EXEC) *.elf *.gdb

gpl:
	@echo $(GPL_RELEASE_OBJS)
	@mkdir -p .GPL_RELEASE_DIR
	@cd .GPL_RELEASE_DIR; for i in $(GPL_RELEASE_OBJS); \
		do \
		if [ -e ../$$i ]; then \
			mkdir -p $$i; \
			rm -rf $$i; \
			cp ../$$i $$i; \
		fi; \
		done
	@rm -rf *
	@mv .GPL_RELEASE_DIR/* .
	@rm -rf .GPL_RELEASE_DIR

else
all:
clean:
gpl:
endif

CUR_PATH=$(shell pwd)


# Core Files
objs-y = cs_entity.o cs_main.o ipc_share.o ipc_server.o cs_leafs.o cs_def_funcs.o cs_log.o cs_iflib.o
objs-y += media/file.o
#objs-y += media/file.o media/conv.o media/io_access.o media/obscure.o media/set.o media/set_utils.o \
		media/memory.o media/str.o media/strconv.o

objs-$(CONFIG_CS_SAMPLE) += entity/entity_sample.o
objs-$(CONFIG_CS_CS) += entity/entity_cs.o
objs-$(CONFIG_CS_LAN) += entity/entity_lan.o
objs-$(CONFIG_CS_WAN) += entity/entity_wan.o
objs-$(CONFIG_CS_WLAN) += entity/entity_wlan.o
objs-$(CONFIG_CS_DHCPD) += entity/entity_dhcpd.o
objs-$(CONFIG_CS_DHCPC) += entity/entity_dhcpc.o
objs-$(CONFIG_CS_FIREWALL) += entity/entity_firewall.o
objs-$(CONFIG_CS_SYS) += entity/entity_sys.o
objs-$(CONFIG_CS_SWITCH) += entity/entity_switch.o
objs-$(CONFIG_CS_SYSLOGD) += entity/entity_syslogd.o
objs-$(CONFIG_CS_QOS) += entity/entity_qos.o
objs-$(CONFIG_CS_WIZARD) += entity/entity_wizard.o
objs-$(CONFIG_CS_SOAP) += entity/entity_soap.o
objs-$(CONFIG_CS_DNRD) += entity/entity_dnrd.o
objs-$(CONFIG_CS_PPPOE) += entity/entity_pppoe.o
objs-$(CONFIG_CS_NTPCLIENT) += entity/entity_ntpclient.o
objs-$(CONFIG_CS_SSHD) += entity/entity_sshd.o
objs-$(CONFIG_CS_DDNS) += entity/entity_ddns.o
objs-$(CONFIG_CS_OPENVPN) += entity/entity_openvpn.o
objs-$(CONFIG_CS_ROUTING) += entity/entity_routing.o
objs-$(CONFIG_CS_IPCSERVER) += entity/entity_ipcserver.o


# Client Objects
client_objs = ipc_share.o ipc_client.o

NVDIR = $(ROOTDIR)/lib/libnvram

#LDFLAGS += -T linker_mips.lds -L$(ROOTDIR)/lib/ -lnvram -lz -lshared
LDFLAGS += -T linker_mips.lds -lset -lnvram -lz -lshared

EXTRA_INCLUDE := -I. -I$(ROOTDIR)/lib/zlib -I$(NVDIR) -I$(ROOTDIR)/lib/libshared -I$(ROOTDIR)/lib/libset

#ifdef CONFIG_CS_SWITCH
EXTRA_INCLUDE += -I$(ROOTDIR)/$(LINUXDIR)/drivers/flash -I$(ROOTDIR)/$(LINUXDIR)/drivers/net/raeth -I$(ROOTDIR)/$(LINUXDIR)/drivers/char
#endif

CFLAGS += $(EXTRA_INCLUDE) -DENABLE_PIDFILE


cs_client: $(client_objs)
	$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)

#$(CC) -o $@ $^ $(CFLAGS) $(LDFLAGS) $(LDLIBS)

config_server: $(objs-y)
	$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)

romfs:
	$(ROMFSINST) config_server /usr/sbin
	$(ROMFSINST) cs_client /usr/sbin


.PHONY: menuconfig
menuconfig:
	$(MAKE) -C $(CUR_PATH)/scripts/lxdialog all
	@HELP_FILE=$(CUR_PATH)/scripts/Configure.help \
		$(CONFIG_SHELL) $(CUR_PATH)/scripts/Menuconfig config.in
	@if [ ! -f .config ]; then \
		echo; \
		echo "You have not saved your config, please re-run make config"; \
		echo; \
		exit 1; \
	 fi

config_error:
	@echo "*************************************************"
	@echo "You have not run make cs_menuconfig."
	@echo "The build sequence for this source tree is:"
	@echo "1. 'make cs_menuconfig'"
	@echo "*************************************************"
	@exit 1

oldconfig:
	$(CONFIG_SHELL) $(CUR_PATH)/scripts/Configure -d config.in

