## automake - create Makefile.in from Makefile.am ## Copyright (C) 2001, 2002, 2003 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. ## 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% if %?TOPDIR_P% am__remove_distdir = \ { test ! -d $(distdir) \ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -fr $(distdir); }; } endif %?TOPDIR_P% .PHONY: distdir 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% @case `sed 15q $(srcdir)/NEWS` in \ *"$(VERSION)"*) : ;; \ *) \ echo "NEWS not updated; not releasing" 1>&2; \ exit 1;; \ esac endif %?CK-NEWS% endif %?TOPDIR_P% ## ## Only for the top dir. ## if %?TOPDIR_P% $(am__remove_distdir) mkdir $(distdir) endif %?TOPDIR_P% ## ## ?DISTDIRS? $(mkinstalldirs) %DISTDIRS% ## ## @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ ## ## Yet another hack to support SUN make. ## ## Let's assume `foo' appears in DISTFILES and is not a built file. ## When building with VPATH=$(srcdir), SUN make will rewrite `foo' as ## `$(srcdir)/foo'. An attempt to install the file with ## cp $file $(distdir)/$file ## will thus install $(srcdir)/foo as $(distdir)/$(srcdir)/foo ## instead of $(distdir)/foo. ## ## So let's strip this leading $(srcdir)/ when it exists. (As far we ## know, only SUN make adds it.) Searching whether the file is to be ## found in the source or build directory will be done latter. ## ## In case we are _not_ using SUN make, how can we be sure we are ## not stripping a legitimate filename that starts with the same ## pattern as $(srcdir)? ## Well, it can't happen without the Makefile author distributing ## something out of the distribution (which is bad). As an example, ## consider `EXTRA_DIST = ../bar'. This is an issue if $srcdir is `..', ## however getting this value for srcdir is impossible: `EXTRA_DIST = ../bar' ## implies we are in a subdirectory (so `../bar' is within the package), ## hence `$srcdir' is something like `../../subdir'. ## case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ## Also rewrite $(top_srcdir) (which sometimes appears in DISTFILES, and can ## be absolute) by $(top_builddir) (which is always relative). $(srcdir) will ## be prepended latter. $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ ## ## 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. Also check for directories in the build directory first, ## so one can ship generated directories. ## if test -f $$file || test -d $$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 \ dir="/$$dir"; \ $(mkinstalldirs) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ ## ## Use cp, not ln. 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. ## ## If a directory exists both in `.' and $(srcdir), then ## We copy the files from $(srcdir) first and then install those from ## `.'. This can help people who distribute directories made of ## source files _and_ generated files. It is also important when the ## directory exists only in $(srcdir), because some vendor Make (such ## as Tru64) will magically create an empty directory in `.' if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ ## 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. 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% list='$(%DIST_SUBDIR_NAME%)'; for subdir in $$list; 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-gzip dist-gzip: distdir $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) if %?BZIP2% .PHONY: dist-bzip2 dist-bzip2: distdir $(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2 $(am__remove_distdir) endif %?BZIP2% if %?COMPRESS% .PHONY: dist-tarZ dist-tarZ: distdir $(AMTAR) chof - $(distdir) | compress -c >$(distdir).tar.Z $(am__remove_distdir) endif %?COMPRESS% if %?SHAR% .PHONY: dist-shar dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__remove_distdir) endif %?SHAR% if %?ZIP% .PHONY: dist-zip dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__remove_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 dist-all dist 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) $(am__remove_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 $(am__remove_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) ## Compute the absolute path of `_inst'. Strip any leading DOS drive ## to allow DESTDIR installations. Otherwise $(DESTDIR)$(prefix) would ## expand to c:/temp/am-dc-5668/c:/src/package/package-1.0/_inst. dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ ## We will attemp a DESTDIR install in $dc_destdir. We don't ## create this directory under $dc_install_base, because it would ## create very long directory names. && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ ?DISTCHECK-HOOK? && $(MAKE) $(AM_MAKEFLAGS) distcheck-hook \ && cd $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ ?GETTEXT? --with-included-gettext \ ## Additional flags for configure. Keep this last in the configure ## invocation so the user can override previous options. $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ ## Make sure the package has proper DESTDIR support (we could not test this ## in the previous install/installcheck/uninstall test, because it's reasonable ## for installcheck to fail in a DESTDIR install). ## We make the `$dc_install_base' read-only because this is where files ## with missing DESTDIR support are likely to be installed. && chmod -R a-w "$$dc_install_base" \ ## The logic here is quite convoluted because we must clean $dc_destdir ## whatever happens (it won't be erased by the next run of distcheck like ## $(distdir) is). && ({ \ ## Build the directory, so we can cd into it even if `make install' ## didn't create it. (cd ../.. && $(mkinstalldirs) "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \ ## Make sure to remove the dist file we created in the test build ## directory. && rm -f $(distdir).tar.gz \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck $(am__remove_distdir) @echo "$(distdir).tar.gz is ready for distribution" | \ sed 'h;s/./=/g;p;x;p;x' ## Define distuninstallcheck_listfiles and distuninstallcheck separately ## from distcheck, so that they can be overridden by the user. .PHONY: distuninstallcheck distuninstallcheck_listfiles = find . -type f -print distuninstallcheck: ## We use -le 1 because the `dir' file (created by install-info) ## might still exist after uninstall. @cd $(distuninstallcheck_dir) \ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 ## Define distcleancheck_listfiles and distcleancheck separately ## from distcheck, so that they can be overridden by the user. .PHONY: distcleancheck distcleancheck_listfiles = find . -type f -print distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 endif %?TOPDIR_P%