# Master Makefile for the ZMailer # From configure.in ! VERSION = @PACKAGE_VERSION@ BUGREPORT = "@PACKAGE_BUGREPORT@" srcdir = @srcdir@ VPATH = @srcdir@ @SET_MAKE@ DESTDIR= prefix= ZCONFIG = @ZMAILERCFGFILE@ ZCONF = ./zmailer.Config #ZDEPEND = Dependencies CPPDEP = @CPPDEP@ MKDIR = @MKDIR@ MAILBIN = $(DESTDIR)@MAILBIN@ SHELL = /bin/sh DISTFILES = COPYING COPYING.LIB ChangeLog Makefile.in README INSTALL \ NEWS configure configure.in config.h.in mkinstalldirs install-sh \ stamp-h.in acconfig.h # Redundant stuff for making only selected programs. PROGS = router/router scheduler/scheduler \ scheduler/mailq smtpserver/smtpserver transports/-ok \ compat/rmail/rmail compat/sendmail/sendmail \ utils/vacation/vacation utils/makedb/makedb # Subdirectories to run make in for the primary targets. SUBDIRS = smtpserver router scheduler transports compat utils # Subdirectories where to run 'make clean' MOREDIRS = libs lib libc libsh libident libmalloc libresolv ssl \ proto doc man MOREDIRS2 = sfio # Files to remove in cleanup CLEANFILES = include/rfc822.entry $(ZCONF) version.c DISTCLEANFILES = include/mail.h SiteConfig bin/mklibdeb bin/mkdeb \ utils/zmailer.init.sh proto/cf/SMTP+UUCP.cf \ proto/cf/TELE-FI.cf proto/cf/UTdefault.cf \ proto/db/aliases \ man/Makefile proto/db/Makefile \ bin/mkdep bin/mklibdep #.SUFFIXES: all: config.h Makefile rfc822.entry $(ZCONF) SiteConfig \ libs/libtag include/sfio.h #rm -f libs/libtag for subdir in $(SUBDIRS); do \ echo making $@ in $$subdir; \ (cd $$subdir && $(MAKE) $(MFLAGS) $@) || exit 1; \ done # If need be, "make libs" at the top-level will remake all libraries include/sfio.h libs/libtag libs: force cd libs && $(MAKE) $(MFLAGS) all info dvi: cd doc && $(MAKE) $@ check: installcheck: rfc822.entry: include/rfc822.entry include/rfc822.entry: cd router ; $(MAKE) $(MFLAGS) rfc822.entry install-cf: # all @if [ -n "${prefix}" -a -z "${DESTDIR}" ] ; then echo "INSTEAD OF prefix= PLEASE INSTALL WITH: DESTDIR=.. parameter"; exit 1; fi @. $(ZCONF) ; if [ -f $$ZCONFIG ] ; then \ cmp -s $(ZCONF) $(DESTDIR)$$ZCONFIG || \ echo "**" && echo "** Please consider copying $(ZCONF) to $$ZCONFIG !" && echo "**";\ else \ cp $(ZCONF) $(DESTDIR)$$ZCONFIG; chmod 644 $(DESTDIR)$$ZCONFIG; \ fi cd proto ; $(MAKE) $(MFLAGS) cf install-bin: # all @if [ -n "${prefix}" -a -z "${DESTDIR}" ] ; then echo "INSTEAD OF prefix= PLEASE INSTALL WITH: DESTDIR=.. parameter"; exit 1; fi . $(ZCONF) ; zdir=`echo $$ZCONFIG|sed -e 's!\(.*\)/\([^/]*\)!\1/!'`; $(MKDIR) $(DESTDIR)$$zdir @. $(ZCONF) ; if [ -f $$ZCONFIG ] ; then \ cmp -s $(ZCONF) $(DESTDIR)$$ZCONFIG || \ echo "**" && echo "** Please consider copying $(ZCONF) to $$ZCONFIG !" && echo "**";\ else \ cp $(ZCONF) $(DESTDIR)$$ZCONFIG; chmod 644 $(DESTDIR)$$ZCONFIG; \ fi @. $(ZCONF) ; cp $(srcdir)/ChangeLog $(DESTDIR)$$MAILSHARE/ChangeLog ; chmod 644 $(DESTDIR)$$MAILSHARE/ChangeLog @. $(ZCONF) ; cp ./config.status $(DESTDIR)$$MAILSHARE/config.status ; chmod 644 $(DESTDIR)$$MAILSHARE/config.status cd proto ; $(MAKE) $(MFLAGS) install-bin PZCONFIG="../$(ZCONF)" cd compat ; $(MAKE) $(MFLAGS) install cd router ; $(MAKE) $(MFLAGS) install cd scheduler ; $(MAKE) $(MFLAGS) install cd smtpserver ; $(MAKE) $(MFLAGS) install cd transports ; $(MAKE) $(MFLAGS) install cd libc ; $(MAKE) $(MFLAGS) install cd utils ; $(MAKE) $(MFLAGS) install @. $(ZCONF) ; if [ -f $$ZCONFIG ] ; then \ cmp -s $(ZCONF) $(DESTDIR)$$ZCONFIG || \ echo "**" && echo "** Please consider copying $(ZCONF) to $$ZCONFIG !" && echo "**";\ else \ cp $(ZCONF) $(DESTDIR)$$ZCONFIG; chmod 644 $(DESTDIR)$$ZCONFIG; \ fi $(MAKE) $(MFLAGS) post-install-note dirs: @cd proto ; $(MAKE) $(MFLAGS) dirs PZCONFIG="../$(ZCONF)" install: @if [ -n "${prefix}" -a -z "${DESTDIR}" ] ; then echo "INSTEAD OF prefix= PLEASE INSTALL WITH: DESTDIR=.. parameter"; exit 1; fi $(MAKE) $(MFLAGS) dirs # all @. $(ZCONF) ; zdir=`echo $$ZCONFIG|sed -e 's!\(.*\)/\([^/]*\)!\1/!'`; $(MKDIR) $(DESTDIR)$$zdir @. $(ZCONF) ; cp $(ZCONF) $(DESTDIR)$$ZCONFIG ; chmod 644 $(DESTDIR)$$ZCONFIG @. $(ZCONF) ; cp $(srcdir)/ChangeLog $(DESTDIR)$$MAILSHARE/ChangeLog ; chmod 644 $(DESTDIR)$$MAILSHARE/ChangeLog @. $(ZCONF) ; cp ./config.status $(DESTDIR)$$MAILSHARE/config.status ; chmod 644 $(DESTDIR)$$MAILSHARE/config.status @cd proto ; $(MAKE) $(MFLAGS) install PZCONFIG="../$(ZCONF)" @cd compat ; $(MAKE) $(MFLAGS) install @cd router ; $(MAKE) $(MFLAGS) install @cd scheduler ; $(MAKE) $(MFLAGS) install @cd smtpserver ; $(MAKE) $(MFLAGS) install @cd transports ; $(MAKE) $(MFLAGS) install @cd libc ; $(MAKE) $(MFLAGS) install @cd utils ; $(MAKE) $(MFLAGS) install @cd man ; $(MAKE) $(MFLAGS) install $(MAKE) $(MFLAGS) post-install-note post-install-note: if test "$(DESTDIR)" = "" ; then $(MAKE) $(MFLAGS) post-install-text ; fi if test "$(DESTDIR)" != "" ; then $(MAKE) $(MFLAGS) post-install-text-dd ; fi post-install-text: @echo ">>>> " @echo ">>>> Please do run $(MAILBIN)/post-install" @echo ">>>> " post-install-text-dd: @echo ">>>> " @echo ">>>> Please do run $(MAILBIN)/post-install --destdir $(DESTDIR)" @echo ">>>> " router/router: cd router ; $(MAKE) $(MFLAGS) router-a scheduler/scheduler: cd scheduler ; $(MAKE) $(MFLAGS) all scheduler-old/scheduler-old: cd scheduler-old ; $(MAKE) $(MFLAGS) all scheduler/mailq: cd scheduler ; $(MAKE) $(MFLAGS) all smtpserver/smtpserver: cd smtpserver ; $(MAKE) $(MFLAGS) smtpserver-a compat/rmail/rmail: cd compat ; $(MAKE) $(MFLAGS) rmail/rmail-always compat/sendmail/sendmail: cd compat ; $(MAKE) $(MFLAGS) sendmail/sendmail-always utils/vacation/vacation: cd utils/vacation ; $(MAKE) $(MFLAGS) vacation utils/makedb/makedb: cd utils/makedb ; $(MAKE) $(MFLAGS) lib/libz.a: lib/*.c cd lib ; $(MAKE) $(MFLAGS) libc/libzc.a: libc/*.c cd libc ; $(MAKE) $(MFLAGS) libauth/libauth.a: libauth/authuser.c libauth/authuser.h cd libauth; $(MAKE) $(MFLAGS) libresolv/libresolv.a: libresolv/*.c cd libresolv; $(MAKE) $(MFLAGS) transports/libta/libta.a: transports/libta/*.c cd transports/libta ; $(MAKE) $(MFLAGS) transports/-ok: cd transports ; $(MAKE) $(MFLAGS) mostlyclean: mostlyclean-recursive mostlyclean-local clean: clean-recursive clean-local distclean: distclean-recursive distclean-local : rm config.status realclean: realclean-recursive realclean-local : rm config.status TAGS clean-recursive distclean-recursive realclean-recursive mostlyclean-recursive: for subdir in $(SUBDIRS) $(MOREDIRS) $(MOREDIRS2); do \ target=`echo $@|sed 's/-recursive//'`; \ echo making $$target in $$subdir; \ (cd $$subdir && $(MAKE) $(MFLAGS) $$target) || exit 1; \ done rm -f $(CLEANFILES) mostlyclean-local: clean-local: mostlyclean-local -tt=`find . "(" -name "*~" -o -name "*.log" -o -name "*.orig" ")" -print` && \ rm -f clean.state $$tt clean-version: -rm -f `find . -name version.c -print | egrep -v libmalloc` dummy.name -rm -f `find . -name revision -print ` dummy.name distclean-local: clean-local clean-version rm -f config.cache config.h config.log stamp-h distname rm -rf autom4te.cache rm -f $(DISTCLEANFILES) realclean-local: distclean-local neat: -rm -f $(ZCONF) $(CONF).sed eddep makedep Makefile.bak *.tar scrub: distclean -rm -f make.log make.out make.err* errs scrub-obsolete-tail: # No null entry at all, let it be generated into proper form # when real processing goes thru.. # @echo 'typedef enum { nilHeaderSemantics = -1 } HeaderSemantics;' > include/rfc822.entry dist: @echo 'Did you run "make scrub" first?' ; sleep 2 chmod -R a+rX . find . -type l -o -type d -o -type f -print | \ egrep -v -e '/(private[/$$]|config.cache|config.status|CVS[/$$]|RCS[/$$]|ID$$|.*\.o$$|fc[/$$]|.*\.a$$|stamp)' | \ CWD=`pwd` sed -e '/\.tar.*/d' -e "s/^\./`sh -c 'basename \`pwd\`'`/" | \ sort -t/ > MANIFEST cp MANIFEST /tmp (cd .. ; tar cvf - `cat /tmp/MANIFEST` ) > `basename \`pwd\``.tar rm -f /tmp/MANIFEST #MANIFEST distprivate: @echo 'Did you run "make scrub" first?' ; sleep 2 chmod -R a+rX . find . -type l -o -type d -o -type f -print | \ egrep -v -e '/(config.cache|config.status|CVS[/$$]|RCS[/$$]|ID$$|.*\.o$$|fc[/$$]|.*\.a$$|stamp)' | \ CWD=`pwd` sed -e '/\.tar.*/d' -e "s/^\./`sh -c 'basename \`pwd\`'`/" | \ sort -t/ > MANIFEST cp MANIFEST /tmp (cd .. ; tar cvf - `cat /tmp/MANIFEST` ) > `basename \`pwd\``.tar rm -f /tmp/MANIFEST #MANIFEST dist-usa: @echo 'Did you run "make scrub" first?' ; sleep 2 chmod -R a+rX . ./bin/usa-itar-stripper.sh find . -type d -o -type f -print | \ egrep -v -e '/(private[/$$]|config.cache|crypto|config.status|CVS[/$$]|RCS[/$$]|ID$$|.*\.o$$|fc[/$$]|.*\.a$$|stamp)' | \ CWD=`pwd` sed -e '/\.tar.*/d' -e "s/^\./`sh -c 'basename \`pwd\`'`/" | \ sort -t/ > MANIFEST cp MANIFEST /tmp (cd .. ; tar cvf - `cat /tmp/MANIFEST` ) > `basename \`pwd\``-usa.tar ./bin/usa-itar-stripper.sh reverse mv crypto.diff crypto-`basename \`pwd\``.diff rm -f /tmp/MANIFEST #MANIFEST # For the justification of the following Makefile rules, see node # `Automatic Remaking' in GNU Autoconf documentation. SiteConfig Makefile: config.status Makefile.in CONFIG_FILES=$@ CONFIG_HEADERS= ./config.status config.h: stamp-h stamp-h: config.status $(srcdir)/config.h.in CONFIG_FILES= CONFIG_HEADERS=config.h ./config.status config.status: configure ./config.status --recheck # # The GNU autoconf guide says: have following condition, however # not all systems have "autoconf", and thus people pulling this # package from CVS are getting serious problems -- or have to # "touch configure" after the CVS pull. # #configure: configure.in # cd $(srcdir) && autoconf # # Doing all parts of multistage autoconf process: # autoconf: aclocal -I m4/ autoconf autoheader config.h.in: stamp-h.in stamp-h.in: configure.in # cd $(srcdir) && autoheader # # Use echo instead of date to avoid spurious conflicts for # # people who use CVS, since stamp-h.in is distributed. # echo > $(srcdir)/$@ $(ZCONF): SiteConfig (echo '# Do not edit this file, instead edit '`pwd`'/SiteConfig.in file'; \ cat SiteConfig | \ sed -n -e '/^\([a-zA-Z][^ ]*\)[ ]*=[ ]*\(.*\)[ ]*$$/!d' \ -e 's/^\([^ ]*\)[ ]*=[ ]*\(.*\)[ ]*$$/\1="\2"/' \ -e 's/^\([^=]*\)=""\(.*\)""$$/\1="\2"/' \ -e 's/^\([^=]*\)="\([^ ]*\)"$$/\1=\2/' \ -e p ) > $@ # The sed-patterns above do: # - match sh-variable set expression, discard all else # - pick the variable name, and the parameter string and form up # an expression: VAR="DATA" # - if the newly made expression has double quotes (because the input # was quoted), remove the extra quotes # - if a value is quoted, and it does not have white-space in it, strip # the quotes away # - and as always with sed, "p" in the end to output the result #OLD OLD OLD OLD OLD OLD OLD OLD OLD OLD OLD OLD OLD OLD # $(ZCONF): SiteConfig # (echo '# Do not edit this file, instead edit '`pwd`'/SiteConfig.in file'; \ # cat SiteConfig | \ # sed -n -e '/^[^ ]*=[ ]*[^#].*/!d' \ # -e 's:^\([^ ]*\)=[ ]*\([^#].*\):\1=\2:' \ # -e 's:=\([^# ]*[ ][^#]*\)\(.*\):="\1"\2:' \ # -e 's:\([ ][ ]*\)":"\1:' \ # -e 's:"\([^ ]*\)":\1:' -e 's:""::' -e p ) > $@ force: version.c: force # Makefile @sh -c ': $${USER=$${LOGNAME-root}} ; \ REVISION=`cat revision 2>/dev/null || (echo 0 | tee revision)` ; \ HOSTNAME=`(/bin/hostname || /bin/uname) 2>/dev/null` ; \ case "$$REVISION" in \ [0-9]|[0-9][0-9]|[0-9][0-9][0-9]) \ REVISION=`expr $$REVISION + 1` ;; \ *) REVISION=0 ;; \ esac ; \ echo $$REVISION > revision ; \ exec > version.c ; \ echo "const char *Version = \"${VERSION} #$${REVISION}: `date`\";"; \ echo "const char *VersionNumb = \"${VERSION} #$${REVISION}\";"; \ echo "const char *Bugreport = \"${BUGREPORT}\";"; \ echo "const char *CC_user = \"$${USER}@$${HOSTNAME}\";"; \ echo "const char *CC_pwd = \"`pwd`\";" ' depend: for x in $(SUBDIRS) $(MOREDIRS); do \ if [ -f $$x/Makefile ]; then \ ( cd $$x; ${MAKE} ${MFLAGS} depend CPPDEP="${CPPDEP}" ); \ fi ; \ done # Tell versions [3.59,3.63) of GNU make not to export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: # DO NOT DELETE THIS LINE -- It is used by 'make depend' to update this file