#-----------------------------------------------------------------------------
# Copyright (c) 1995 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.
#
#       Stand alone LDAP server tools makefile
#
#-----------------------------------------------------------------------------
LDAPSRC	= ../../..
HDIR	= $(LDAPSRC)/include
LDIR	= $(LDAPSRC)/libraries
VERSIONFILE = $(LDAPSRC)/build/version

EDB2LDIFSRCS	= edb2ldif.c ldapsyntax.c
EDB2LDIFOBJS	= edb2ldif.o ldapsyntax.o ../strdup.o

OBJS2	= ../config.o ../ch_malloc.o ../backend.o ../charray.o \
		../aclparse.o ../schema.o ../result.o ../filterentry.o \
		../acl.o ../phonetic.o ../attr.o ../value.o ../entry.o \
		../dn.o ../filter.o ../str2filter.o ../ava.o ../init.o \
		../schemaparse.o ../regex.o ../strdup.o

INCLUDES= -I. -I$(HDIR) $(EXINCLUDES)
DEFINES = $(DEFS) $(SERVERDEFS) $(THREADS)
CFLAGS	= $(INCLUDES) $(DEFINES) $(ACFLAGS)
LDFLAGS	= -L$(LDIR) $(EXLDFLAGS)
LIBS	= -lldif -lldap -llber -lldbm -lavl $(LDBMLIB) $(EXLIBS) $(ALIBS)
LIBS2	= -lldif -lldbm -lavl $(LDBMLIB) -llber $(KRBLIBFLAG) $(KRBLIBS) \
		-llthread $(THREADSLIB) $(ALIBS)

all:	build-edb2ldif ldif2index ldif2ldbm ldbmcat ldif2id2entry \
		ldif2id2children centipede ldbmtest ldif

build-edb2ldif:	FORCE
	@if [ "$(HAVEISODE)" = "yes" ]; then \
	    $(MAKE) $(MFLAGS) CC=$(CC) EXINCLUDES="$(ISODEINCLUDEFLAG)" \
		EXLDFLAGS="$(ISODELIBFLAG)" EXLIBS="$(ISODELIBS)" edb2ldif; \
        else \
            echo "uncomment the HAVEISODE=yes line in the Make-common file to build edb2ldif"; \
        fi

edb2ldif:	edb2-vers.o
	$(CC) $(ALDFLAGS) -o $@ $(EDB2LDIFOBJS) edb2-vers.o \
		$(LDFLAGS) $(LIBS)

edb2-vers.c: $(EDB2LDIFOBJS)
	$(RM) $@
	(u=$${USER-root} v=`$(CAT) $(VERSIONFILE)` d=`$(PWD)` h=`$(HOSTNAME)` \
	t=`$(DATE)`; $(SED) -e "s|%WHEN%|$${t}|" \
	-e "s|%WHOANDWHERE%|$${u}@$${h}:$${d}|" \
	-e "s|%VERSION%|$${v}|" \
	< Vers-edb2.c > $@)

build-chlog2replog: FORCE
	@if [ "$(HAVEISODE)" = "yes" ]; then \
	    $(MAKE) $(MFLAGS) CC=$(CC) EXINCLUDES="$(ISODEINCLUDEFLAG)" \
		EXLDFLAGS="$(ISODELIBFLAG)" EXLIBS="$(ISODELIBS)" chlog2replog; \
        else \
            echo "uncomment the HAVEISODE=yes line in the Make-common file to build chlog2replog"; \
        fi

chlog2replog: chlog2replog.o ../lock.o ../ch_malloc.o
	$(CC) $(ALDFLAGS) -o $@ chlog2replog.o ../lock.o ../ch_malloc.o \
	$(LDFLAGS) $(LIBS)

ldif2index:	ldif2index.o ../libbackends.a $(OBJS2)
	$(CC) $(ALDFLAGS) -o $@ ldif2index.o $(OBJS2) \
		../libbackends.a $(LDFLAGS) $(LIBS2)

ldif2ldbm:	ldif2ldbm.sed.o ../libbackends.a $(OBJS2)
	$(CC) $(ALDFLAGS) -o $@ ldif2ldbm.sed.o $(OBJS2) \
		../libbackends.a $(LDFLAGS) $(LIBS2)

ldif2ldbm.sed.c: ldif2ldbm.c
	$(SED) -e 's;%ETCDIR%;$(RUNTIMEETCDIR);' ldif2ldbm.c > ldif2ldbm.sed.c

ldif2id2entry:	ldif2id2entry.o ../libbackends.a $(OBJS2)
	$(CC) $(ALDFLAGS) -o $@ ldif2id2entry.o $(OBJS2) \
		../libbackends.a $(LDFLAGS) $(LIBS2)

ldif2id2children:	ldif2id2children.o ../libbackends.a $(OBJS2)
	$(CC) $(ALDFLAGS) -o $@ ldif2id2children.o $(OBJS2) \
		../libbackends.a $(LDFLAGS) $(LIBS2)

ldbmcat:	ldbmcat.o
	$(CC) $(ALDFLAGS) -o $@ ldbmcat.o $(LDFLAGS) $(LIBS)

ldif:		ldif.o
	$(CC) $(ALDFLAGS) -o $@ ldif.o $(LDFLAGS) $(LIBS) $(LIBS2)

centipede:	centipede.o 
	$(CC) $(ALDFLAGS) -o $@ centipede.o $(LDFLAGS) $(LIBS) \
		$(KRBLIBFLAG) $(KRBLIBS)

sizecount:	sizecount.o ../phonetic.o ../ch_malloc.o
	$(CC) $(ALDFLAGS) -o $@ sizecount.o ../phonetic.o ../ch_malloc.o \
		$(LDFLAGS) $(LIBS) $(KRBLIBFLAG) $(KRBLIBS)

ldbmtest:	ldbmtest.o ../libbackends.a $(OBJS2)
	$(CC) $(ALDFLAGS) -o ldbmtest ldbmtest.o $(OBJS2) \
		../libbackends.a $(LDFLAGS) $(LIBS2)

install: $(ETCDIR) $(ETCDIR)/edb2ldif $(ETCDIR)/ldif2ldbm \
	$(ETCDIR)/ldif2index $(ETCDIR)/ldif2id2entry \
	$(ETCDIR)/ldif2id2children $(ETCDIR)/ldbmcat \
	$(ETCDIR)/centipede $(ETCDIR)/ldbmtest \
	$(ETCDIR)/ldif

$(ETCDIR)/edb2ldif:	build-edb2ldif
	@if [ "$(HAVEISODE)" = "yes" ]; then \
		$(INSTALL) $(INSTALLFLAGS) -m 755 edb2ldif $(ETCDIR); \
	else \
		exit 0; \
	fi

$(ETCDIR)/chlog2replog:	build-chlog2replog
	@if [ "$(HAVEISODE)" = "yes" ]; then \
		$(INSTALL) $(INSTALLFLAGS) -m 755 chlog2replog $(ETCDIR); \
	else \
		exit 0; \
	fi

$(ETCDIR)/ldif2ldbm:	ldif2ldbm
	$(INSTALL) $(INSTALLFLAGS) -m 755 ldif2ldbm $(ETCDIR)

$(ETCDIR)/ldif2index:	ldif2index
	$(INSTALL) $(INSTALLFLAGS) -m 755 ldif2index $(ETCDIR)

$(ETCDIR)/ldif2id2entry:	ldif2id2entry
	$(INSTALL) $(INSTALLFLAGS) -m 755 ldif2id2entry $(ETCDIR)

$(ETCDIR)/ldif2id2children:	ldif2id2children
	$(INSTALL) $(INSTALLFLAGS) -m 755 ldif2id2children $(ETCDIR)

$(ETCDIR)/ldbmcat:	ldbmcat
	$(INSTALL) $(INSTALLFLAGS) -m 755 ldbmcat $(ETCDIR)

$(ETCDIR)/ldif:	ldif
	$(INSTALL) $(INSTALLFLAGS) -m 755 ldif $(ETCDIR)

$(ETCDIR)/centipede:	centipede
	$(INSTALL) $(INSTALLFLAGS) -m 755 centipede $(ETCDIR)

$(ETCDIR)/ldbmtest:	ldbmtest
	$(INSTALL) $(INSTALLFLAGS) -m 755 ldbmtest $(ETCDIR)

lint:	FORCE
	$(LINT) $(INCLUDES) $(DEFINES) $(SRCS)

5lint:	FORCE
	$(5LINT) $(INCLUDES) $(DEFINES) $(SRCS)

clean:	FORCE
	@echo "making clean in `$(PWD)`"
	$(RM) edb2ldif ldif2index *.o core a.out edb2-vers.c \
		ldif2ldbm ldif2id2entry ldif2id2children ldbmcat ldif \
		centipede chlog2replog sizecount ldif2ldbm.sed.c ldbmtest

depend:	ldif2ldbm.sed.c FORCE
	@if [ ! -z "$(HAVEISODE)" ]; then \
	    DEPENDEXTRAS="$(ISODEINCLUDEFLAG) chlog2replog.c $(EDB2LDIFSRCS)"; \
	fi; \
	$(MKDEP) $(INCLUDES) $(DEFINES) $$DEPENDEXTRAS ldif2index.c \
	    ldif2ldbm.c ldif2id2entry.c ldif2id2children.c ldbmcat.c \
	    centipede.c sizecount.c ldif2ldbm.sed.c ldbmtest.c ldif.c

links:
	@echo "making links in `$(PWD)`"
	@$(LN) .src/*.[ch] .


# DO NOT DELETE THIS LINE -- mkdep uses it.
# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.

chlog2replog.o: chlog2replog.c ../../../include/ldif.h
edb2ldif.o: edb2ldif.c
ldapsyntax.o: ldapsyntax.c ../../../include/lber.h ../../../include/ldap.h
ldapsyntax.o: ../../../include/ldif.h ldapsyntax.h
ldif2index.o: ldif2index.c ../slap.h ../../../include/avl.h
ldif2index.o: ../../../include/lber.h ../../../include/ldap.h
ldif2index.o: ../../../include/lthread.h ../../../include/ldif.h
ldif2ldbm.o: ldif2ldbm.c ../slap.h ../../../include/avl.h
ldif2ldbm.o: ../../../include/lber.h ../../../include/ldap.h
ldif2ldbm.o: ../../../include/lthread.h ../../../include/ldif.h
ldif2ldbm.o: ../back-ldbm/back-ldbm.h ../../../include/ldbm.h
ldif2id2entry.o: ldif2id2entry.c ../slap.h ../../../include/avl.h
ldif2id2entry.o: ../../../include/lber.h ../../../include/ldap.h
ldif2id2entry.o: ../../../include/lthread.h ../../../include/ldif.h
ldif2id2entry.o: ../back-ldbm/back-ldbm.h ../../../include/ldbm.h
ldif2id2children.o: ldif2id2children.c ../slap.h ../../../include/avl.h
ldif2id2children.o: ../../../include/lber.h ../../../include/ldap.h
ldif2id2children.o: ../../../include/lthread.h ../../../include/ldif.h
ldif2id2children.o: ../back-ldbm/back-ldbm.h ../../../include/ldbm.h
ldbmcat.o: ldbmcat.c ../../../include/ldbm.h ../slap.h ../../../include/avl.h
ldbmcat.o: ../../../include/lber.h ../../../include/ldap.h
ldbmcat.o: ../../../include/lthread.h ../../../include/ldif.h
centipede.o: centipede.c ../../../include/lber.h ../../../include/ldap.h
centipede.o: ../../../include/ldapconfig.h ../../../include/ldbm.h
sizecount.o: sizecount.c ../../../include/ldbm.h ../../../include/lber.h
sizecount.o: ../../../include/ldap.h ../../../include/portable.h
ldif2ldbm.sed.o: ldif2ldbm.sed.c ../slap.h ../../../include/avl.h
ldif2ldbm.sed.o: ../../../include/lber.h ../../../include/ldap.h
ldif2ldbm.sed.o: ../../../include/lthread.h ../../../include/ldif.h
ldif2ldbm.sed.o: ../back-ldbm/back-ldbm.h ../../../include/ldbm.h
ldbmtest.o: ldbmtest.c ../../../include/portable.h
ldbmtest.o: ../../../include/ldapconfig.h ../slap.h ../../../include/avl.h
ldbmtest.o: ../../../include/lber.h ../../../include/ldap.h
ldbmtest.o: ../../../include/lthread.h ../../../include/ldif.h
ldbmtest.o: ../back-ldbm/back-ldbm.h ../../../include/ldbm.h
ldif.o: ldif.c ../../../include/lber.h ../../../include/ldap.h
ldif.o: ../../../include/ldif.h

# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
