#define XCOMM	#
XCOMM
XCOMM Makefile --
XCOMM	Makefile for the finger program, 
XCOMM	generated from cpp-Makefile and config.h.
XCOMM
XCOMM Copyright (C) 1988,1990 Free Software Foundation, Inc.
XCOMM Copyright (C) 1991 International Computer Science Institute, Berkeley, USA.
XCOMM
XCOMM This file is part of GNU Finger.
XCOMM 
XCOMM GNU Finger is free software; you can redistribute it and/or modify
XCOMM it under the terms of the GNU General Public License as published
XCOMM by the Free Software Foundation; either version 1, or (at your
XCOMM option) any later version.
XCOMM
XCOMM GNU Finger is distributed in the hope that it will be useful, but
XCOMM WITHOUT ANY WARRANTY; without even the implied warranty of
XCOMM MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
XCOMM General Public License for more details.
XCOMM
XCOMM You should have received a copy of the GNU General Public License
XCOMM along with GNU Finger; see the file COPYING.  If not, write to the
XCOMM Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
XCOMM
XCOMM $Id: cpp-Makefile,v 1.63 1994/10/12 22:30:24 stolcke Exp $ ICSI (Berkeley)
XCOMM
SHELL = /bin/sh

XCOMM ifndef .PMAKE
.CURDIR = .
MAKEOBJDIR = .
XCOMM endif

#include "../config.h"

#ifndef  BinDir
#define BinDir /usr/local/bin
#endif

#ifndef EtcDir
#define EtcDir /usr/local/etc
#endif

#ifndef ManDir
#define ManDir /usr/local/man
#endif

#ifndef ManExt
#define ManExt l
#endif
#ifndef Man8Ext
#define Man8Ext 8
#endif

#ifdef __STDC__
#define path_concat_1(a,b) a ## / ## b
#define path_concat(a,b) path_concat_1(a,b)
#else
#define path_concat(a,b) a/**///**/b
#endif

#ifndef FingerDir
#define FingerDir path_concat(EtcDir,fingerdir)
#endif

#ifdef X11Dir
X11DIR = X11Dir
XINCFLAG = -I$(X11DIR)/include
#ifdef __svr4__
XLIBFLAG = -L$(X11DIR)/lib -R$(X11DIR)/lib
#else
XLIBFLAG = -L$(X11DIR)/lib
#endif
APPDIR = $(X11DIR)/lib/X11/app-defaults
#else
APPDIR = /usr/lib/X11/app-defaults
#endif

BINDIR = BinDir
ETCDIR = EtcDir
MANDIR = ManDir
MANEXT = ManExt
MAN5EXT = Man5Ext
MAN8EXT = Man8Ext
INCLUDES = Includes
#ifdef USE_DBMALLOC
MALLOCINC = -I/usr/local/include
#else
MALLOCINC =
#endif
INCFLAGS = -I. -I$(.CURDIR) -I$(.CURDIR)/$(INCLUDES) $(MALLOCINC) $(XINCFLAG)
SUPPORT = $(.CURDIR)/../support/
DOC = $(.CURDIR)/../doc/

G = BinPrefix
BIGG = `echo $(G) | tr '[a-z]' '[A-Z]'`

#ifdef HAVE_X11
  XLIBS = $(XLIBFLAG) -lXaw -lXmu -lXt -lXext -lX11
#endif

#ifdef HAVE_SUNVIEW
SUNLIBS =  -lsuntool -lsunwindow -lpixrect
#endif

#if defined(sun) && !defined(__svr4__) && !defined(USE_DBMALLOC)
XCOMM link fingerd into pure executable to avoid hanging when server goes down
#if defined(__GNUC__) || defined(HAVE_GCC)
PURE = -Xlinker -n -Xlinker -Bdynamic
#else
PURE = -n -Bdynamic
#endif
#endif

FINGERDIR = FingerDir
TARGETDIR = $(FINGERDIR)/targets
FINGERLIBDIR = $(.CURDIR)/../lib/
FINGERLIBOBJDIR = $(FINGERLIBDIR)$(MAKEOBJDIR)
FINGERLIB = $(FINGERLIBOBJDIR)/libfinger.a
NMALLOC = # nmalloc.o		

FIXMAN = sed -e 's@/usr/local/etc/fingerdir@$(FINGERDIR)@g' \
	     -e 's@/usr/local/etc@$(ETCDIR)@g' \
	     -e 's@/usr/local/bin@$(BINDIR)@g' \
	     -e 's@gfinger@$(G)finger@g' \
	     -e 's@Gfinger@'$(BIGG)'finger@g' \
	     -e 's@GFINGER@'$(BIGG)'FINGER@g'

INSTALLBIN = InstallBin
INSTALLSCRIPT = InstallScript
INSTALLMAN = InstallMan
INSTALLDATA = InstallData

CC = CPP_CC
LINKCMD = $(CC)
LD = ld

CFLAGS = CcOptions $(INCFLAGS)

#if defined(__GNUC__) || defined(HAVE_GCC)
DEPFLAG = -MM
#else
#ifdef hpux
XCOMM total loser
DEPFLAG = -E >/dev/null
#else
DEPFLAG = -M
#endif
#endif

#ifdef SYSV
RANLIB = echo
#else
RANLIB = ranlib
#endif

TAGS = etags
WINLIBS = $(XLIBS) $(SUNLIBS)
MYLIBS = $(FINGERLIB) $(NMALLOC)
#ifdef USE_DBMALLOC
MALLOCLIB = -ldbmalloc
#else
MALLOCLIB =
#endif
SYSLIBS = $(MALLOCLIB) CcLibs

SRCS = finger.c fingerd.c in.cfingerd.c in.fingerd.c packet2ascii.c
OBJS = finger.o fingerd.o in.cfingerd.o in.fingerd.o packet2ascii.o
EXECUTABLES = finger fingerd in.cfingerd in.fingerd packet2ascii vifinger
MANPAGES =  finger.$(MANEXT) fingerd.$(MAN8EXT) cfingerd.$(MAN8EXT) \
		hostconfig.$(MAN5EXT) ttylocs.$(MAN5EXT)

all:		$(EXECUTABLES) $(MANPAGES)

finger:		finger.o $(MYLIBS)
		$(LINKCMD) $(CFLAGS) -o finger finger.o $(MYLIBS) \
			$(WINLIBS) $(SYSLIBS)

fingerd:	fingerd.o $(MYLIBS)
		$(LINKCMD) $(CFLAGS) -o fingerd fingerd.o $(MYLIBS) \
			$(SYSLIBS) $(PURE)

in.cfingerd:	in.cfingerd.o $(MYLIBS)
		$(LINKCMD) $(CFLAGS) -o in.cfingerd in.cfingerd.o $(MYLIBS) \
			$(SYSLIBS) $(STATIC)

in.fingerd:	in.fingerd.o $(MYLIBS)
		$(LINKCMD) $(CFLAGS) -o in.fingerd in.fingerd.o $(MYLIBS) \
			$(SYSLIBS)

packet2ascii:	packet2ascii.o $(MYLIBS)
		$(LINKCMD) $(CFLAGS) -o packet2ascii packet2ascii.o $(MYLIBS) \
			$(SYSLIBS)

XCOMM serves as a timestamp to track changes in paths
FINGERPATHS	= fingerpaths.h

XCOMM stopgap to let things work even without make depend
$(OBJS):	$(FINGERPATHS)

$(FINGERLIB):	always $(FINGERPATHS)
		(cd $(FINGERLIBDIR); \
		 $(MAKE) $(MFLAGS) CC="$(CC)" RANLIB="$(RANLIB)" CFLAGS="$(CFLAGS)")

XCOMM this is usually not necessary, only for rebuilding lib dependencies
XCOMM prior to distribution
libdepend:	always $(FINGERPATHS)
		(cd $(FINGERLIBDIR); \
			$(MAKE) $(MFLAGS) CC="$(CC)" CFLAGS="$(CFLAGS)" \
				DEPFLAG="$(DEPFLAG)" depend)

XCOMM
XCOMM SaberC/ObjectCenter support
XCOMM
SABERFLAGS = -C

finger.saber:	suppress lib.saber
		#load $(SABERFLAGS) $(INCFLAGS) finger.c $(LOCALLIBS)

fingerd.saber:	suppress lib.saber
		#load $(SABERFLAGS) $(INCFLAGS) fingerd.c

in.fingerd.saber: suppress lib.saber
		#load $(SABERFLAGS) $(INCFLAGS) in.fingerd.c

in.cfingerd.saber: suppress lib.saber
		#load $(SABERFLAGS) $(INCFLAGS) in.cfingerd.c

lib.saber:	$(FINGERPATHS)
		#cd $(FINGERLIBDIR)
		#make SABERFLAGS="$(SABERFLAGS)" saber
		#cd ../src

suppress:
		#source $(SUPPORT)suppress.saber

XCOMM
XCOMM bump the build number whenever any part of the distribution has changed
XCOMM Note: version.h cannot depend on in.fingerd.o to avoid a cycle.
XCOMM
version.h:	finger fingerd in.cfingerd in.fingerd.c $(.CURDIR)/../config.h
		sh $(SUPPORT)newvers.sh
		
in.fingerd.o:	version.h

always:

$(FINGERPATHS): $(.CURDIR)/../config.h $(.CURDIR)/$(INCLUDES)fingerpaths.cfg
	cat $(.CURDIR)/$(INCLUDES)fingerpaths.cfg | \
		sed -e 's@/usr/local/etc/fingerdir@$(FINGERDIR)@g' \
		> fingerpaths.new
	if cmp fingerpaths.new $(FINGERPATHS); then \
		rm -f fingerpaths.new; \
	else \
		cp fingerpaths.new $(FINGERLIBOBJDIR)/fingerpaths.h ; \
		mv fingerpaths.new $(FINGERPATHS); \
	fi

clean::
	rm -f $(FINGERPATHS)

vifinger: vifinger.sh $(FINGERPATHS)
	$(FIXMAN) $(.CURDIR)/vifinger.sh > $@
	chmod a+x $@

cinstall: $(EXECUTABLES)
	test -d $(DESTDIR)$(ETCDIR) || mkdir $(DESTDIR)$(ETCDIR)
	test -d $(DESTDIR)$(FINGERDIR) || mkdir $(DESTDIR)$(FINGERDIR)
	$(INSTALLBIN) finger $(DESTDIR)$(BINDIR)/$(G)finger
	$(INSTALLDATA) $(.CURDIR)/Finger.ad $(DESTDIR)$(APPDIR)/Finger
	$(INSTALLBIN) in.fingerd $(DESTDIR)$(ETCDIR)
	$(INSTALLBIN) in.cfingerd $(DESTDIR)$(ETCDIR)
	$(INSTALLBIN) packet2ascii $(DESTDIR)$(ETCDIR)
	rm -f $(DESTDIR)$(ETCDIR)/ascii2packet
	ln $(DESTDIR)$(ETCDIR)/packet2ascii $(DESTDIR)$(ETCDIR)/ascii2packet
	$(INSTALLSCRIPT) vifinger $(DESTDIR)$(ETCDIR)

install: fingerd cinstall install.man install.targets
	$(INSTALLBIN) fingerd $(DESTDIR)$(ETCDIR)/$(G)fingerd

install.man: $(MANPAGES)
	$(INSTALLMAN) finger.$(MANEXT) \
		$(DESTDIR)$(MANDIR)/man$(MANEXT)/$(G)finger.$(MANEXT)
	$(INSTALLMAN) fingerd.$(MAN8EXT) \
		$(DESTDIR)$(MANDIR)/man$(MAN8EXT)/$(G)fingerd.$(MAN8EXT)
	$(INSTALLMAN) cfingerd.$(MAN8EXT) \
		$(DESTDIR)$(MANDIR)/man$(MAN8EXT)/cfingerd.$(MAN8EXT)
	$(INSTALLMAN) hostconfig.$(MAN5EXT) \
		$(DESTDIR)$(MANDIR)/man$(MAN5EXT)/hostconfig.$(MAN5EXT)
	$(INSTALLMAN) ttylocs.$(MAN5EXT) \
		$(DESTDIR)$(MANDIR)/man$(MAN5EXT)/ttylocs.$(MAN5EXT)

finger.$(MANEXT): $(DOC)finger.man $(FINGERPATHS)
	$(FIXMAN) $(DOC)finger.man > $@
fingerd.$(MAN8EXT): $(DOC)fingerd.man $(FINGERPATHS)
	$(FIXMAN) $(DOC)fingerd.man > $@
cfingerd.$(MAN8EXT): $(DOC)cfingerd.man $(FINGERPATHS)
	$(FIXMAN) $(DOC)cfingerd.man > $@
hostconfig.$(MAN5EXT): $(DOC)hostconfig.man $(FINGERPATHS)
	$(FIXMAN) $(DOC)hostconfig.man > $@
ttylocs.$(MAN5EXT): $(DOC)ttylocs.man $(FINGERPATHS)
	$(FIXMAN) $(DOC)ttylocs.man > $@

tags:: 	$(SRCS) $(.CURDIR)/../config.h
	ctags -u $?

tags::	always
	(cd $(FINGERLIBDIR); $(MAKE) $(MFLAGS) tags)

clean::
	rm -f $(MANPAGES)

STAR = *
install.targets:
	test -d $(DESTDIR)$(TARGETDIR) || mkdir $(DESTDIR)$(TARGETDIR)
	@for f in $(.CURDIR)/targets/$(STAR); do \
		bname=`basename $$f` ; \
		if [ ! -f $$f ]; then continue; fi ; \
		if [ ! -f $(DESTDIR)$(TARGETDIR)/$$bname ]; then \
			echo "installing $(DESTDIR)$(TARGETDIR)/$$bname" ; \
			$(INSTALLSCRIPT) $$f $(DESTDIR)$(TARGETDIR)/$$bname ; \
		else \
			echo "not overwriting existing $(DESTDIR)$(TARGETDIR)/$$bname" ; \
		fi ; \
	done

client: cinstall
	$(SUPPORT)install-finger -client `pwd`/$(SUPPORT)

server: install
	$(SUPPORT)install-finger `pwd`/$(SUPPORT)

clean::
	rm -f *.o *.bak $(EXECUTABLES)

dirs:
	test -d $(.CURDIR)/$(MAKEOBJDIR) || mkdir $(.CURDIR)/$(MAKEOBJDIR)

XCOMM disable lex rule to avoid trouble if mansuffix is .l
.l.c:

DEPSTRING = DO NOT DELETE THIS LINE -- make depend depends on it.

depend:: $(FINGERPATHS)
	/bin/mv Makefile Makefile.bak; \
	/bin/sed -e '/^# $(DEPSTRING)/,$$ d' Makefile.bak > Makefile; \
	echo "# $(DEPSTRING)" >> Makefile; \
	for src in $(SRCS); do \
		$(CC) $(DEPFLAG) $(INCFLAGS) $(.CURDIR)/$$src >> Makefile ; \
	done

XCOMM Not normally necessary
XCOMM depend:: $(.CURDIR)/$(INCLUDES)fingerpaths.h
XCOMM	(cd $(FINGERLIBDIR); \
XCOMM	 $(MAKE) $(MFLAGS) CC="$(CC)" DEPFLAG="$(DEPFLAG)" INCFLAGS="$(INCFLAGS)" depend)
