## 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% ?DISTDIR?distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) 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 \ ## ## 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. ## ?CYGNUS? if test -f $$file; then d=.; else d=$(srcdir); fi; \ ?!CYGNUS? d=$(srcdir); \ ## 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-all dist dist-all: 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-all: 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-all: 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-all: 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-all: 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% ## ------------------------- ## ## 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 \ && $(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%