#
# $Id: Makefile,v 1.4 2011/11/29 05:41:34 txbsd Exp $
#

EMULATOR    ?= NO

CONFIGMAKE = ../../Config.make
-include $(CONFIGMAKE)

LD	= $(LINK)
AR	= $(LIBRARIAN)
MAKE	?= gmake
CP	?= cp -pf
RM	?= rm -rf

ifeq ($(EMULATOR), NO)
	CROSS_BUILD ?= 1
else
	CROSS_BUILD ?= 0
endif
SYSROOT ?= /usr/local
DEBUG_LEVEL ?= 0

srcdir=	.

ifeq ($(_TARGET_),_KMN_)
#CFLAGS=	-DDONE=1 -DBITS_PER_LONG=32 -I/home/troy/97401-2.6.12-2.1-be/uClibc/include -I/home/troy/97401-2.6.12-2.1-be/linux-2.6.x/include -I/home/troy/97401-2.6.12-2.1-be/linux-2.6.x/include/asm/mach-generic -I/opt/toolchains/uclibc-crosstools_linux-2.6.12.0_gcc-3.4.2_uclibc-0.9.28-20060113/bin/../mips-linux/include -I$(srcdir) -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DHAVE_GETADDRINFO=1 -DHAVE_GETNAMEINFO=1 -DHAVE_IF_NAMETOINDEX=1 -DHAVE_STRLCPY=1 -DHAVE_STRLCAT=1 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FCNTL_H=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYSLOG_H=1 -DHAVE_UNISTD_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_STRUCT_TM_TM_ZONE=1 -DHAVE_TM_ZONE=1 -DGETPGRP_VOID=1 -DSETPGRP_VOID=1 -DRETSIGTYPE=void -DHAVE_MKTIME=1 -DHAVE_SELECT=1 -DHAVE_SOCKET=1 -DHAVE_ANSI_FUNC=1 -DHAVE_STDARG_H=1 
 CFLAGS +=
else
 CFLAGS += -D_GNU_SOURCE
endif

CFLAGS += 	-DDONE=1 -DBITS_PER_LONG=32 -I$(srcdir) \
	-DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\"\\ \
	-DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DHAVE_GETADDRINFO=1 \
	-DHAVE_GETNAMEINFO=1 -DHAVE_IF_NAMETOINDEX=1 -DHAVE_STRLCPY=1 -DHAVE_STRLCAT=1 \
	-DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 \
	-DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 \
	-DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FCNTL_H=1 -DHAVE_SYS_IOCTL_H=1 \
	-DHAVE_SYS_TIME_H=1 -DHAVE_SYSLOG_H=1 -DHAVE_UNISTD_H=1 -DTIME_WITH_SYS_TIME=1 \
	-DHAVE_STRUCT_TM_TM_ZONE=1 -DHAVE_TM_ZONE=1 -DGETPGRP_VOID=1 -DSETPGRP_VOID=1 \
	-DRETSIGTYPE=void -DHAVE_MKTIME=1 -DHAVE_SELECT=1 -DHAVE_SOCKET=1 -DHAVE_ANSI_FUNC=1 \
	-DHAVE_STDARG_H=1 
CFLAGS += -O2 -fno-strict-aliasing

ifneq ($(DEBUG_LEVEL),0)
	CFLAGS += -DDHCP6C_DEBUG
endif

LDFLAGS=
LIBOBJS= ifaddrs$U.o
LIBS=	
#CC=	mipsel-linux-gcc
#CC=	gcc
#YACC=	bison -y
YACC=	bison -y
LEX=	flex
#TARGET=	dhcp6c dhcp6s
#TARGET=	dhcp6c 
#DESTDIR=
LDLIBS =

#INSTALL=/usr/bin/install -c
#INSTALL_PROGRAM=${INSTALL}
#INSTALL_DATA=${INSTALL} -m 644
#prefix=	/usr/local
#exec_prefix=	${prefix}
#bindir=	${exec_prefix}/bin
#sbindir=${exec_prefix}/sbin
#mandir=	${prefix}/man
#initdir=/etc/rc.d/init.d
#etc=/etc
#sysconfigdir=/etc/sysconfig
#CHKCONFIG=/sbin/chkconfig

CFLAGS+= -Wall -DCONF_DH6OPT_DNS_RESOLVERS=23 \
	-DCONF_DH6OPT_DOMAIN_LIST=24 \
	-DCONF_DH6OPT_IA_PD=25 \
	-DCONF_DH6OPT_IAPREFIX=26 

COMMONGENSRCS=lease_token.c
#CLIENTGENSRCS=client6_parse.c client6_token.c dad_token.c ra_token.c \
#		resolv_token.c radvd_token.c
CLIENTGENSRCS=client6_parse.c client6_token.c dad_token.c \
		resolv_token.c radvd_token.c
#SERVERGENSRCS=server6_parse.c server6_token.c 
CLIENTOBJS=	dhcp6c.o common.o config.o timer.o client6_addr.o \
		hash.o lease.o netlink.o res_comp.o ns_name.o ns_netint.o \
	$(CLIENTGENSRCS:%.c=%.o) $(COMMONGENSRCS:%.c=%.o)
#SERVOBJS=	dhcp6s.o common.o timer.o hash.o lease.o \
#		server6_conf.o server6_addr.o res_comp.o ns_name.o ns_netint.o \
#	$(SERVERGENSRCS:%.c=%.o) $(COMMONGENSRCS:%.c=%.o)

CLEANFILES=cf.tab.h cp.tab.h sf.tab.h dad_token.c ra_token.c client6_token.c client6_parse.c \
		server6_parse.c server6_token.c lease_token.c resolv_token.c radvd_token.c

TARGET_SDIR = $(SYSROOT)/sbin
TARGET_EDIR = $(SYSROOT)/etc
MODULE		= dhcp6c
MODULE_OBJ	= $(MODULE).out
MODULE_DEP	= $(MODULE).dpd
MODULE_CONF = $(MODULE).conf
TARGET_OBJS	= dhcp6c.o common.o config.o timer.o client6_addr.o \
			hash.o lease.o netlink.o res_comp.o ns_name.o ns_netint.o \
			$(CLIENTGENSRCS:%.c=%.o) $(COMMONGENSRCS:%.c=%.o)

.PHONY: all install

all: depend $(TARGET_OBJS) $(MODULE_OBJ) install

$(MODULE_OBJ): $(TARGET_OBJS)
	$(CC) -o $@ $(TARGET_OBJS) $(LDFLAGS) $(LDLIBS)
#	$(STRIP) $(MODULE_OBJ)

install: $(MODULE_CONF)
	sudo $(CP) $(MODULE_OBJ) $(TARGET_SDIR)
	sudo $(CP) $(MODULE_CONF) $(TARGET_EDIR)

.PHONY: clean cleanall uninstall

clean:
	$(RM) *.o
	$(RM) $(MODULE_OBJ)
	$(RM) $(CLEANFILES)

cleanall: clean
	sudo $(RM) $(TARGET_SDIR)/$(MODULE_OBJ)
	sudo $(RM) $(TARGET_EDIR)/$(MODULE_CONF)

.c.o : $(TARGET_OBJS)
	$(CC) -c $< $(CFLAGS)

TARGET_SRCS = $(patsubst %.o,%.c,$(TARGET_OBJS))
$(eval $(call includedepend,$(MODULE_DEP)))
depend: $(MODULE_DEP)
$(MODULE_DEP): $(TARGET_SRCS)


#all:	$(TARGET) 
#dhcp6c:	$(CLIENTOBJS) $(LIBOBJS)
#	$(CC) $(LDFLAGS) -o dhcp6c $(CLIENTOBJS) $(LIBOBJS) $(LIBS) 
#	$(CP) $(MODULE_OBJ) $(TARGET_WDIR)
#dhcp6s:	$(SERVOBJS) $(LIBOBJS)
#	$(CC) $(LDFLAGS) -o dhcp6s $(SERVOBJS) $(LIBOBJS) $(LIBS) 

dad_token.c: dad_token.l
	$(LEX) -Pifyy dad_token.l
	mv lex.ifyy.c $@

ra_token.c: ra_token.l
	$(LEX) -Prayy ra_token.l
	mv lex.rayy.c $@

resolv_token.c: resolv_token.l
	$(LEX) -Prvyy resolv_token.l
	mv lex.rvyy.c $@

radvd_token.c: radvd_token.l
	$(LEX) -Prdyy radvd_token.l
	mv lex.rdyy.c $@

client6_parse.c cp.tab.h: client6_parse.y
	$(YACC) -d -p cpyy client6_parse.y
	mv y.tab.h cp.tab.h
	mv y.tab.c client6_parse.c

client6_token.c: client6_token.l
	$(LEX) -Pcpyy client6_token.l
	mv lex.cpyy.c $@	

lease_token.c: lease_token.l
	$(LEX) -Plyy lease_token.l
	mv lex.lyy.c $@

#server6_parse.c sf.tab.h: server6_parse.y
#	$(YACC) -d -p sfyy server6_parse.y
#	mv y.tab.h sf.tab.h
#	mv y.tab.c server6_parse.c 

#server6_token.c: server6_token.l sf.tab.h
#	$(LEX) -Psfyy server6_token.l
#	mv lex.sfyy.c $@

#install::
#	$(INSTALL) -d $(DESTDIR)$(sbindir)
#	$(INSTALL) -d $(DESTDIR)/sbin
#	$(INSTALL_PROGRAM) -s -o bin -g bin dhcp6s $(DESTDIR)$(sbindir)
#	$(INSTALL_PROGRAM) -s -o bin -g bin dhcp6c $(DESTDIR)/sbin
#	$(INSTALL) -d $(DESTDIR)$(mandir)/man8 $(DESTDIR)$(mandir)/man5
#	$(INSTALL_DATA) -o bin -g bin dhcp6c.8 $(DESTDIR)$(mandir)/man8/
#	$(INSTALL_DATA) -o bin -g bin dhcp6s.8 $(DESTDIR)$(mandir)/man8/
#	$(INSTALL_DATA) -o bin -g bin dhcp6c.conf.5 $(DESTDIR)$(mandir)/man5/
#	$(INSTALL_DATA) -o bin -g bin dhcp6s.conf.5 $(DESTDIR)$(mandir)/man5/
#	$(INSTALL) -d  $(DESTDIR)$(initdir)
#	$(INSTALL_PROGRAM) -o root -g root dhcp6s.sh $(DESTDIR)$(initdir)/dhcp6s
#	$(INSTALL) -d  $(DESTDIR)/etc/sysconfig
#	$(INSTALL_DATA) -o bin -g bin dhcp6s.sysconfig  $(DESTDIR)/etc/sysconfig/dhcp6s

#rh_install:: install
#	$(INSTALL) -d $(initdir)
#	$(INSTALL_PROGRAM) -o root -g root dhcp6s.sh $(initdir)/dhcp6s
#	$(INSTALL_PROGRAM) -o root -g root dhcp6c.sh $(initdir)/dhcp6c
#	$(CHKCONFIG) --add dhcp6s
#	$(CHKCONFIG) --add dhcp6c

#uninstall::
#	for progs in $(TARGET); do \
#		/bin/rm -f $(sbindir)/$$progs; \
#	done
#	/bin/rm -f $(mandir)/man8/dhcp6c.8
#	/bin/rm -f $(mandir)/man8/dhcp6s.8
#	/bin/rm -f $(mandir)/man5/dhcp6c.conf.5
#	/bin/rm -f $(mandir)/man5/dhcp6s.conf.5

#rh_uninstall:: uninstall
#	$(CHKCONFIG) --del dhcp6s
#	$(CHKCONFIG) --del dhcp6c
#	/bin/rm -f $(initdir)/dhcp6s
#	/bin/rm -f $(initdir)/dhcp6c

#includes::

#clean::
#	/bin/rm -f *.o $(TARGET) $(CLEANFILES) $(GENSRCS)

#distclean:: clean
#	/bin/rm -f Makefile config.cache config.log config.status .depend 

#depend:
#	mkdep ${CFLAGS:M-[ID]*} $(srcdir)/*.c

#romfs:
#	$(ROMFSINST) -e CONFIG_USER_DHCPCV6_DHCPCV6 dhcp6c	/usr/bin/dhcp6c
#	$(ROMFSINST) -e CONFIG_USER_DHCPSV6_DHCPSV6 dhcp6s 	/usr/bin/dhcp6s
#	$(ROMFSINST) -e CONFIG_USER_DHCPSV6_DHCPSV6 dhcp6s.conf /etc/dhcp6s.conf



