--- /dev/null
+## $Id: Makefile 7488 2005-12-25 00:26:08Z eagle $
+
+include Makefile.global
+
+## All installation directories except for $(PATHRUN), which has a
+## different mode than the rest.
+INSTDIRS = $(PATHNEWS) $(PATHBIN) $(PATHAUTH) $(PATHAUTHRESOLV) \
+ $(PATHAUTHPASSWD) $(PATHCONTROL) $(PATHFILTER) \
+ $(PATHRNEWS) $(PATHDB) $(PATHDOC) $(PATHETC) $(PATHLIB) \
+ $(PATHMAN) $(MAN1) $(MAN3) $(MAN5) $(MAN8) $(PATHSPOOL) \
+ $(PATHTMP) $(PATHARCHIVE) $(PATHARTICLES) $(PATHINCOMING) \
+ $(PATHINBAD) $(PATHTAPE) $(PATHOVERVIEW) $(PATHOUTGOING) \
+ $(PATHLOG) $(PATHLOG)/OLD $(PATHINCLUDE)
+
+## LIBDIRS are built before PROGDIRS, make update runs in all UPDATEDIRS,
+## and make install runs in all ALLDIRS. Nothing runs in test except the
+## test target itself and the clean targets. Currently, include is built
+## before anything else but nothing else runs in it except clean targets.
+LIBDIRS = include lib storage history
+PROGDIRS = innd nnrpd innfeed control expire frontends backends authprogs \
+ scripts
+UPDATEDIRS = $(LIBDIRS) $(PROGDIRS) doc
+ALLDIRS = $(UPDATEDIRS) samples site
+CLEANDIRS = $(ALLDIRS) include tests
+
+## The directory name and tar file to use when building a release.
+TARDIR = inn-$(VERSION)
+TARFILE = $(TARDIR).tar
+
+## The directory to use when building a snapshot.
+SNAPDIR = inn-$(SNAPSHOT)-$(SNAPDATE)
+
+## DISTDIRS gets all directories from the MANIFEST, and DISTFILES gets all
+## regular files. Anything not listed in the MANIFEST will not be included
+## in a distribution. These are arguments to sed.
+DISTDIRS = -e 1,2d -e '/(Directory)/!d' -e 's/ .*//' -e 's;^;$(TARDIR)/;'
+SNAPDIRS = -e 1,2d -e '/(Directory)/!d' -e 's/ .*//' -e 's;^;$(SNAPDIR)/;'
+DISTFILES = -e 1,2d -e '/(Directory)/d' -e 's/ .*//'
+
+
+## Major target -- build everything. Rather than just looping through
+## all the directories, use a set of parallel rules so that make -j can
+## work on more than one directory at a time.
+all: all-include all-libraries all-programs
+ cd doc && $(MAKE) all
+ cd samples && $(MAKE) all
+ cd site && $(MAKE) all
+
+all-libraries: all-lib all-storage all-history
+
+all-include: ; cd include && $(MAKE) all
+all-lib: all-include ; cd lib && $(MAKE) all
+all-storage: all-lib ; cd storage && $(MAKE) library
+all-history: all-storage ; cd history && $(MAKE) all
+
+all-programs: all-innd all-nnrpd all-innfeed all-control all-expire \
+ all-frontends all-backends all-authprogs all-scripts \
+ all-store-util
+
+all-authprogs: all-lib ; cd authprogs && $(MAKE) all
+all-backends: all-libraries ; cd backends && $(MAKE) all
+all-control: ; cd control && $(MAKE) all
+all-expire: all-libraries ; cd expire && $(MAKE) all
+all-frontends: all-libraries ; cd frontends && $(MAKE) all
+all-innd: all-libraries ; cd innd && $(MAKE) all
+all-innfeed: all-libraries ; cd innfeed && $(MAKE) all
+all-nnrpd: all-libraries ; cd nnrpd && $(MAKE) all
+all-scripts: ; cd scripts && $(MAKE) all
+all-store-util: all-libraries ; cd storage && $(MAKE) programs
+
+
+## If someone tries to run make before running configure, tell them to run
+## configure first.
+Makefile.global:
+ @echo 'Run ./configure before running make. See INSTALL for details.'
+ @exit 1
+
+
+## Installation rules. make install installs everything; make update only
+## updates the binaries, scripts, and documentation and leaves config
+## files alone.
+install: directories
+ @for D in $(ALLDIRS) ; do \
+ echo '' ; \
+ cd $$D && $(MAKE) install || exit 1 ; cd .. ; \
+ done
+ @echo ''
+ @echo 'If this is a first-time installation, a minimal active file and'
+ @echo 'history database have been installed. Do not forget to update'
+ @echo 'your cron entries and configure INN. See INSTALL for more'
+ @echo 'information.'
+ @echo ''
+
+directories:
+ @chmod +x support/install-sh
+ for D in $(INSTDIRS) ; do \
+ support/install-sh $(OWNER) -m 0755 -d $(D)$$D ; \
+ done
+ support/install-sh $(OWNER) -m 0750 -d $(D)$(PATHRUN)
+
+update:
+ @chmod +x support/install-sh
+ @for D in $(UPDATEDIRS) ; do \
+ echo '' ; \
+ cd $$D && $(MAKE) install || exit 1 ; cd .. ; \
+ done
+ $(PATHBIN)/innupgrade $(PATHETC)
+
+## Install a certificate for TLS/SSL support.
+cert:
+ $(SSLBIN)/openssl req -new -x509 -nodes \
+ -out $(PATHLIB)/cert.pem -days 366 \
+ -keyout $(PATHLIB)/key.pem
+ chown $(NEWSUSER) $(PATHLIB)/cert.pem
+ chgrp $(NEWSGROUP) $(PATHLIB)/cert.pem
+ chmod 640 $(PATHLIB)/cert.pem
+ chown $(NEWSUSER) $(PATHLIB)/key.pem
+ chgrp $(NEWSGROUP) $(PATHLIB)/key.pem
+ chmod 600 $(PATHLIB)/key.pem
+
+
+## Cleanup targets. clean deletes all compilation results but leaves the
+## configure results. distclean or clobber removes everything not part of
+## the distribution tarball. maintclean removes some additional files
+## created as part of the release process.
+clean:
+ @for D in $(CLEANDIRS) ; do \
+ echo '' ; \
+ cd $$D && $(MAKE) clean || exit 1 ; cd .. ; \
+ done
+
+clobber realclean distclean:
+ @for D in $(CLEANDIRS) ; do \
+ echo '' ; \
+ cd $$D && $(MAKE) $(FLAGS) clobber && cd .. ; \
+ done
+ @echo ''
+ rm -f LIST.* Makefile.global TAGS tags config.cache config.log
+ rm -f config.status libtool support/fixscript
+
+maintclean: distclean
+ rm -rf $(TARDIR)
+ rm -f CHANGES ChangeLog inn*.tar.gz
+
+
+## Other generic targets.
+depend tags ctags profiled:
+ @for D in $(ALLDIRS) ; do \
+ echo '' ; \
+ cd $$D && $(MAKE) $@ || exit 1 ; cd .. ; \
+ done
+
+TAGS etags:
+ etags */*.c */*.h */*/*.c */*/*.h
+
+
+## Run the test suite.
+check test tests:
+ cd tests && $(MAKE) test
+
+
+## For maintainers, build the entire source base with warnings enabled.
+warnings:
+ $(MAKE) COPT="$(WARNINGS) $(COPT)" all
+
+
+## Make a release. We create a release by recreating the directory
+## structure and then copying over all files listed in the MANIFEST. If it
+## isn't in the MANIFEST, it doesn't go into the release. We also update
+## the version information in Makefile.global.in to remove the prerelease
+## designation and update all timestamps to the date the release is made.
+release: ChangeLog
+ rm -rf $(TARDIR)
+ rm -f inn*.tar.gz
+ mkdir $(TARDIR)
+ for d in `sed $(DISTDIRS) MANIFEST` ; do mkdir -p $$d ; done
+ for f in `sed $(DISTFILES) MANIFEST` ; do \
+ cp $$f $(TARDIR)/$$f || exit 1 ; \
+ done
+ sed 's/= prerelease/=/' < Makefile.global.in \
+ > $(TARDIR)/Makefile.global.in
+ cp ChangeLog $(TARDIR)
+ find $(TARDIR) -type f -print | xargs touch -t `date +%m%d%H%M.%S`
+ tar cf $(TARFILE) $(TARDIR)
+ $(GZIP) -9 $(TARFILE)
+
+## Generate the ChangeLog using support/mkchangelog. This should only be
+## run by a maintainer since it depends on cvs log working and also
+## requires cvs2cl be available somewhere.
+ChangeLog:
+ $(PERL) support/mkchangelog
+
+
+## Check the MANIFEST against the files present in the current tree,
+## building a list with find and running diff between the lists.
+check-manifest:
+ sed -e 1,2d -e 's/ .*//' MANIFEST > LIST.manifest
+ $(PERL) support/mkmanifest > LIST.real
+ diff -u LIST.manifest LIST.real
+
+
+## Make a snapshot. This is like making a release, except that we don't do
+## the ChangeLog thing and we don't change the version number. We also
+## assume that SNAPSHOT has been set to the appropriate current branch.
+snapshot:
+ rm -rf $(SNAPDIR)
+ rm -f inn*.tar.gz
+ mkdir $(SNAPDIR)
+ set -e ; for d in `sed $(SNAPDIRS) MANIFEST` ; do mkdir -p $$d ; done
+ set -e ; for f in `sed $(DISTFILES) MANIFEST` ; do \
+ cp $$f $(SNAPDIR)/$$f ; \
+ done
+ cp README.snapshot $(SNAPDIR)/
+ sed 's/= prerelease/= $(SNAPDATE) snapshot/' \
+ Makefile.global.in > $(SNAPDIR)/Makefile.global.in
+ find $(SNAPDIR) -type f -print | xargs touch -t `date +%m%d%H%M.%S`
+ tar cf $(SNAPDIR).tar $(SNAPDIR)
+ $(GZIP) -9 $(SNAPDIR).tar