# Makefile.  Generated from Makefile.in by configure.
#***********************************************************************
#
# Makefile
#
# Makefile for Roaring Penguin's Linux user-space PPPoE client.
#
# Copyright (C) 2000 Roaring Penguin Software Inc.
#
# This program may be distributed according to the terms of the GNU
# General Public License, version 2 or (at your option) any later version.
#
# LIC: GPL
#
# $Id$
#***********************************************************************

# Version is set ONLY IN THE MAKEFILE!  Don't delete this!
VERSION=3.11

DEFINES=
prefix=/usr
exec_prefix=${prefix}
mandir=${prefix}/share/man
docdir=/usr/share/doc/rp-pppoe-$(VERSION)
install=/usr/bin/install -c
install_dir=/usr/bin/install -c -d
sbindir=${exec_prefix}/sbin

# Plugin for pppd on Linux
LINUX_KERNELMODE_PLUGIN=rp-pppoe.so
#PPPD_INCDIR=../../ppp-2.4.5

# Licensed version
LIC_INCDIR=
LIC_LIBDIR=
LIC_LIB=
LIC_DEFINE=

# PPPoE relay -- currently only supported on Linux
PPPOE_RELAY=pppoe-relay

# Program paths
PPPOE_PATH=$(sbindir)/pppoe
PPPD_PATH=pppd

# Include ServPoET version if we're building for ServPoET


# Kernel-mode plugin gets installed here.
PLUGIN_DIR=/etc/ppp/plugins
PLUGIN_PATH=$(PLUGIN_DIR)/rp-pppoe.so

# Configuration file paths
PPPOESERVER_PPPD_OPTIONS=/etc/ppp/pppoe-server-options

PATHS='-DPPPOE_PATH="$(PPPOE_PATH)"' '-DPPPD_PATH="$(PPPD_PATH)"' \
	'-DPLUGIN_PATH="$(PLUGIN_PATH)"' \
	'-DPPPOE_SERVER_OPTIONS="$(PPPOESERVER_PPPD_OPTIONS)"'

CFLAGS= -g -O2 -fno-strict-aliasing -Wall -Wstrict-prototypes $(LIC_INCDIR) $(DEFINES) $(LIC_DEFINE) $(PATHS) -Ilibevent
CFLAGS	+= -DUSE_HT_SYSLOG -I${WORKSPACE}/necat-sw/driver
TARGETS=pppoe_cli
MST_TEST=test_mst
PPPOE_SERVER_LIBS=$(LIC_LIBDIR) $(LIC_LIB)
LDFLAGS=  -lhts

all: $(TARGETS) $(MST_TEST)
	@echo ""
	@echo "Type 'make install' as root to install the software."

# pppox client
CLI_INCS	= config.h pppoe.h \
			plugin.h \
			../../dom_sock.h ../../ctl_comm.h

CLI_OBJS	= plugin.o discovery.o if.o common.o \
			slv_main.o dom_sock.o ctl_comm.o utils.o


MST_INCS	= ../../dom_sock.h ../../ctl_comm.h

MST_OBJS	= mst_test.o dom_sock.o ctl_comm.o



$(TARGETS):	$(CLI_OBJS)
	$(CC) $(CFLGAS) $(LDFLAGS) '-DVERSION="$(VERSION)"' -o $@ $(CLI_OBJS)



$(MST_TEST):	$(MST_OBJS)
	$(CC) $(CFLGAS) $(LDFLAGS) '-DVERSION="$(VERSION)"' -o $@ $(MST_OBJS)


$(CLI_OBJS):	$(CLI_INCS)

$(MST_OBJS):	$(MST_INCS)


dom_sock.o:	../../dom_sock.c
	$(CC) $(CFLAGS) -c -o $@ $<

ctl_comm.o:	../../ctl_comm.c
	$(CC) $(CFLAGS) -c -o $@ $<


install: all
	-mkdir -p $(DESTDIR)$(sbindir)
	$(install) -m 755  $(TARGETS) $(DESTDIR)$(sbindir)
	$(install) -m 755 ../scripts/pppoe-connect $(DESTDIR)$(sbindir)
	$(install) -m 755 ../scripts/pppoe-start $(DESTDIR)$(sbindir)
	$(install) -m 755 ../scripts/pppoe-status $(DESTDIR)$(sbindir)
	$(install) -m 755 ../scripts/pppoe-stop $(DESTDIR)$(sbindir)
	$(install) -m 755 ../scripts/pppoe-setup $(DESTDIR)$(sbindir)
	$(install) -m 755 ../scripts/pppoe-user $(DESTDIR)$(sbindir)
	$(install) -m 755 ../scripts/pppoe-password $(DESTDIR)$(sbindir)
	$(install) -m 755 ../scripts/pppoe-ip-addr $(DESTDIR)$(sbindir)
	$(install) -m 755 ../scripts/pppoe-dns $(DESTDIR)$(sbindir)
	$(install) -m 755 ../scripts/pppoe-auth $(DESTDIR)$(sbindir)
	$(install) -m 755 ../scripts/pppoe-echo-enable $(DESTDIR)$(sbindir)
	$(install) -m 755 ../scripts/pppoe-echo-retry-int $(DESTDIR)$(sbindir)
	$(install) -m 755 ../scripts/pppoe-echo-retry-num $(DESTDIR)$(sbindir)
	$(install) -m 755 ../scripts/pppoe-keep-alive $(DESTDIR)$(sbindir)
	$(install) -m 755 ../scripts/pppoe-linkdown $(DESTDIR)$(sbindir)
	-mkdir -p $(DESTDIR)$(docdir)
	$(install) -m 644 ../doc/CHANGES $(DESTDIR)$(docdir)
	$(install) -m 644 ../doc/KERNEL-MODE-PPPOE $(DESTDIR)$(docdir)
	$(install) -m 644 ../doc/HOW-TO-CONNECT $(DESTDIR)$(docdir)
	$(install) -m 644 ../doc/LICENSE $(DESTDIR)$(docdir)
	$(install) -m 644 ../README $(DESTDIR)$(docdir)
	$(install) -m 644 ../SERVPOET $(DESTDIR)$(docdir)
	$(install) -m 644 ../configs/pap-secrets $(DESTDIR)$(docdir)
	-mkdir -p $(DESTDIR)$(mandir)/man8
	for i in $(TARGETS) ; do \
		if test -f ../man/$$i.8 ; then \
			$(install) -m 644 ../man/$$i.8 $(DESTDIR)$(mandir)/man8 || exit 1; \
		fi; \
	done
	$(install) -m 644 ../man/pppoe-start.8 $(DESTDIR)$(mandir)/man8
	$(install) -m 644 ../man/pppoe-stop.8 $(DESTDIR)$(mandir)/man8
	$(install) -m 644 ../man/pppoe-status.8 $(DESTDIR)$(mandir)/man8
	$(install) -m 644 ../man/pppoe-connect.8 $(DESTDIR)$(mandir)/man8
	$(install) -m 644 ../man/pppoe-setup.8 $(DESTDIR)$(mandir)/man8
	-mkdir -p $(DESTDIR)$(mandir)/man5
	$(install) -m 644 ../man/pppoe.conf.5 $(DESTDIR)$(mandir)/man5
	-mkdir -p $(DESTDIR)/etc/ppp
	-mkdir -p $(DESTDIR)$(PLUGIN_DIR)
	@for i in pppoe.conf firewall-standalone firewall-masq ; do \
		if [ ! -f $(DESTDIR)/etc/ppp/$$i ] ; then \
			$(install) -m 644 ../configs/$$i $(DESTDIR)/etc/ppp ; \
		else \
			echo "NOT overwriting existing $(DESTDIR)/etc/ppp/$$i" ;\
			$(install) -m 644 ../configs/$$i $(DESTDIR)/etc/ppp/$$i-$(VERSION) ;\
		fi ;\
	done
	@echo ""
	@echo "Type 'pppoe-setup' to configure the software."

servpoet-tgz: distro-servpoet
	cd .. && tar cvf servpoet-$(VERSION)$(BETA).tar servpoet-$(VERSION)$(BETA)
	gzip -f -v -9 ../servpoet-$(VERSION)$(BETA).tar
	rm -rf ../servpoet-$(VERSION)$(BETA)

tgz: distro
	cd .. && tar cvf rp-pppoe-$(VERSION)$(BETA).tar rp-pppoe-$(VERSION)$(BETA)
	gzip -f -v -9 ../rp-pppoe-$(VERSION)$(BETA).tar
	rm -rf ../rp-pppoe-$(VERSION)$(BETA)

distro-servpoet: distro
	cp ../servpoet.spec ../rp-pppoe-$(VERSION)$(BETA)
	$(MAKE) -C licensed-only distro VERSION=$(VERSION) BETA=$(BETA)
	mv ../rp-pppoe-$(VERSION)$(BETA) ../servpoet-$(VERSION)$(BETA)

distro:
	rm -rf ../rp-pppoe-$(VERSION)$(BETA)
	mkdir ../rp-pppoe-$(VERSION)$(BETA)
	for i in README SERVPOET go go-gui rp-pppoe.spec ; do \
		cp ../$$i ../rp-pppoe-$(VERSION)$(BETA) || exit 1; \
	done
	mkdir ../rp-pppoe-$(VERSION)$(BETA)/gui
	for i in en.msg ja.msg Makefile.in tkpppoe.in wrapper.c tkpppoe.1 pppoe-wrapper.1 ; do \
		cp ../gui/$$i ../rp-pppoe-$(VERSION)$(BETA)/gui || exit 1; \
	done
	mkdir ../rp-pppoe-$(VERSION)$(BETA)/gui/html
	for i in mainwin-busy.png mainwin-nonroot.png mainwin.png props-advanced.png props-basic.png props-nic.png props-options.png tkpppoe.html ; do \
		cp ../gui/html/$$i ../rp-pppoe-$(VERSION)$(BETA)/gui/html || exit 1; \
	done
	mkdir ../rp-pppoe-$(VERSION)$(BETA)/configs
	for i in firewall-masq firewall-standalone pap-secrets pppoe-server-options pppoe.conf ; do \
		cp ../configs/$$i ../rp-pppoe-$(VERSION)$(BETA)/configs || exit 1; \
	done
	mkdir ../rp-pppoe-$(VERSION)$(BETA)/doc
	for i in CHANGES KERNEL-MODE-PPPOE HOW-TO-CONNECT LICENSE PROBLEMS ; do \
		cp ../doc/$$i ../rp-pppoe-$(VERSION)$(BETA)/doc || exit 1; \
	done
	mkdir ../rp-pppoe-$(VERSION)$(BETA)/man
	for i in pppoe-connect.8 pppoe-setup.8 pppoe-start.8 pppoe-status.8 pppoe-stop.8 pppoe-server.8 pppoe-sniff.8 pppoe.8 pppoe-relay.8 pppoe.conf.5 ; do \
		cp ../man/$$i ../rp-pppoe-$(VERSION)$(BETA)/man || exit 1; \
	done
	mkdir ../rp-pppoe-$(VERSION)$(BETA)/scripts
	for i in pppoe-connect.in pppoe-init-suse.in pppoe-init-turbolinux.in pppoe-init.in pppoe-setup.in pppoe-start.in pppoe-stop.in pppoe-status ; do \
		cp ../scripts/$$i ../rp-pppoe-$(VERSION)$(BETA)/scripts || exit 1; \
	done
	mkdir ../rp-pppoe-$(VERSION)$(BETA)/src
	for i in Makefile.in install-sh common.c config.h.in configure configure.in debug.c discovery.c if.c md5.c md5.h ppp.c pppoe-server.c pppoe-sniff.c pppoe.c pppoe.h pppoe-server.h plugin.c relay.c relay.h ; do \
		cp ../src/$$i ../rp-pppoe-$(VERSION)$(BETA)/src || exit 1; \
	done
	mkdir ../rp-pppoe-$(VERSION)$(BETA)/src/libevent
	for i in Makefile.in event.c event.h event_tcp.c event_tcp.h eventpriv.h hash.c hash.h event_sig.c ; do \
		cp ../src/libevent/$$i ../rp-pppoe-$(VERSION)$(BETA)/src/libevent || exit 1; \
	done
	mkdir ../rp-pppoe-$(VERSION)$(BETA)/src/plugin

distro-beta: beta-check
	$(MAKE) distro BETA=-BETA-$(BETA)

tgz-beta: beta-check
	$(MAKE) tgz BETA=-BETA-$(BETA)

beta-check:
	@if test "$(BETA)" = "" ; then \
		echo "Usage: make distro-beta BETA=<x>"; \
		exit 1; \
	fi

rpms: tgz
	cp ../rp-pppoe-$(VERSION).tar.gz /usr/src/redhat/SOURCES
	gpg --detach-sign /usr/src/redhat/SOURCES/rp-pppoe-$(VERSION).tar.gz
	cd ..; \
	rpm -ba rp-pppoe.spec
	rpm --addsign /usr/src/redhat/SRPMS/rp-pppoe-$(VERSION)-1.src.rpm \
		/usr/src/redhat/RPMS/i386/rp-pppoe-$(VERSION)-1.i386.rpm \
		/usr/src/redhat/RPMS/i386/rp-pppoe-gui-$(VERSION)-1.i386.rpm

servpoet-rpms: servpoet-tgz
	cp ../servpoet-$(VERSION).tar.gz /usr/src/redhat/SOURCES
	cd .. && rpm -ba servpoet.spec

clean:
	rm -f *.o  $(TARGETS) pppoe-relay pppoe pppoe-sniff pppoe-server core rp-pppoe.so plugin/*.o plugin/libplugin.a *~
	test -f licensed-only/Makefile && $(MAKE) -C licensed-only clean || true
	test -f libevent/Makefile && $(MAKE) -C libevent clean || true
	test -f l2tp/Makefile && $(MAKE) -C l2tp clean || true

distclean: clean
	rm -f Makefile config.h config.cache config.log config.status
	rm -f libevent/Makefile
	rm -f ../scripts/pppoe-connect ../scripts/pppoe-start ../scripts/pppoe-stop ../scripts/pppoe-init ../scripts/pppoe-setup ../scripts/pppoe-init-suse ../scripts/pppoe-init-turbolinux

update-version:
	sed -e 's/^Version: .*$$/Version: $(VERSION)/' ../rp-pppoe.spec > ../rp-pppoe.spec.new && mv ../rp-pppoe.spec.new ../rp-pppoe.spec
	sed -e 's+^Source: .*$$+Source: http://www.roaringpenguin.com/pppoe/rp-pppoe-$(VERSION).tar.gz+' ../rp-pppoe.spec > ../rp-pppoe.spec.new && mv ../rp-pppoe.spec.new ../rp-pppoe.spec
	test -f ../servpoet.spec && sed -e 's/^Version: .*$$/Version: $(VERSION)/' ../servpoet.spec > ../servpoet.spec.new && mv ../servpoet.spec.new ../servpoet.spec || true
	test -f ../servpoet.spec && sed -e 's+^Source: .*$$+Source: http://www.roaringpenguin.com/pppoe/servpoet-$(VERSION).tar.gz+' ../servpoet.spec > ../servpoet.spec.new && mv ../servpoet.spec.new ../servpoet.spec || true

# Convenience target for David!  Don't try to use this one.
km:
	./configure --enable-plugin=/home/dfs/Archive/PPP/ppp-2.4.0.pppoe4-patched-dfs

licensed-only:
	$(MAKE) -C licensed-only all VERSION=$(VERSION) SERVPOET_VERSION=$(SERVPOET_VERSION)

l2tp: libevent/libevent.a
	$(MAKE) -C l2tp all

.PHONY: update-version

.PHONY: clean

.PHONY: distclean

.PHONY: rpms

.PHONY: licensed-only

.PHONY: distro

.PHONY: l2tp
