srcdir=         @srcdir@
VPATH=          @srcdir@

SHELL=		/bin/sh
TOPDIR=		..
PZCONFIG=	$(TOPDIR)/zmailer.Config
INSTALL=	@INSTALL@
MKDIR=		@MKDIR@
MD5SUM=		@MD5SUM@

PMAILSHARE=	scheduler.conf sm.conf smtpserver.conf scheduler.auth \
		smtp-tls.conf
PMAILBIN=	mailrm.sh newaliases newfqdnaliases newdb zmailer.sh
#		#post-install.sh <<- installed unconditionally

all:
	@echo Usage: '"make [ dirs | config | mailbin | mailshare | db | cf | forms | install | install-bin ]"'

install: dirs mailbin mailshare db cf forms

install-bin: dirs mailbin cf db

FRC:

$(PZCONFIG):
	@cd $(TOPDIR) ; $(MAKE) $(MFLAGS) zmailer.Config

$(MD5SUM):
	if [ "$(MD5SUM)" = "$(TOPDIR)/utils/md5sum" ]; then \
	   cd $(TOPDIR); $(MAKE) $(MFLAGS) md5sum ; \
	fi

# Ensure all necessary directories exist

dirs:	$(PZCONFIG)
	-@(. $(PZCONFIG) ; \
	umask 022 ; \
	if [ -n "$(prefix)" ] ; then \
		$(MKDIR) -m 755 $(prefix) ; \
	fi ; \
	if [ ! -d $(prefix)$$MAILSHARE ]; then \
		echo $(MKDIR) $(prefix)$$MAILSHARE && \
			$(MKDIR) $(prefix)$$MAILSHARE ; \
	fi ; \
	if [ ! -d $(prefix)$$MAILVAR ]; then \
		echo $(MKDIR) $(prefix)$$MAILVAR && \
			$(MKDIR) $(prefix)$$MAILVAR ; \
	fi ; \
	if [ ! -d $(prefix)$$MAILVAR/db ]; then \
		echo $(MKDIR) $(prefix)$$MAILVAR/db && \
			$(MKDIR) $(prefix)$$MAILVAR/db ; \
	fi ; \
	if [ ! -d $(prefix)$$MAILVAR/db/proto ]; then \
		echo $(MKDIR) $(prefix)$$MAILVAR/db/proto && \
			$(MKDIR) $(prefix)$$MAILVAR/db/proto ; \
	fi ; \
	if [ ! -d $(prefix)$$MAILVAR/lists ]; then \
		echo $(MKDIR) $(prefix)$$MAILVAR/lists && \
			$(MKDIR) $(prefix)$$MAILVAR/lists ; \
	fi ; \
	if [ ! -d $(prefix)$$MAILVAR/fqlists ]; then \
		echo $(MKDIR) $(prefix)$$MAILVAR/dqlists && \
			$(MKDIR) $(prefix)$$MAILVAR/fqlists ; \
	fi ; \
	if [ ! -d $(prefix)$$MAILSHARE/forms ]; then \
		echo $(MKDIR) $(prefix)$$MAILSHARE/forms && \
			$(MKDIR) $(prefix)$$MAILSHARE/forms ; \
	fi ; \
	if [ ! -d $(prefix)$$MAILSHARE/forms/proto ]; then \
		echo $(MKDIR) $(prefix)$$MAILSHARE/forms/proto && \
			$(MKDIR) $(prefix)$$MAILSHARE/forms/proto ; \
	fi ; \
	if [ ! -d $(prefix)$$MAILSHARE/proto ]; then \
		echo $(MKDIR) $(prefix)$$MAILSHARE/proto && \
			$(MKDIR) $(prefix)$$MAILSHARE/proto ; \
	fi ; \
	if [ ! -d $(prefix)$$MAILSHARE/bak ]; then \
		echo $(MKDIR) $(prefix)$$MAILSHARE/bak && \
			$(MKDIR) $(prefix)$$MAILSHARE/bak ; \
	fi ; \
	if [ ! -d $(prefix)$$MAILBIN ]; then \
		echo $(MKDIR) $(prefix)$$MAILBIN && \
			$(MKDIR) $(prefix)$$MAILBIN ; \
	fi ; \
	if [ ! -d $(prefix)$$MAILBIN/ta ]; then \
		echo $(MKDIR) $(prefix)$$MAILBIN/ta && \
			$(MKDIR) $(prefix)$$MAILBIN/ta ; \
	fi ; \
	if [ ! -d $(prefix)$$MAILBIN/bak ]; then \
		echo $(MKDIR) $(prefix)$$MAILBIN/bak && \
			$(MKDIR) $(prefix)$$MAILBIN/bak ; \
	fi ; \
	if [ ! -d $(prefix)$$POSTOFFICE ]; then \
		echo $(MKDIR) $(prefix)$$POSTOFFICE && \
			$(MKDIR) $(prefix)$$POSTOFFICE ; \
		chmod 2755 $(prefix)$$POSTOFFICE ; \
		chmod g+s  $(prefix)$$POSTOFFICE ; \
	fi; \
	if [ ! -d $(prefix)$$POSTOFFICE/deferred ]; then \
		echo $(MKDIR) $(prefix)$$POSTOFFICE/deferred && \
		$(MKDIR) $(prefix)$$POSTOFFICE/deferred ; \
		chmod 750 $(prefix)$$POSTOFFICE/deferred ; \
	fi; \
	if [ ! -d $(prefix)$$POSTOFFICE/TLSsrvrcache ]; then \
		echo $(MKDIR) $(prefix)$$POSTOFFICE/TLSsrvrcache && \
		$(MKDIR) $(prefix)$$POSTOFFICE/TLSsrvrcache ; \
		chmod 700 $(prefix)$$POSTOFFICE/TLSsrvrcache ; \
	fi; \
	if [ ! -d $(prefix)$$POSTOFFICE/TLSclntcache ]; then \
		echo $(MKDIR) $(prefix)$$POSTOFFICE/TLSclntcache && \
		$(MKDIR) $(prefix)$$POSTOFFICE/TLSclntcache ; \
		chmod 700 $(prefix)$$POSTOFFICE/TLSclntcache ; \
	fi; \
	if [ ! -d $(prefix)$$POSTOFFICE/freezer ]; then \
		echo $(MKDIR) $(prefix)$$POSTOFFICE/freezer && \
		$(MKDIR) $(prefix)$$POSTOFFICE/freezer ; \
		chmod 750 $(prefix)$$POSTOFFICE/freezer ; \
	fi; \
	if [ ! -d $(prefix)$$POSTOFFICE/postman ]; then \
		echo $(MKDIR) $(prefix)$$POSTOFFICE/postman && \
		$(MKDIR) $(prefix)$$POSTOFFICE/postman ; \
		chmod 750 $(prefix)$$POSTOFFICE/postman ; \
	fi; \
	if [ ! -d $(prefix)$$POSTOFFICE/public ]; then \
		echo $(MKDIR) $(prefix)$$POSTOFFICE/public && \
		$(MKDIR) $(prefix)$$POSTOFFICE/public ; \
		chmod 1777 $(prefix)$$POSTOFFICE/public ; \
	fi; \
	if [ ! -d $(prefix)$$POSTOFFICE/queue ]; then \
		echo $(MKDIR) $(prefix)$$POSTOFFICE/queue && \
		$(MKDIR) $(prefix)$$POSTOFFICE/queue ; \
		chmod 750 $(prefix)$$POSTOFFICE/queue ; \
		echo $(MKDIR) "$(prefix)$$POSTOFFICE/queue/{A,B,..,Z}" ; \
		for hh in A B C D E F G H I J K L M N O P Q R S T U V W X Y Z; do \
			$(MKDIR) $(prefix)$$POSTOFFICE/queue/$$hh ;	\
			chmod 755 $(prefix)$$POSTOFFICE/queue/$$hh ;	\
		done ; \
	fi; \
	if [ ! -d $(prefix)$$POSTOFFICE/router ]; then \
		echo $(MKDIR) $(prefix)$$POSTOFFICE/router && \
		$(MKDIR) $(prefix)$$POSTOFFICE/router ; \
		chmod 1777 $(prefix)$$POSTOFFICE/router ; \
	fi; \
	if [ ! -d $(prefix)$$POSTOFFICE/transport ]; then \
		echo $(MKDIR) $(prefix)$$POSTOFFICE/transport && \
		$(MKDIR) $(prefix)$$POSTOFFICE/transport ; \
		chmod 755 $(prefix)$$POSTOFFICE/transport ; \
		echo $(MKDIR) "$(prefix)$$POSTOFFICE/transport/{A,B,..,Z}" ; \
		for hh in A B C D E F G H I J K L M N O P Q R S T U V W X Y Z; do \
			$(MKDIR) $(prefix)$$POSTOFFICE/transport/$$hh ;	 \
			chmod 755 $(prefix)$$POSTOFFICE/transport/$$hh ; \
		done ; \
	fi ; \
	if [ ! -d $(prefix)$$LOGDIR ]; then \
		echo $(MKDIR) $(prefix)$$LOGDIR && \
		$(MKDIR) $(prefix)$$LOGDIR ; \
		chmod 755 $(prefix)$$LOGDIR ; \
	fi )

clientdirs:	$(PZCONFIG)
	-@(. $(PZCONFIG) ; \
	if [ ! -d $(prefix)$$MAILBIN ]; then \
		echo $(MKDIR) $(prefix)$$MAILBIN && \
			$(MKDIR) $(prefix)$$MAILBIN ; \
	fi )


# This is only good for testing "make dirs"
cleandirs: FRC $(PZCONFIG)
	-@( . $(PZCONFIG) ; \
	echo tar -cf /tmp/zmstuff.tar $(prefix)$$MAILBIN $(prefix)$$MAILSHARE $(prefix)$$POSTOFFICE && \
	tar -cf /tmp/zmstuff.tar $(prefix)$$MAILBIN $(prefix)$$MAILSHARE $(prefix)$$POSTOFFICE && \
	echo rm -rf $(prefix)$$MAILBIN $(prefix)$$MAILSHARE $(prefix)$$POSTOFFICE && \
	rm -rf $(prefix)$$MAILBIN $(prefix)$$MAILSHARE $(prefix)$$POSTOFFICE ; \
	rm -f +dirs )


mailbin: $(PZCONFIG) $(PMAILBIN) $(MD5SUM)
	-@(. $(PZCONFIG) ; \
	if [ ! -d $(prefix)$$MAILBIN/bak ]; then $(MKDIR) $(prefix)$$MAILBIN/bak ; fi ; \
	for file in $(PMAILBIN) ; \
	do \
		name=`expr $$file : '\([^.]*\)'` ; \
		if test -f $(prefix)$$MAILBIN/$$name -a \
			! -f $(prefix)$$MAILBIN/bak/$$name ; then \
			echo "mv -f $(prefix)$$MAILBIN/$$name $(prefix)$$MAILBIN/bak/$$name" && \
			mv -f $(prefix)$$MAILBIN/$$name $(prefix)$$MAILBIN/bak/$$name ; \
		fi ; \
		if cmp -s $(prefix)$$MAILBIN/$$name $$file ; then \
			continue ; \
		else \
		  echo $(INSTALL) -m 755 $$file $(prefix)$$MAILBIN/$$name ; \
		  $(INSTALL) -m 755 $$file $(prefix)$$MAILBIN/$$name ; \
		fi ; \
	done ; \
	$(INSTALL) -m 755 post-install.sh $(prefix)$$MAILBIN/post-install.sh )

mailshare:	$(PZCONFIG) $(PMAILSHARE) $(MD5SUM)
	-@(. $(PZCONFIG) ; pwd=`pwd` ; \
	MAILSHARE=$(prefix)$$MAILSHARE ; \
	if [ ! -d $$MAILSHARE/bak ]; then $(MKDIR) $$MAILSHARE/bak ; fi ; \
	for file in $(PMAILSHARE) ; \
	do \
		(echo "# Do not edit this file, instead edit $$pwd/$$file" ; \
		echo '#' ; cat $$file) > ms.$$$$ ; \
		echo $(INSTALL) -m 644 $$file $$MAILSHARE/proto/$$file ; \
		$(INSTALL) -m 644 ms.$$$$ $$MAILSHARE/proto/$$file ; \
		rm -f ms.$$$$ ; \
	done )


forms:	FRC $(MD5SUM)
	@( . $(PZCONFIG) ; \
	FORMSDIR="$(prefix)$$MAILSHARE/forms" ; \
	if [ ! -d "$$FORMSDIR/bak" ]; then \
		$(MKDIR) "$$FORMSDIR/bak" ; \
	fi ; \
	if [ ! -d "$$FORMSDIR/proto" ]; then \
		$(MKDIR) "$$FORMSDIR/proto" ; \
	fi ; \
	cd $(srcdir); \
	for file in forms/????* ; \
	do \
		name="`basename $$file`" ;	\
		if [ "$$name" = bak ] ; then	\
			continue ;		\
		fi ;				\
		echo $(INSTALL) -m 644 $$file $$FORMSDIR/proto/$$name ; \
		$(INSTALL) -m 644 $$file $$FORMSDIR/proto/$$name ; \
	done )


db:	FRC
	-@( . $(PZCONFIG) ; \
	MAILVAR=$(prefix)$$MAILVAR ; \
	echo "Don't forget to set up MAILVAR/db by hand -- if there is nothing, we seed it now" ; \
	$(INSTALL) -m 644 $(srcdir)/db/aliases $$MAILVAR/db/proto/aliases ; \
	$(INSTALL) -m 644 $(srcdir)/db/fqdnaliases $$MAILVAR/db/proto/fqdnaliases ; \
	$(INSTALL) -m 644 $(srcdir)/db/routes $$MAILVAR/db/proto/routes ; \
	$(INSTALL) -m 644 $(srcdir)/db/localnames $$MAILVAR/db/proto/localnames ; \
	$(INSTALL) -m 644 $(srcdir)/db/smtp-policy.src $$MAILVAR/db/proto/smtp-policy.src ; \
	$(INSTALL) -m 644 $(srcdir)/db/smtp-policy.relay $$MAILVAR/db/proto/smtp-policy.relay ; \
	)

cf:	FRC  $(MD5SUM)
	-@(. $(PZCONFIG) ; \
	MAILSHARE=$(prefix)$$MAILSHARE; \
	if [ ! -d $$MAILSHARE/proto ]; then \
		$(MKDIR) $$MAILSHARE/proto ; \
	fi ; \
	if [ ! -d $$MAILSHARE/cf ]; then \
		$(MKDIR) $$MAILSHARE/cf ; \
	fi ; \
	if [ ! -d $$MAILSHARE/cf/proto ]; then \
		$(MKDIR) $$MAILSHARE/cf/proto ; \
	fi ; \
	if [ ! -d $$MAILSHARE/cf/fc ]; then \
		$(MKDIR) $$MAILSHARE/cf/fc ; \
	fi ; \
	cp -p $(srcdir)/cf/*.cf $$MAILSHARE/cf/proto ; \
	cp -p $(srcdir)/cf/SMTP.cf $$MAILSHARE/proto/router.cf ; \
	/bin/rm -f `find $$MAILSHARE/. -name "*.fc" -print` \
		foo-file ; \
	cp -p $(srcdir)/cf/SMTP.cf $$MAILSHARE/proto/router.cf ; \
	)

clean:	FRC
	rm -f ./+* *~
distclean: clean
	rm -f Makefile sm.conf smtpserver.conf zmailer.sh \
		newfqdnaliases newaliases newdb mailrm.sh \
		scheduler.conf post-install.sh smtp-tls.conf
depend:
