# Makefile for ipif/udptunnel stuff

# Copyright (C) 1999-2000 Ian Jackson
#
# This is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with userv-utils; if not, write to the Free Software
# Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
# $Id: Makefile,v 1.16 2000/12/11 02:46:04 ian Exp $

OPTIMISE=	-O2
CFLAGS=		-Wall -Wmissing-prototypes -Wstrict-prototypes -Wpointer-arith \
		-Wwrite-strings -g $(OPTIMISE) -D_GNU_SOURCE \
		$(XCFLAGS)

etcdir=		/etc
prefix=		/usr/local
bindir=		$(prefix)/bin
vardir=		/var

libdir=		$(prefix)/lib
sharedir=	$(prefix)/share
libuserv=	$(libdir)/userv
shareuserv=	$(sharedir)/userv
varlib=		$(vardir)/lib
varlibuserv=	$(varlib)/userv
varlibvpn=	$(varlibuserv)/vpn

etcuserv=	$(etcdir)/userv
etcvpn=		$(etcdir)/userv/vpn
services=	$(etcuserv)/services.d

PROGRAM_TARGETS=	udptunnel-forwarder udptunnel-reconf
TARGETS=		service blowfishtest $(PROGRAM_TARGETS)
PROGRAMS=		udptunnel $(PROGRAM_TARGETS)

MECHFILES=	null pkcs5 timestamp sequence blowfish
MECHOBJS=	$(foreach m, $(MECHFILES), mech-$m.o)

OBJS_FORWARD=	forwarder.o $(MECHOBJS) blowfish.o automech.c utils.c
OBJS_BFTEST=	blowfishtest.o blowfish.o hex.o

all:		$(TARGETS)

install:	all
		mkdir -p $(libuserv) $(services) $(etcvpn) \
			$(varlibvpn) $(shareuserv)
		cp -b service $(libuserv)/ipif
		cp -b $(PROGRAMS) $(bindir)/.
		cp ipif $(services)/ipif:new
		set -e; cd $(services); test -f ipif || mv ipif:new ipif
		cp *.example $(etcvpn)/.
		cp udptunnel-vpn-config.m4 udptunnel-vpn-defaults \
			$(shareuserv)/.

udptunnel-reconf:	udptunnel-reconf.pl Makefile
		perl -pe '	\
	print "\
\$$shareuserv= \"$(shareuserv)\";\n\
\$$etcvpn= \"$(etcvpn)\";\n\
\$$varlibvpn= \"$(varlibvpn)\";\n" if m#^\# \@\@\@\-#;	\
	$$_="" if m/^\# \@\@\@\-/ .. m/^\# \-\@\@\@/;	\
		'	\
			<$< >$@.new
		chmod +x $@.new
		mv -f $@.new $@


udptunnel-forwarder:	$(OBJS_FORWARD)
		$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJS_FORWARD)

blowfishtest:		$(OBJS_BFTEST)
		$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJS_BFTEST)

automech.h:		automechgen.sh Makefile
		./$< $(MECHFILES)

automech.c:		automech.h

clean:
		rm -f *.o core automech.[ch] *~ ./#*#

realclean distclean:	clean
		rm -f $(TARGETS)

forwarder.o $(MECHOBJS) automech.o utils.o:	forwarder.h automech.h
blowfish.o mech-blowfish.o blowfishtest.o:	blowfish.h
blowfishtest.o hex.o:				hex.h
