
#	$RCSfile: Makefile,v $
#	$Revision: 2.5 $
#	$Author: ambrose $
#	$Date: 1996/11/12 10:35:02 $

#############################################################################
#
# YOU ARE NOT SUPPOSED TO MAKE CHANGES TO ANYTHING BELOW
#
#############################################################################

#
# the program files

PROGS=	dbupdate newdb showdb indexdb whoisd syncdb

#
# additional (stand alone) client programs that don't need the libs

TOOLS=  whois networkupdate cryptpw

#




#
# programs that run with perl5

PERL5PROGS= newdb test $(TOOLS)  

#
# help programs that are used to generate the software&distribution

HELPS=  getlib.pl

#
# the library routines

LIBS=	rconf.pl dbopen.pl dbclose.pl dblock.pl donetdbm.pl enread.pl \
	addkey.pl enkeys.pl enukey.pl handle.pl misc.pl entype.pl syslog.pl \
	dbmatch.pl enwrite.pl adderror.pl dbadd.pl defines.pl \
	encmp.pl enparse.pl syntax.pl time.pl whoisqry.pl \
	updatecheck.pl rfc822.pl notify.pl defaults.pl template.pl \
	maintainer.pl hiermnt.pl net2net.pl serial.pl cldb.pl processdata.pl


BINMODE= 555
LIBMODE= 444
SRCMODE= 644

.SUFFIXES: .pl

default:
	@echo "-- DO NOT RUN MAKE HERE, ONE DIRECTORY UP PLEASE --"

.pl:	
	@for i in $(PERL5PROGS) ; do if [ $$i = $@ ] ; then break ; fi ; done ; \
	                                             \
	if [ $$i = $@ ] ; then                       \
	   PERL=$(PERL5);                            \
	else                                         \
	   PERL=$(PERL);                             \
	fi;                                          \
	                                             \
	echo '#!'$$PERL > $@;                        \
	                                             \
	$$PERL getlib.pl $<                          \
	     SRCDIR='$(SRCDIR)'                      \
	     BINDIR='$(BINDIR)'                      \
	     LIBDIR='$(SRCDIR)'                      \
	     DEFCONFIG='$(DEFCONFIG)'                \
	     AF_INETVALUE='$(AF_INETVALUE)'          \
	     SOCKADDRVALUE='$(SOCKADDRVALUE)'        \
	     SOCK_STREAMVALUE='$(SOCK_STREAMVALUE)'  \
	     WNOHANGVALUE='$(WNOHANGVALUE)'          \
	     WHOISHOST='$(WHOISHOST)'	             \
	     PERL5OPTIONS='$(PERL5OPTIONS)'          \
	     >> $@;                                  \
	                                             \
	$$PERL -c $@ || ( touch $<; false )
	
	@chmod 755 $@


all:	$(PROGS) $(TOOLS)  


install: all
	@[ -d $(BINDIR) ] || mkdir -p $(BINDIR)
	@[ -d $(TOOLSDIR) ] || mkdir -p $(TOOLSDIR)
	@[ -d $(LIBDIR) ] || mkdir -p $(LIBDIR)
	
	@for i in $(PROGS)   ; do \
		echo installing $$i ... ; \
		[ ! -f $(BINDIR)/$$i ] || chmod 755 $(BINDIR)/$$i ; \
		$(PERL) -ne 's#$(SRCDIR)#$(LIBDIR)#g; print;' < $$i > $(BINDIR)/$$i ; \
		chmod $(BINMODE) $(BINDIR)/$$i ; \
	done
	
	@for i in $(TOOLS) ; do \
		echo installing $$i ... ; \
		[ ! -f $(TOOLSDIR)/$$i ] || chmod 755 $(TOOLSDIR)/$$i ; \
		$(PERL) -ne 's#$(SRCDIR)#$(LIBDIR)#g; print;' < $$i > $(TOOLSDIR)/$$i ; \
		chmod $(BINMODE) $(TOOLSDIR)/$$i ; \
	done
	
	#
	# install libs by using 'getlib.pl':
	#
	# - do the perl5 patches
	# - do the Solaris patches if SOCK_STREAMVALUE==2

	@for i in $(LIBS) ; do \
	    echo installing $$i ... ; \
	    [ ! -f $(LIBDIR)/$$i ] || chmod 644 $(LIBDIR)/$$i ; \
	    $(PERL) getlib.pl $$i \
	        	SOCK_STREAMVALUE='$(SOCK_STREAMVALUE)'  \
			> $(LIBDIR)/$$i ; \
	    chmod $(LIBMODE) $(LIBDIR)/$$i ; \
	done
	
	@echo make install done.


uninstall:
	@cd $(BINDIR) && rm -f $(PROGS) && \
	 cd $(TOOLSDIR) && rm -f $(TOOLS) && \
	 cd $(LIBDIR) && rm -f $(LIBS)


distribution:
	@[ -d $(DISTDIR) ] || mkdir -p $(DISTDIR)
	@for i in tmp etc bin data lib man src doc locks serials serials/old serials/incoming serials/current log log/err log/upd log/ack log/audit log/qry ; do \
		[ -d $(DISTDIR)/$$i ] || mkdir $(DISTDIR)/$$i; \
	done
	@if [ -z "$(DISTDIR)" -o \
	     "$(DISTDIR)" = "$(SRCDIR)" -o \
	     "$(DISTDIR)" = "." ] ; then exit 1 ; fi
	@rm -f $(DISTDIR)/[A-Z][A-Z]* $(DISTDIR)/src/*pl $(DISTDIR)/src/Makefile $(DISTDIR)/etc/ripedb.config* $(DISTDIR)/man/*.[0-9] $(DISTDIR)/doc/*.doc $(DISTDIR)/doc/howto $(DISTDIR)/Makefile
	@for i in $(PROGS) $(TOOLS) ; do \
		install -c -m $(SRCMODE) $$i.pl $(DISTDIR)/src ; \
	done
	@install -c -m $(SRCMODE) $(HELPS) $(LIBS) $(DISTDIR)/src
	@perl -ne 's/^\s*RIPETOOLS.*$$//;' \
	       -e 's/^#\s*RIPE tools.*$$//;' \
	       -e 's/\$$\s*\(\s*RIPETOOLS\s*\)/ /;' \
	       -e 'print;' $(SRCMAKEFILE) > $(DISTDIR)/src/Makefile;
	@chmod $(LIBMODE) $(DISTDIR)/src/Makefile;
	@perl -ne "s#$(TOPDIR)#/topdir#g;" \
	      -e 'print;' $(TOPMAKEFILE) > $(DISTDIR)/Makefile;
	@chmod $(SRCMODE) $(DISTDIR)/Makefile;
	@perl -ne 's/^\s*OVERRIDECRYPTEDPW\s+.*$$/OVERRIDECRYPTEDPW   *\n/;' \
	      -e 's/^\s*WHOISUPDFROM\s+.*$$/\# WHOISUPDFROM  IPaddress\n/;' \
	      -e 's/^\s*GETUPDATESFROM\s+.*$$/\# GETUPDATESFROM  IPaddress\n/;' \
	      -e 's/^\s*NOMATCH\s+\%\s+(No.*\n)?/\% NOMATCH $${1}/;' \
	      -e 's/^\s*NOMATCH\s*([^\%\s][^\s]+[^N\s][^o\s].*)?$$//;' \
	      -e 's/^\s*CANUPD\s+.*$$/CANUPD NONE\n/;' \
	      -e 's/^\s*OVERFLOWSIZE\s+.*$$/OVERFLOWSIZE 512\n/;' \
	      -e 's/^\s*TESTMODE\s+\d+\s*/TESTMODE  0\n/;' \
	      -e 's/ripe\-dbm/registry-dbm/g;' \
	      -e 's/ripe\.net/inter.net/g;' \
	      -e "s#$(TOPDIR)#/topdir#g;" \
	      -e 's/^\s*(\S+)(TXT|HEADER|BANNER|CKSIG)(.*)RIPE(.*)$$/$${1}$${2}$${3}\*UNCONFIGURED\* RIPE MIRROR$${4}/;' \
	      -e 's/^\s*(\S+)(BANNER)(.*)$$/\# $${1}$${2}$${3}/;' \
	      -e 's/^\s*(\S*)SERIAL(\S*)DIR(.*)$$/\# $${1}SERIAL$${2}DIR$${3}/;' \
	      -e 'print;' $(DEFCONFIG) >$(DISTDIR)/etc/ripedb.config
	@chmod $(SRCMODE) $(DISTDIR)/etc/ripedb.config;
	@install -c -m $(LIBMODE) $(TOPDIR)/man/*.[0-9] $(DISTDIR)/man
	@install -c -m $(LIBMODE) $(TOPDIR)/doc/HOWTO $(TOPDIR)/doc/*.doc $(DISTDIR)/doc
	@install -c -m $(LIBMODE) $(TOPDIR)/README $(TOPDIR)/INSTALL $(TOPDIR)/RELEASE-NOTES $(TOPDIR)/SECONDARIES $(DISTDIR)
	@(cd $(TOPDIR); tar cf - $(CURRENTNAME) | gzip -9 -c > $(TOPDIR)/$(CURRENTNAME).tar.gz)


clean:
	rm -f $(PROGS) $(TOOLS) core
