## automake - create Makefile.in from Makefile.am
## Copyright 2001 Free Software Foundation, Inc.

## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 2, or (at your option)
## any later version.

## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
## GNU General Public License for more details.

## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
## 02111-1307, USA.

.PHONY: distdir

## DIST_COMMON comes first so that README can be the very first file.
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)

top_distdir = %TOP_DISTDIR%
if %?TOPDIR_P%
# Avoid unsightly `./'.
?DISTDIR?distdir = $(PACKAGE)-$(VERSION)
else !%?TOPDIR_P%
?DISTDIR?distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
endif !%?TOPDIR_P%

distdir: $(DISTFILES)
##
## For Gnits users, this is pretty handy.  Look at 15 lines
## in case some explanatory text is desirable.
##
if %?TOPDIR_P%
if  %?CK-NEWS%
	@if sed 15q $(srcdir)/NEWS | fgrep -e "$(VERSION)" >/dev/null; \
	then :; else \
	  echo "NEWS not updated; not releasing" 1>&2; \
	  exit 1; \
	fi
endif  %?CK-NEWS%
endif %?TOPDIR_P%
##
## Only for the top dir.
##
if %?TOPDIR_P%
	-chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir)
	mkdir $(distdir)
endif %?TOPDIR_P%
##
##
?DISTDIRS?	$(mkinstalldirs) %DISTDIRS%
##
##
	@for file in $(DISTFILES); do \
##
## Always look for the file in the build directory first.  That way
## for something like yacc output we will correctly pick up the latest
## version.
##
	  if test -f $$file; then d=.; else d=$(srcdir); fi; \
##
## Make the subdirectory for the file.  This is going to make `dist'
## really crawl, but it seems like the only way to do it, given that
## files in subdirectories can be specified for `dist' conditionally.
##
	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
	    $(mkinstalldirs) "$(distdir)/$$dir"; \
	  fi; \
##
## In loop, test for file existence because sometimes a file gets
## included in DISTFILES twice.  For example this happens when a single
## source file is used in building more than one program.  Also, there
## are situations in which "ln" can fail.  For instance a file to
## distribute could actually be a cross-filesystem symlink -- this can
## easily happen if "gettextize" was run on the distribution.
##
	  if test -d $$d/$$file; then \
## Don't mention $$file in destination argument, since this fails if
## destination directory already exists.  Also, use `-R' and not `-r'.
## `-r' is almost always incorrect.
	    cp -pR $$d/$$file $(distdir) \
	    || exit 1; \
	  else \
	    test -f $(distdir)/$$file \
	    || cp -p $$d/$$file $(distdir)/$$file \
	    || exit 1; \
	  fi; \
	done
##
## Test for directory existence here because previous automake
## invocation might have created some directories.  Note that we
## explicitly set distdir for the subdir make; that lets us mix-n-match
## many automake-using packages into one large package, and have "dist"
## at the top level do the right thing.  If we're in the topmost
## directory, then we use `distdir' instead of `top_distdir'; this lets
## us work correctly with an enclosing package.
##
if %?SUBDIRS%
	for subdir in $(%DIST_SUBDIR_NAME%); do \
	  if test "$$subdir" = .; then :; else \
	    test -d $(distdir)/$$subdir \
	    || mkdir $(distdir)/$$subdir \
	    || exit 1; \
	    (cd $$subdir && \
	      $(MAKE) $(AM_MAKEFLAGS) \
	        top_distdir="$(top_distdir)" \
	        distdir=../$(distdir)/$$subdir \
	        distdir) \
	      || exit 1; \
	  fi; \
	done
endif %?SUBDIRS%
##
## We might have to perform some last second updates, such as updating
## info files.
## We must explicitly set distdir and top_distdir for these sub-makes.
##
if %?DIST-TARGETS%
	$(MAKE) $(AM_MAKEFLAGS) \
	  top_distdir="${top_distdir}" distdir="$(distdir)" \
	  %DIST-TARGETS%
endif %?DIST-TARGETS%
##
## This complex find command will try to avoid changing the modes of
## links into the source tree, in case they're hard-linked.  It will
## also make directories writable by everybody, because some
## brain-dead tar implementations change ownership and permissions of
## a directory before extracting the files, thus becoming unable to
## extract them.
##
## Ignore return result from chmod, because it might give an error
## if we chmod a symlink.
##
## Another nastiness: if the file is unreadable by us, we make it
## readable regardless of the number of links to it.  This only
## happens in perverse cases.
##
## We use $(install_sh) because that is a known-portable way to modify
## the file in place in the source tree.
##
if %?TOPDIR_P%
	-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
	  ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
	|| chmod -R a+r $(distdir)
endif %?TOPDIR_P%




## --------------------------------------- ##
## Building various distribution flavors.  ##
## --------------------------------------- ##

## Note that we don't use GNU tar's `-z' option.  One reason (but not
## the only reason) is that some versions of tar (e.g., OSF1)
## interpret `-z' differently.

if %?TOPDIR_P%

GZIP_ENV = --best
.PHONY: dist
dist: distdir
	$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
	-chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir)

if  %?BZIP2%
.PHONY: dist-bzip2
dist-bzip2: distdir
	$(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2
	-chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir)
endif  %?BZIP2%


if  %?COMPRESS%
.PHONY: dist-tarZ
dist-tarZ: distdir
	$(AMTAR) chof - $(distdir) | compress -c >$(distdir).tar.Z
	-chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir)
endif  %?COMPRESS%


if  %?SHAR%
.PHONY: dist-shar
dist-shar: distdir
	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
	-chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir)
endif  %?SHAR%


if  %?ZIP%
.PHONY: dist-zip
dist-zip: distdir
	-rm -f $(distdir).zip
	zip -rq $(distdir).zip $(distdir)
	-chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir)
endif  %?ZIP%

endif %?TOPDIR_P%



## ------------------------------------------------- ##
## Building all the requested distribution flavors.  ##
## ------------------------------------------------- ##

## Currently we cannot use if/endif inside a rule.  The file_contents
## parser needs work.

if %?TOPDIR_P%

.PHONY: dist-all
dist-all: distdir
	$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
?BZIP2?	$(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2
?COMPRESS?	$(AMTAR) chof - $(distdir) | compress -c >$(distdir).tar.Z
?SHAR?	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
?ZIP?	-rm -f $(distdir).zip
?ZIP?	zip -rq $(distdir).zip $(distdir)
	-chmod -R a+w $(distdir) >/dev/null 2>&1; rm -rf $(distdir)

endif %?TOPDIR_P%


## ------------------------- ##
## Checking a distribution.  ##
## ------------------------- ##


if %?TOPDIR_P%
# This target untars the dist file and tries a VPATH configuration.  Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
.PHONY: distcheck
distcheck: dist
## Make sure we can remove distdir before trying to remove it.
	-chmod -R a+w $(distdir) > /dev/null 2>&1; rm -rf $(distdir)
	GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf -
## Make the new source tree read-only.  Distributions ought to work in
## this case.  However, make the top-level directory writable so we
## can make our new subdirs.
	chmod -R a-w $(distdir); chmod a+w $(distdir)
	mkdir $(distdir)/=build
	mkdir $(distdir)/=inst
## Undo the write access.
	chmod a-w $(distdir)
	dc_install_base=`CDPATH=: && cd $(distdir)/=inst && pwd` \
?DISTCHECK-HOOK?	  && $(MAKE) $(AM_MAKEFLAGS) distcheck-hook \
	  && cd $(distdir)/=build \
	  && ../configure --srcdir=.. --prefix=$$dc_install_base \
?GETTEXT?	    --with-included-gettext \
	  && $(MAKE) $(AM_MAKEFLAGS) \
	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
	  && $(MAKE) $(AM_MAKEFLAGS) check \
	  && $(MAKE) $(AM_MAKEFLAGS) install \
	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
## We use -le 1 because the `dir' file might still exist after uninstall.
	  && (test `find $$dc_install_base -type f -print | wc -l` -le 1 \
	     || (echo "Error: files left after uninstall" 1>&2; \
	         exit 1) ) \
	  && $(MAKE) $(AM_MAKEFLAGS) dist \
	  && $(MAKE) $(AM_MAKEFLAGS) distclean \
## Make sure to remove the dist file we created in the test build
## directory.
	  && rm -f $(distdir).tar.gz \
	  && (test `find . -type f -print | wc -l` -eq 0 \
	     || (echo "Error: files left after distclean" 1>&2; \
	         exit 1) )
	-chmod -R a+w $(distdir) > /dev/null 2>&1; rm -rf $(distdir)
	@echo "$(distdir).tar.gz is ready for distribution" | \
	  sed 'h;s/./=/g;p;x;p;x'
endif %?TOPDIR_P%
