#-----------------------------------------------------------------------------
# Copyright (c) 1992 Regents of the University of Michigan.
# All rights reserved.
#
# Redistribution and use in source and binary forms are permitted
# provided that this notice is preserved and that due credit is given
# to the University of Michigan at Ann Arbor. The name of the University
# may not be used to endorse or promote products derived from this
# software without specific prior written permission. This software
# is provided ``as is'' without express or implied warranty.
#
#       LDAP lightweight X.500 Directory access top level makefile
#
#-----------------------------------------------------------------------------

#
# Edit the following variables to have appropriate values for your system
#

#
# where to install the ldap stuff
#
# where to put servers, etc.
ETCDIR		= /usr/local/etc
# where to put ldap.h & lber.h
INCLUDEDIR	= /usr/local/include
# where to put libraries
LIBDIR		= /usr/local/lib
# where to put man pages
MANDIR		= /usr/local/man
# where to put clients
BINDIR		= /usr/local/bin

#
# flags telling where to find isode stuff
#
# where to find includes
ISODEINCLUDEFLAG= -I/usr/local/isode/include
# where to find libraries
ISODELIBFLAG	= -L/usr/local/isode/lib
# uncomment gdbm if TURBO_DISK, remove -ldsap if ICR1
ISODELIBS	= -ldsap -lisode -lm # -lgdbm

#
# flags telling where to find kerberos stuff - should be commented out
# unless you add -DKERBEROS to ACFLAGS below to use kerberos
#
# where to find includes
#KRBINCLUDEFLAG	= -I/usr/local/kerberos/include
# where to find libraries
#KRBLIBFLAG	= -L/usr/local/kerberos/lib
# kerberos libraries
#KRBLIBS		= -lkrb -ldes

#
# You may want to change some of these things too
#
# Two kinds of things go in ACFLAGS, global compiler flags (like -g to
# generate symbol table info), and global defines (like -DKERBEROS to enable
# kerberos version 4 authentication, or -DLDAP_DEBUG to compile in some
# debugging info you can then turn on by setting ldap_debug).  Here's
# the current list of global things you can #define:
#
#	LDAP_DEBUG	turns on some debugging code, eg. so you can start
#			ldapd with the -d flag and get lots of output, or
#			set ldap_debug in your own code.
#
#	KERBEROS	enable kerberos support.  we've never tested this
#			without also #defining AFSKERBEROS, but in theory...
#
#	AFSKERBEROS	enable afs-style kerberos.  you should also #define
#			KERBEROS.
#
#	UOFM		turns on a few U of M specific things in some of
#			the client programs (eg. ud, finger, gopher)
#			like various error messages, attr types, etc.
#
#	UOFA		turns on a few University of Adelaide specific
#			things in the whois++ program.
#
#	NO_USERINTERFACE	delete a few printfs in the lber and ldap
#				libraries
#
#	ICR1		turns on a few #ifdefs to make the distribution
#			work with ISODE Consortium Release 1
#
#	LDAP_USE_PP	loads pp syntax handlers in ldapd
#
DEFINES		= -DLDAP_DEBUG
# added to every $(CFLAGS)
ACFLAGS		= $(DEFINES)
# always passed to ld
ALDFLAGS	= 
#
# you probably don't need to edit these things, but if you want to use
# a different make or c compiler, or you need to have different install
# flags, or you don't have ranlib, change it here.
#
MAKE	= make
CC	= cc
RANLIB	= ranlib
INSTALL	= install
INSTALLFLAGS = -c

############################################################################
#                                                                          #
# You should not have to edit anything below this point                    #
#                                                                          #
############################################################################

LDIRS	= libldap liblber			  # library directories
SDIRS	= ldapd					  # server directories
CDIRS	= finger gopher ud rcpt500 mail500 fax500 # client directories
ODIRS	= whois++				  # contributed directories
ALLDIRS	= $(CDIRS) $(SDIRS) $(LDIRS) $(ODIRS)

VERSION	= 30	# set this to be the same as what's in ./version

#
# rules to make the software
#

all: lber-library ldap-server ldap-library

lib-only: lber-library ldap-library

others: ldap-others

ldap-others: ldap-finger ldap-gopher ldap-ud ldap-rcpt500 \
	ldap-mail500 ldap-fax500

contrib: ldap-whois++

lber-library:
	@echo "cd liblber; $(MAKE) all"
	@(cd liblber; $(MAKE) ACFLAGS="$(ACFLAGS)" ALDFLAGS="$(ALDFLAGS)" \
		LIBDIR=$(LIBDIR) CC=$(CC) RANLIB=$(RANLIB) all)

ldap-server:
	@echo "cd ldapd; $(MAKE) all"
	@(cd ldapd; $(MAKE) ISODEINCLUDEFLAG="$(ISODEINCLUDEFLAG)" \
		ACFLAGS="$(ACFLAGS)" ALDFLAGS="$(ALDFLAGS)" \
		ISODELIBFLAG=$(ISODELIBFLAG) ISODELIBS="$(ISODELIBS)" \
		KRBINCLUDEFLAG="$(KRBINCLUDEFLAG)" KRBLIBFLAG=$(KRBLIBFLAG) \
		KRBLIBS="$(KRBLIBS)" ETCDIR=$(ETCDIR) CC=$(CC) \
		all)

ldap-static-server:
	@echo "cd ldapd; $(MAKE) sldapd"
	@(cd ldapd; $(MAKE) ISODEINCLUDEFLAG="$(ISODEINCLUDEFLAG)" \
		ACFLAGS="$(ACFLAGS)" ALDFLAGS="$(ALDFLAGS)" \
		ISODELIBFLAG=$(ISODELIBFLAG) ISODELIBS="$(ISODELIBS)" \
		KRBINCLUDEFLAG="$(KRBINCLUDEFLAG)" KRBLIBFLAG=$(KRBLIBFLAG) \
		KRBLIBS="$(KRBLIBS)" ETCDIR=$(ETCDIR) CC=$(CC) \
		sldapd)

ldap-library:
	@echo "cd libldap; $(MAKE) all"
	@(cd libldap; $(MAKE) ACFLAGS="$(ACFLAGS)" ALDFLAGS="$(ALDFLAGS)" \
		KRBINCLUDEFLAG="$(KRBINCLUDEFLAG)" KRBLIBFLAG=$(KRBLIBFLAG) \
		KRBLIBS="$(KRBLIBS)" LIBDIR=$(LIBDIR) CC=$(CC) \
		RANLIB=$(RANLIB) all)

ldap-finger:
	@echo "cd finger; $(MAKE) all"
	@(cd finger; $(MAKE) ACFLAGS="$(ACFLAGS)" ALDFLAGS="$(ALDFLAGS)" \
		KRBLIBFLAG=$(KRBLIBFLAG) KRBLIBS="$(KRBLIBS)" \
		ETCDIR=$(ETCDIR) CC=$(CC) \
		all)

ldap-gopher:
	@echo "cd gopher; $(MAKE) all"
	@(cd gopher; $(MAKE) ACFLAGS="$(ACFLAGS)" ALDFLAGS="$(ALDFLAGS)" \
		KRBLIBFLAG=$(KRBLIBFLAG) KRBLIBS="$(KRBLIBS)" \
		ETCDIR=$(ETCDIR) CC=$(CC) \
		all)

ldap-ud:
	@echo "cd ud; $(MAKE) all"
	@(cd ud; $(MAKE) ACFLAGS="$(ACFLAGS)" ALDFLAGS="$(ALDFLAGS)" \
		KRBLIBFLAG=$(KRBLIBFLAG) KRBLIBS="$(KRBLIBS)" \
		KRBINCLUDEFLAG="$(KRBINCLUDEFLAG)" \
		ETCDIR=$(ETCDIR) CC=$(CC) \
		all)

lint-ud:
	@echo "cd ud; $(MAKE) ud-lint"
	@(cd ud; $(MAKE) ACFLAGS="$(DEFINES)" ALDFLAGS="$(ALDFLAGS)" \
		KRBLIBFLAG=$(KRBLIBFLAG) KRBLIBS="$(KRBLIBS)" \
		KRBINCLUDEFLAG="$(KRBINCLUDEFLAG)" \
		ETCDIR=$(ETCDIR) CC=$(CC) \
		ud-lint)

ldap-rcpt500:
	@echo "cd rcpt500; $(MAKE) all"
	@(cd rcpt500; $(MAKE) ACFLAGS="$(ACFLAGS)" ALDFLAGS="$(ALDFLAGS)" \
		KRBLIBFLAG=$(KRBLIBFLAG) KRBLIBS="$(KRBLIBS)" \
		ETCDIR=$(ETCDIR) CC=$(CC) \
		all)

ldap-whois++:
	@echo "cd whois++; $(MAKE) all"
	@(cd whois++; $(MAKE) ACFLAGS="$(ACFLAGS)" ALDFLAGS="$(ALDFLAGS)" \
		KRBLIBFLAG=$(KRBLIBFLAG) KRBLIBS="$(KRBLIBS)" \
		ETCDIR=$(ETCDIR) CC=$(CC) \
		all)

ldap-mail500:
	@echo "cd mail500; $(MAKE) all"
	@(cd mail500; $(MAKE) ACFLAGS="$(ACFLAGS)" ALDFLAGS="$(ALDFLAGS)" \
		KRBLIBFLAG=$(KRBLIBFLAG) KRBLIBS="$(KRBLIBS)" \
		ETCDIR=$(ETCDIR) CC=$(CC) \
		all)

ldap-fax500:
	@echo "cd fax500; $(MAKE) all"
	@(cd fax500; $(MAKE) ACFLAGS="$(ACFLAGS)" ALDFLAGS="$(ALDFLAGS)" \
		KRBLIBFLAG=$(KRBLIBFLAG) KRBLIBS="$(KRBLIBS)" \
		ETCDIR=$(ETCDIR) BINDIR=$(BINDIR) CC=$(CC) \
		all)

#
# rules to install the software
#

install: inst-include inst-server inst-lberlib inst-ldaplib inst-man

inst-others: inst-finger inst-gopher inst-ud inst-rcpt500 \
		inst-mail500 inst-fax500

inst-lib: inst-lberlib inst-ldaplib

inst-contrib: inst-whois++

inst-include:
	@echo "cd h; $(MAKE) install"
	@(cd h; $(MAKE) INCLUDEDIR=$(INCLUDEDIR) INSTALL=$(INSTALL) \
		INSTALLFLAGS=$(INSTALLFLAGS) \
		install )

inst-server:
	@echo "cd ldapd; $(MAKE) install"
	@(cd ldapd; $(MAKE) ETCDIR=$(ETCDIR) INSTALL=$(INSTALL) \
		INSTALLFLAGS=$(INSTALLFLAGS) \
		install )

inst-lberlib:
	@echo "cd liblber; $(MAKE) install"
	@(cd liblber; $(MAKE) LIBDIR=$(LIBDIR) RANLIB=$(RANLIB) \
		INSTALL=$(INSTALL) INSTALLFLAGS=$(INSTALLFLAGS) \
		install )

inst-ldaplib:
	@echo "cd libldap; $(MAKE) install"
	@(cd libldap; $(MAKE) LIBDIR=$(LIBDIR) ETCDIR=$(ETCDIR) \
		RANLIB=$(RANLIB) INSTALL=$(INSTALL) \
		INSTALLFLAGS=$(INSTALLFLAGS) \
		install)

inst-man:
	@echo "cd doc; $(MAKE) install"
	@( cd doc; $(MAKE) MANDIR=$(MANDIR) ETCDIR=$(ETCDIR) \
		INSTALL=$(INSTALL) INSTALLFLAGS=$(INSTALLFLAGS) \
		install )

inst-finger:
	@echo "cd finger; $(MAKE) install"
	@( cd finger; $(MAKE) ETCDIR=$(ETCDIR) INSTALL=$(INSTALL) \
		INSTALLFLAGS=$(INSTALLFLAGS) \
		install )

inst-gopher:
	@echo "cd gopher; $(MAKE) install"
	@( cd gopher; $(MAKE) ETCDIR=$(ETCDIR) INSTALL=$(INSTALL) \
		INSTALLFLAGS=$(INSTALLFLAGS) \
		install )

inst-ud:
	@echo "cd ud; $(MAKE) install"
	@( cd ud; $(MAKE) BINDIR=$(BINDIR) INSTALL=$(INSTALL) \
		INSTALLFLAGS=$(INSTALLFLAGS) \
		install )

inst-rcpt500:
	@echo "cd rcpt500; $(MAKE) install"
	@( cd rcpt500; $(MAKE) ETCDIR=$(ETCDIR) INSTALL=$(INSTALL) \
		INSTALLFLAGS=$(INSTALLFLAGS) \
		install )

inst-whois++:
	@echo "cd whois++; $(MAKE) install"
	@( cd whois++; $(MAKE) ETCDIR=$(ETCDIR) INSTALL=$(INSTALL) \
		INSTALLFLAGS=$(INSTALLFLAGS) \
		inst-whois++ )

inst-mail500:
	@echo "cd mail500; $(MAKE) install"
	@( cd mail500; $(MAKE) ETCDIR=$(ETCDIR) INSTALL=$(INSTALL) \
		INSTALLFLAGS=$(INSTALLFLAGS) \
		install )

inst-fax500:
	@echo "cd fax500; $(MAKE) install"
	@( cd fax500; $(MAKE) ETCDIR=$(ETCDIR) BINDIR=$(BINDIR) \
		INSTALL=$(INSTALL) INSTALLFLAGS=$(INSTALLFLAGS) \
		install )

#
# rule to make clean
#

clean:
	@for i in $(ALLDIRS); \
		do (echo "cd $$i; $(MAKE) clean"; \
			  cd $$i; $(MAKE) clean); \
		done

#
# rules to make depend
#
#
#depend:
#	@for i in $(ALLDIRS); \
#		do (echo "cd $$i; $(MAKE) depend"; \
#			  cd $$i; $(MAKE) \
#				ISODEINCLUDEFLAG="$(ISODEINCLUDEFLAG)" \
#				KRBINCLUDEFLAG="$(KRBINCLUDEFLAG)" \
#				depend); \
#		done
#
#lib-depend:
#	@for i in $(LDIRS); \
#		do (echo "cd $$i; $(MAKE) depend"; \
#			  cd $$i; $(MAKE) \
#				KRBINCLUDEFLAG="$(KRBINCLUDEFLAG)" \
#				depend); \
#		done
#
#
# rules to cut a new ldap distribution
#

distribution:
	# make clean
	-for i in `find . -name \*,v -print | sed -e 's%RCS/%%' -e 's%,v%%'`; \
		do ( \
			    ci -m"pre-version $(VERSION) check-in" -u $$i; \
			    rcs -N$(VERSION): $$i ) \
		done
