X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=Makefile.am;h=143308a11be7ebfdec6e1bf406982c4eddc5b8c4;hb=0ac06406dcc6cf9c5f1fbeef340764e73cc8eae0;hp=22a8fbd1491a5470684bdbf605a96ea583dd77d6;hpb=d47000c6c7fe974919cb6e256fcc866eb6b19273;p=platform%2Fupstream%2Fautomake.git diff --git a/Makefile.am b/Makefile.am index 22a8fbd..143308a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2,7 +2,7 @@ ## Makefile for Automake. -# Copyright (C) 1995-2012 Free Software Foundation, Inc. +# Copyright (C) 1995-2013 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 @@ -22,11 +22,22 @@ CLEANFILES = DISTCLEANFILES = MAINTAINERCLEANFILES = EXTRA_DIST = +TAGS_FILES = +dist_noinst_DATA = +nodist_noinst_DATA = +dist_noinst_SCRIPTS = +nodist_noinst_SCRIPTS = ## ------------ ## ## Top level. ## ## ------------ ## +EXTRA_DIST += \ + bootstrap.sh \ + GNUmakefile \ + HACKING \ + PLANS + # We want a handful of substitutions to be fully-expanded by make; # then use config.status to substitute the remainder where a single # expansion is sufficient. We use a funny notation here to avoid @@ -58,55 +69,14 @@ generated_file_finalize = $(AM_V_at) \ fi; \ chmod a-w $@-t && mv -f $@-t $@ -bin_SCRIPTS = automake aclocal - -CLEANFILES += $(bin_SCRIPTS) -AUTOMAKESOURCES = automake.in aclocal.in +# For some tests or targets, we need to have the just-build automake and +# aclocal scripts avaiable on PATH. +extend_PATH = \ + { PATH='$(abs_builddir)/t/wrap'$(PATH_SEPARATOR)$$PATH && export PATH; } -TAGS_FILES = $(AUTOMAKESOURCES) - -EXTRA_DIST += \ - $(AUTOMAKESOURCES) \ - bootstrap.sh \ - GNUmakefile \ - syntax-checks.mk \ - HACKING - -## Make versioned links. We only run the transform on the root name; -## then we make a versioned link with the transformed base name. This -## seemed like the most reasonable approach. -install-exec-hook: - @$(POST_INSTALL) - @for p in $(bin_SCRIPTS); do \ - f="`echo $$p|sed '$(transform)'`"; \ - fv="$$f-$(APIVERSION)"; \ - rm -f "$(DESTDIR)$(bindir)/$$fv"; \ - echo " $(LN) '$(DESTDIR)$(bindir)/$$f' '$(DESTDIR)$(bindir)/$$fv'"; \ - $(LN) "$(DESTDIR)$(bindir)/$$f" "$(DESTDIR)$(bindir)/$$fv"; \ - done - -uninstall-hook: - @for p in $(bin_SCRIPTS); do \ - f="`echo $$p|sed '$(transform)'`"; \ - fv="$$f-$(APIVERSION)"; \ - rm -f "$(DESTDIR)$(bindir)/$$fv"; \ - done - -## These files depend on Makefile so they are rebuilt if $(VERSION), -## $(datadir) or other do_subst'ituted variables change. -automake: automake.in -aclocal: aclocal.in -automake aclocal: Makefile - $(AM_V_at)rm -f $@ $@-t - $(AM_V_GEN)in=$@.in; $(do_subst) <$(srcdir)/$@.in >$@-t -## We can't use '$(generated_file_finalize)' here, because currently -## Automake contains occurrences of unexpanded @substitutions@ in -## comments, and that is perfectly legit. - $(AM_V_at)chmod a+x,a-w $@-t && mv -f $@-t $@ - -## The master location for INSTALL is lib/INSTALL. -## This is where "make fetch" will install new versions. -## Make sure we also update this copy. +# The master location for INSTALL is lib/INSTALL. +# This is where "make fetch" will install new versions. +# Make sure we also update this copy. INSTALL: lib/INSTALL $(AM_V_GEN)cp $(srcdir)/lib/INSTALL $@ @@ -115,520 +85,12 @@ INSTALL: lib/INSTALL maintainer-clean-local: rm -rf .autom4te.cache +# So that automake won't complain about the missing ChangeLog. +# The real rule for ChangeLog generation is now in maintainer/maint.mk +# (as it is maintainer-specific). +ChangeLog: -## -------------------------------------------------------------------- ## -## Auxiliary scripts and files for use with "automake --add-missing". ## -## -------------------------------------------------------------------- ## - -dist_pkgvdata_DATA = \ - lib/COPYING \ - lib/INSTALL \ - lib/texinfo.tex - -## These must all be executable when installed. However, if we use -## _SCRIPTS, then the program transform will be applied, which is not -## what we want. So we make them executable by hand. -dist_script_DATA = \ - lib/config.guess \ - lib/config.sub \ - lib/install-sh \ - lib/mdate-sh \ - lib/missing \ - lib/mkinstalldirs \ - lib/elisp-comp \ - lib/ylwrap \ - lib/depcomp \ - lib/compile \ - lib/py-compile \ - lib/ar-lib \ - lib/test-driver \ - lib/tap-driver.sh \ - lib/tap-driver.pl - -install-data-hook: - @$(POST_INSTALL) - @for f in $(dist_script_DATA); do echo $$f; done \ - | sed 's,^lib/,,' \ - | ( st=0; \ - while read f; do \ - echo " chmod +x '$(DESTDIR)$(scriptdir)/$$f'"; \ - chmod +x "$(DESTDIR)$(scriptdir)/$$f" || st=1; \ - done; \ - exit $$st ) - -installcheck-local: installcheck-executable-scripts -installcheck-executable-scripts: - @for f in $(dist_script_DATA); do echo $$f; done \ - | sed 's,^lib/,,' \ - | while read f; do \ - path="$(pkgvdatadir)/$$f"; \ - test -x "$$path" || echo $$path; \ - done \ - | sed 's/$$/: not executable/' \ - | grep . 1>&2 && exit 1; exit 0 - - -## ---------------------------------------------------- ## -## Private perl modules used by automake and aclocal. ## -## ---------------------------------------------------- ## - -perllibdir = $(pkgvdatadir)/Automake -dist_perllib_DATA = \ - lib/Automake/ChannelDefs.pm \ - lib/Automake/Channels.pm \ - lib/Automake/Condition.pm \ - lib/Automake/Configure_ac.pm \ - lib/Automake/DisjConditions.pm \ - lib/Automake/FileUtils.pm \ - lib/Automake/General.pm \ - lib/Automake/Getopt.pm \ - lib/Automake/Item.pm \ - lib/Automake/ItemDef.pm \ - lib/Automake/Location.pm \ - lib/Automake/Options.pm \ - lib/Automake/Rule.pm \ - lib/Automake/RuleDef.pm \ - lib/Automake/Variable.pm \ - lib/Automake/VarDef.pm \ - lib/Automake/Version.pm \ - lib/Automake/XFile.pm \ - lib/Automake/Wrap.pm - -nodist_perllib_DATA = lib/Automake/Config.pm -CLEANFILES += $(nodist_perllib_DATA) - -lib/Automake/Config.pm: lib/Automake/Config.in Makefile - $(AM_V_at)rm -f $@ $@-t - $(AM_V_at)test -d lib/Automake || $(MKDIR_P) lib/Automake - $(AM_V_GEN)in=Config.in \ - && $(do_subst) <$(srcdir)/lib/Automake/Config.in >$@-t - $(generated_file_finalize) -EXTRA_DIST += lib/Automake/Config.in - - -## --------------------- ## -## Makefile fragments. ## -## --------------------- ## - -dist_am_DATA = \ - lib/am/check.am \ - lib/am/check2.am \ - lib/am/clean-hdr.am \ - lib/am/clean.am \ - lib/am/compile.am \ - lib/am/configure.am \ - lib/am/data.am \ - lib/am/dejagnu.am \ - lib/am/depend.am \ - lib/am/depend2.am \ - lib/am/distdir.am \ - lib/am/footer.am \ - lib/am/header-vars.am \ - lib/am/header.am \ - lib/am/install.am \ - lib/am/inst-vars.am \ - lib/am/java.am \ - lib/am/lang-compile.am \ - lib/am/lex.am \ - lib/am/library.am \ - lib/am/libs.am \ - lib/am/libtool.am \ - lib/am/lisp.am \ - lib/am/ltlib.am \ - lib/am/ltlibrary.am \ - lib/am/mans-vars.am \ - lib/am/mans.am \ - lib/am/program.am \ - lib/am/progs.am \ - lib/am/python.am \ - lib/am/remake-hdr.am \ - lib/am/scripts.am \ - lib/am/subdirs.am \ - lib/am/tags.am \ - lib/am/texi-vers.am \ - lib/am/texibuild.am \ - lib/am/texinfos.am \ - lib/am/vala.am \ - lib/am/yacc.am - - -## ------------------------------ ## -## Automake-provided m4 macros. ## -## ------------------------------ ## - -dist_automake_ac_DATA = \ - m4/amversion.m4 \ - m4/ar-lib.m4 \ - m4/as.m4 \ - m4/auxdir.m4 \ - m4/ccstdc.m4 \ - m4/cond.m4 \ - m4/cond-if.m4 \ - m4/depend.m4 \ - m4/depout.m4 \ - m4/dmalloc.m4 \ - m4/gcj.m4 \ - m4/header.m4 \ - m4/init.m4 \ - m4/install-sh.m4 \ - m4/lead-dot.m4 \ - m4/lex.m4 \ - m4/lispdir.m4 \ - m4/maintainer.m4 \ - m4/make.m4 \ - m4/minuso.m4 \ - m4/missing.m4 \ - m4/mkdirp.m4 \ - m4/obsol-gt.m4 \ - m4/obsol-lt.m4 \ - m4/obsolete.m4 \ - m4/options.m4 \ - m4/protos.m4 \ - m4/python.m4 \ - m4/runlog.m4 \ - m4/sanity.m4 \ - m4/silent.m4 \ - m4/strip.m4 \ - m4/substnot.m4 \ - m4/tar.m4 \ - m4/upc.m4 \ - m4/vala.m4 - -dist_system_ac_DATA = m4/acdir/README - -# We build amversion.m4 here, instead of from config.status, -# because config.status is rerun each time one of configure's -# dependencies change and amversion.m4 happens to be a configure -# dependency. configure and amversion.m4 would be rebuilt in -# loop otherwise. -# Use '$(top_srcdir)/m4' for the benefit of non-GNU makes: this is -# how amversion.m4 appears in our dependencies. -$(top_srcdir)/m4/amversion.m4: $(srcdir)/configure.ac $(srcdir)/m4/amversion.in - $(AM_V_at)rm -f $@-t $@ - $(AM_V_GEN)in=amversion.in \ - && $(do_subst) <$(srcdir)/m4/amversion.in >$@-t - $(generated_file_finalize) -EXTRA_DIST += m4/amversion.in - - -## ------------ ## -## Testsuite. ## -## ------------ ## - -# Run the tests with a proper shell detected at configure time. -LOG_COMPILER = $(AM_TEST_RUNNER_SHELL) - -TEST_EXTENSIONS = .pl .sh .tap -SH_LOG_COMPILER = $(LOG_COMPILER) -TAP_LOG_COMPILER = $(LOG_COMPILER) -PL_LOG_COMPILER = $(PERL) -AM_PL_LOG_FLAGS = -Mstrict -I $(builddir)/lib -I $(srcdir)/lib -w - -TAP_LOG_DRIVER = AM_TAP_AWK='$(AWK)' $(SHELL) $(srcdir)/lib/tap-driver.sh - -AM_TAP_LOG_DRIVER_FLAGS = --merge - -EXTRA_DIST += t/README t/ax/is t/ax/is_newest - -TESTS = ## Will be updated later. - -# Some testsuite-influential variables should be overridable from the -# test scripts, but not from the environment. -# Keep this in sync with the similar list in 'runtest.in'. -AM_TESTS_ENVIRONMENT = \ - for v in \ - required \ - am_test_protocol \ - am_serial_tests \ - am_test_prefer_config_shell \ - am_original_AUTOMAKE \ - am_original_ACLOCAL \ - am_test_lib_sourced \ - test_lib_sourced \ - ; do \ - eval test x"\$${$$v}" = x || unset $$v; \ - done; -# We want warning messages and explanations for skipped tests to go to -# the console if possible, so set up 'stderr_fileno_' properly. -AM_TESTS_FD_REDIRECT = 9>&2 -AM_TESTS_ENVIRONMENT += stderr_fileno_=9; export stderr_fileno_; - -# For sourcing of extra "shell libraries" by our test scripts. As per -# POSIX, sourcing a file with '.' will cause it to be looked up in $PATH -# in case it is given with a relative name containing no slashes. -AM_TESTS_ENVIRONMENT += \ - if test $(srcdir) != .; then \ - PATH='$(abs_srcdir)/t/ax'$(PATH_SEPARATOR)$$PATH; \ - fi; \ - PATH='$(abs_builddir)/t/ax'$(PATH_SEPARATOR)$$PATH; \ - export PATH; - -# Hand-written tests. - -include $(srcdir)/t/list-of-tests.mk - -TESTS += $(handwritten_TESTS) -EXTRA_DIST += $(handwritten_TESTS) - -# Automatically-generated tests wrapping hand-written ones. -# Also, automatically-computed dependencies for tests. - -include $(srcdir)/t/testsuite-part.am - -TESTS += $(generated_TESTS) -EXTRA_DIST += $(generated_TESTS) - -$(srcdir)/t/testsuite-part.am: - $(AM_V_at)rm -f t/testsuite-part.tmp $@ - $(AM_V_GEN)$(PERL) $(srcdir)/gen-testsuite-part \ - --srcdir $(srcdir) > t/testsuite-part.tmp - $(AM_V_at)chmod a-w t/testsuite-part.tmp - $(AM_V_at)mv -f t/testsuite-part.tmp $@ -EXTRA_DIST += gen-testsuite-part - -## The dependecies declared here are not truly complete, but such -## completeness would cause more issues than it would solve. See -## automake bug#11347. -$(generated_TESTS): $(srcdir)/gen-testsuite-part -$(srcdir)/t/testsuite-part.am: $(srcdir)/gen-testsuite-part Makefile.am - -# Static dependencies valid for each test case (also further -# extended later). Note that use 'noinst_' rather than 'check_' -# as the prefix, because we really want them to be built by -# "make all". This makes it easier to run the test cases by -# hand after having simply configured and built the package. - -nodist_noinst_SCRIPTS = \ - t/wrap/aclocal-$(APIVERSION) \ - t/wrap/automake-$(APIVERSION) - -dist_noinst_DATA = \ - t/ax/test-init.sh \ - t/ax/test-lib.sh \ - t/ax/am-test-lib.sh \ - t/ax/tap-functions.sh - -# Few more static dependencies. -t/distcheck-missing-m4.log: t/ax/distcheck-hook-m4.am -t/distcheck-outdated-m4.log: t/ax/distcheck-hook-m4.am -EXTRA_DIST += t/ax/distcheck-hook-m4.am - -t/ax/test-defs.sh: t/ax/test-defs.in Makefile - $(AM_V_at)rm -f $@ $@-t - $(AM_V_at)$(MKDIR_P) t/ax - $(AM_V_GEN)in=t/ax/test-defs.in \ - && $(do_subst) <$(srcdir)/$$in >$@-t - $(generated_file_finalize) -EXTRA_DIST += t/ax/test-defs.in -CLEANFILES += t/ax/test-defs.sh -nodist_noinst_DATA = t/ax/test-defs.sh - -noinst_SCRIPTS = # Will be updated soon. - -t/ax/shell-no-trail-bslash: t/ax/shell-no-trail-bslash.in Makefile - $(AM_V_at)rm -f $@ $@-t - $(AM_V_GEN)in=t/ax/shell-no-trail-bslash.in \ - && $(MKDIR_P) t/ax \ - && $(do_subst) <$(srcdir)/$$in >$@-t \ - && chmod a+x $@-t - $(generated_file_finalize) -EXTRA_DIST += t/ax/shell-no-trail-bslash.in -CLEANFILES += t/ax/shell-no-trail-bslash -noinst_SCRIPTS += t/ax/shell-no-trail-bslash - -runtest: runtest.in Makefile - $(AM_V_at)rm -f $@ $@-t - $(AM_V_GEN)in=runtest.in \ - && $(MKDIR_P) t/ax \ - && $(do_subst) <$(srcdir)/runtest.in >$@-t \ - && chmod a+x $@-t - $(generated_file_finalize) -EXTRA_DIST += runtest.in -CLEANFILES += runtest -noinst_SCRIPTS += runtest - -# If two test scripts have the same basename, they will end up sharing -# the same log file, leading to all sort of undefined and undesired -# behaviours. -check-no-repeated-test-name: - @LC_ALL=C; export LC_ALL; \ - lst='$(TEST_LOGS)'; for log in $$lst; do echo $$log; done \ - | sort | uniq -c | awk '($$1 > 1) { print }' \ - | sed 's/\.log$$//' | grep . >&2 \ - && { \ - echo $@: test names listed above are duplicated >&2; \ - exit 1; \ - }; : -check-local: check-no-repeated-test-name -.PHONY: check-no-repeated-test-name - -# Check that our test cases are syntactically correct. -# See automake bug#11898. -check-tests-syntax: - @st=0; \ - err () { echo "$@: $$*" >&2; st=1; }; \ -## The user might do something like "make check TESTS=t/foo" or -## "make check TESTS_LOGS=t/foo.log" and expect (say) the test -## 't/foo.sh' to be run; this has worked well until today, and -## we want to continue supporting this use case. - bases=`for log in : $(TEST_LOGS); do echo $$log; done \ - | sed -e '/^:$$/d' -e 's/\.log$$//'`; \ - for bas in $$bases; do \ - for suf in sh tap pl; do \ - tst=$$bas.$$suf; \ -## Emulate VPATH search. - if test -f $$tst; then \ - break; \ - elif test -f $(srcdir)/$$tst; then \ - tst=$(srcdir)/$$tst; \ - break; \ - else \ - tst=''; \ - fi; \ - done; \ - test -n "$$tst" || err "couldn't find test '$$bas'"; \ -## Don't check that perl tests are valid shell scripts! - test $$suf = pl && continue; \ - $(AM_V_P) && echo " $(AM_TEST_RUNNER_SHELL) -n $$tst"; \ - $(AM_TEST_RUNNER_SHELL) -n "$$tst" \ - || err "test '$$tst' syntactically invalid"; \ - done; \ - exit $$st -check-local: check-tests-syntax -.PHONY: check-tests-syntax - -# Recipes with a trailing backslash character (possibly followed by -# blank characters only) can cause spurious syntax errors with at -# least older bash versions (e.g., bash 2.05b), and can be potentially -# be unportable to other weaker shells. Run the testsuite in a way -# that helps catching such problems in Automake-generated recipes. -# See automake bug#10436. -check-no-trailing-backslash-in-recipes: - $(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) check \ - CONFIG_SHELL='$(abs_top_builddir)/t/ax/shell-no-trail-bslash' -.PHONY: check-no-trailing-backslash-in-recipes - -## Checking the list of tests. -test_subdirs = t t/pm -include $(srcdir)/t/CheckListOfTests.am - -# Run the testsuite with the installed aclocal and automake. -installcheck-local: installcheck-testsuite -installcheck-testsuite: - am_running_installcheck=yes $(MAKE) $(AM_MAKEFLAGS) check - -# Performance tests. -.PHONY: perf -perf: all - $(MAKE) $(AM_MAKEFLAGS) TEST_SUITE_LOG='$(PERF_TEST_SUITE_LOG)' \ - TESTS='$(perf_TESTS)' check -PERF_TEST_SUITE_LOG = t/perf/test-suite.log -CLEANFILES += $(PERF_TEST_SUITE_LOG) -EXTRA_DIST += $(perf_TESTS) - -clean-local: clean-local-check -.PHONY: clean-local-check -clean-local-check: - -set x t/*.dir; shift; \ - if test "$$#,$$1" = "1,*.dir"; then \ - : there is no test directory to clean; \ - else \ - find "$$@" -type d ! -perm -700 -exec chmod u+rwx {} ';'; \ - rm -rf "$$@"; \ - fi; - - -## ---------------- ## -## Documentation. ## -## ---------------- ## - -info_TEXINFOS = doc/automake.texi doc/automake-history.texi -doc_automake_TEXINFOS = doc/fdl.texi -doc_automake_history_TEXINFOS = doc/fdl.texi - -man1_MANS = \ - doc/aclocal.1 \ - doc/automake.1 \ - doc/aclocal-$(APIVERSION).1 \ - doc/automake-$(APIVERSION).1 - -$(man1_MANS): $(srcdir)/configure.ac - -CLEANFILES += $(man1_MANS) -EXTRA_DIST += doc/help2man - -update_mans = \ - $(AM_V_GEN): \ - && $(MKDIR_P) doc \ - && PATH="$(abs_builddir)/t/wrap$(PATH_SEPARATOR)$$PATH" \ - && export PATH \ - && $(PERL) $(srcdir)/doc/help2man --output=$@ - -doc/aclocal.1 doc/automake.1: - $(AM_V_GEN): \ - && $(MKDIR_P) doc \ - && f=`echo $@ | sed 's|.*/||; s|\.1$$||; $(transform)'` \ - && echo ".so man1/$$f-$(APIVERSION).1" > $@ - -doc/aclocal-$(APIVERSION).1: aclocal.in aclocal lib/Automake/Config.pm - $(update_mans) aclocal-$(APIVERSION) -doc/automake-$(APIVERSION).1: automake.in automake lib/Automake/Config.pm - $(update_mans) automake-$(APIVERSION) - - -## ---------------------------- ## -## Example package "amhello". ## -## ---------------------------- ## - -amhello_sources = \ - doc/amhello/configure.ac \ - doc/amhello/Makefile.am \ - doc/amhello/README \ - doc/amhello/src/main.c \ - doc/amhello/src/Makefile.am - -amhello_configury = \ - aclocal.m4 \ - autom4te.cache \ - Makefile.in \ - config.h.in \ - configure \ - depcomp \ - install-sh \ - missing \ - src/Makefile.in - -dist_noinst_DATA += $(amhello_sources) -dist_doc_DATA = $(srcdir)/doc/amhello-1.0.tar.gz - -# We depend on configure.ac so that we regenerate the tarball -# whenever the Automake version changes. -# aclocal-$(APIVERSION) and automake-$(APIVERSION) are generated by -# configure in 't/wrap'. -$(srcdir)/doc/amhello-1.0.tar.gz: $(amhello_sources) $(srcdir)/configure.ac - $(AM_V_GEN): \ - && PATH="$(abs_top_builddir)/t/wrap$(PATH_SEPARATOR)$$PATH" \ - && export PATH \ - && $(am__cd) $(srcdir)/doc/amhello \ - && ACLOCAL=aclocal-$(APIVERSION) && export ACLOCAL \ - && AUTOMAKE=automake-$(APIVERSION) && export AUTOMAKE \ - && AUTOCONF='$(am_AUTOCONF)' && export AUTOCONF \ - && AUTOM4TE='$(am_AUTOM4TE)' && export AUTOM4TE \ - && AUTORECONF='$(am_AUTORECONF)' && export AUTORECONF \ - && AUTOHEADER='$(am_AUTOHEADER)' && export AUTOHEADER \ - && AUTOUPDATE='$(am_AUTOUPDATE)' && export AUTOUPDATE \ - && $(am_AUTORECONF) -vfi \ - && ./configure \ - && $(MAKE) $(AM_MAKEFLAGS) distcheck \ - && $(MAKE) $(AM_MAKEFLAGS) distclean \ - && rm -rf $(amhello_configury) \ - && mv -f amhello-1.0.tar.gz .. - - -## ------------------------------------------------- ## -## Third-party, obsolescent or experimental stuff. ## -## ------------------------------------------------- ## - +# Third-party, obsolescent or experimental stuff. EXTRA_DIST += \ contrib/check-html.am \ contrib/multilib/README \ @@ -638,11 +100,7 @@ EXTRA_DIST += \ contrib/multilib/multi.m4 \ contrib/README - -## --------------------------------------------------- ## -## Older files, kept mostly for historical interest. ## -## --------------------------------------------------- ## - +# Older files, kept mostly for historical interest. EXTRA_DIST += \ old/ChangeLog-tests \ old/ChangeLog.96 \ @@ -656,398 +114,21 @@ EXTRA_DIST += \ old/ChangeLog.11 \ old/TODO - -########################################################################## - -## Everything past here is useful to the maintainer, but probably not -## to anybody else. - -########################################################################## - - -## --------------------------------------------------------- ## -## Automatic generation of the ChangeLog from git history. ## -## --------------------------------------------------------- ## - -gitlog_to_changelog_command = $(PERL) $(srcdir)/lib/gitlog-to-changelog -gitlog_to_changelog_fixes = $(srcdir)/.git-log-fix -gitlog_to_changelog_options = --amend=$(gitlog_to_changelog_fixes) \ - --since='2011-12-28 00:00:00' \ - --no-cluster --format '%s%n%n%b' - -EXTRA_DIST += lib/gitlog-to-changelog -EXTRA_DIST += $(gitlog_to_changelog_fixes) - -# When executed from a git checkout, generate the ChangeLog from the git -# history. When executed from an extracted distribution tarball, just -# copy the distributed ChangeLog in the build directory (and if this -# fails, or if no distributed ChangeLog file is present, complain and -# give an error). -# -# We need the apparently useless dependency from another .PHONY target -# 'am--changelog-regen-hook' to work around a bug of Solaris make, which -# doesn't execute the recipe of a target named as an existing file, even -# if such target is declared '.PHONY' (yikes!) -# -.PHONY: am--changelog-regen-hook -am--changelog-regen-hook: -ChangeLog: am--changelog-regen-hook - $(AM_V_GEN)set -e; set -u; \ -## The ChangeLog should be regenerated unconditionally when working from -## checked-out sources; otherwise, if we're working from a distribution -## tarball, we expect the ChangeLog to be distributed, so check that it -## is indeed present in the source directory. - if test -d $(srcdir)/.git; then \ - rm -f $@-t \ - && $(gitlog_to_changelog_command) \ - $(gitlog_to_changelog_options) >$@-t \ - && chmod a-w $@-t \ - && mv -f $@-t $@ \ - || exit 1; \ - elif test ! -f $(srcdir)/$@; then \ - echo "Source tree is not a git checkout, and no pre-existent" \ - "$@ file has been found there" >&2; \ - exit 1; \ - fi - - -## --------------------------- ## -## Perl coverage statistics. ## -## --------------------------- ## - -PERL_COVERAGE_DB = $(abs_top_builddir)/cover_db -PERL_COVERAGE_FLAGS = -MDevel::Cover=-db,$(PERL_COVERAGE_DB),-silent,on,-summary,off -PERL_COVER = cover - -check-coverage-run recheck-coverage-run: all - $(mkinstalldirs) $(PERL_COVERAGE_DB) - PERL5OPT="$$PERL5OPT $(PERL_COVERAGE_FLAGS)"; export PERL5OPT; \ - WANT_NO_THREADS=yes; export WANT_NO_THREADS; unset AUTOMAKE_JOBS; \ - $(MAKE) $(AM_MAKEFLAGS) `echo $@ | sed 's/-coverage-run//'` - -check-coverage-report: - @if test ! -d "$(PERL_COVERAGE_DB)"; then \ - echo "No coverage database found in '$(PERL_COVERAGE_DB)'." >&2; \ - echo "Please run \"make check-coverage\" first" >&2; \ - exit 1; \ - fi - $(PERL_COVER) $(PERL_COVER_FLAGS) "$(PERL_COVERAGE_DB)" - -# We don't use direct dependencies here because we'd like to be able -# to invoke the report even after interrupted check-coverage. -check-coverage: check-coverage-run - $(MAKE) $(AM_MAKEFLAGS) check-coverage-report - -recheck-coverage: recheck-coverage-run - $(MAKE) $(AM_MAKEFLAGS) check-coverage-report - -clean-coverage: - rm -rf "$(PERL_COVERAGE_DB)" -clean-local: clean-coverage - -.PHONY: check-coverage recheck-coverage check-coverage-run \ - recheck-coverage-run check-coverage-report clean-coverage - - -## ---------------------------------------------------- ## -## Tagging and/or uploading stable and beta releases. ## -## ---------------------------------------------------- ## - -GIT = git - -EXTRA_DIST += lib/gnupload - -base_version_rx = ^[1-9][0-9]*\.[0-9][0-9]* -stable_major_version_rx = $(base_version_rx)$$ -stable_minor_version_rx = $(base_version_rx)\.[0-9][0-9]*$$ -beta_version_rx = $(base_version_rx)(\.[0-9][0-9]*)?[bdfhjlnprtvxz]$$ -match_version = echo "$(VERSION)" | $(EGREP) >/dev/null - -## Check that we don't have uncommitted or unstaged changes. -## TODO: Maybe the git suite already offers a shortcut to verify if the -## TODO: working directory is "clean" or not? If yes, use that instead -## TODO: of duplicating the logic here. -git_must_have_clean_workdir = \ - $(GIT) rev-parse --verify HEAD >/dev/null \ - && $(GIT) update-index -q --refresh \ - && $(GIT) diff-files --quiet \ - && $(GIT) diff-index --quiet --cached HEAD \ - || fatal "you have uncommitted or unstaged changes" - -determine_release_type = \ - if $(match_version) '$(stable_major_version_rx)'; then \ - release_type='Major release'; \ - announcement_type='major release'; \ - dest=ftp; \ - elif $(match_version) '$(stable_minor_version_rx)'; then \ - release_type='Minor release'; \ - announcement_type='maintenance release'; \ - dest=ftp; \ - elif $(match_version) '$(beta_version_rx)'; then \ - release_type='Beta release'; \ - announcement_type='test release'; \ - dest=alpha; \ - else \ - fatal "invalid version '$(VERSION)' for a release"; \ - fi - -# Help the debugging of $(determine_release_type) and related code. -print-release-type: - @set -e -u \ - && fatal () { echo "$@: $$*"; exit 0; } \ - && $(determine_release_type) \ - && echo "$$release_type $(VERSION);" \ - "it will be announced as a $$announcement_type" - -git-tag-release: maintainer-check - @set -e; set -u; \ - fatal () { echo "$@: $$*; not tagging" >&2; exit 1; }; \ - case '$(AM_TAG_DRYRUN)' in \ - ""|[nN]|[nN]o|NO) run="";; \ - *) run="echo Running:";; \ - esac; \ - $(determine_release_type); \ - $(git_must_have_clean_workdir); \ -## If all was successful, tag the release in the local repository. - $$run $(GIT) tag -s "v$(VERSION)" -m "$$release_type $(VERSION)" - -git-upload-release: - @set -e; set -u; \ - fatal () { echo "$@: $$*; not releasing" >&2; exit 1; }; \ - $(determine_release_type); \ - dest=$$dest.gnu.org:automake; \ - $(git_must_have_clean_workdir); \ -## Check that we are releasing from a valid tag. - tag=`$(GIT) describe` \ - && case $$tag in "v$(VERSION)") true;; *) false;; esac \ - || fatal "you can only create a release from a tagged version"; \ -## Build and upload the distribution tarball(s). - $(MAKE) $(AM_MAKEFLAGS) dist || exit 1; \ - echo Will upload to $$dest: $(DIST_ARCHIVES); \ - $(srcdir)/lib/gnupload $(GNUPLOADFLAGS) --to $$dest $(DIST_ARCHIVES) - -.PHONY: print-release-type git-upload-release git-tag-release - - -## ------------------------------------------------------------------ ## -## Explore differences of autogenerated files in different commits. ## -## ------------------------------------------------------------------ ## - -## Visually comparing differences between the Makefile.in files in -## automake's own build system as generated in two different branches -## might help to catch bugs and blunders. This has already happened a -## few times in the past, when we used to version-control Makefile.in. -autodiffs: - @set -u; \ - NEW_COMMIT=$${NEW_COMMIT-"HEAD"}; \ - OLD_COMMIT=$${OLD_COMMIT-"HEAD~1"}; \ - am_gitdir='$(abs_top_srcdir)/.git'; \ - get_autofiles_from_rev () \ - { \ - rev=$$1 dir=$$2 \ - && echo "$@: will get files from revision $$rev" \ - && $(GIT) clone -q --depth 1 "$$am_gitdir" tmp \ - && $(am__cd) tmp \ - && $(GIT) checkout -q "$$rev" \ - && echo "$@: bootstrapping $$rev" \ - && $(SHELL) ./bootstrap.sh \ - && echo "$@: copying files from $$rev" \ - && makefile_ins=`find . -name Makefile.in` \ - && (tar cf - configure aclocal.m4 $$makefile_ins) | \ - (cd .. && $(am__cd) "$$dir" && tar xf -) \ - && cd .. \ - && rm -rf tmp; \ - }; \ - outdir=$@.dir \ -## Before proceeding, ensure the specified revisions truly exist. - && $(GIT) --git-dir="$$am_gitdir" describe $$OLD_COMMIT >/dev/null \ - && $(GIT) --git-dir="$$am_gitdir" describe $$NEW_COMMIT >/dev/null \ - && rm -rf $$outdir \ - && mkdir $$outdir \ - && $(am__cd) $$outdir \ - && mkdir new old \ - && get_autofiles_from_rev $$OLD_COMMIT old \ - && get_autofiles_from_rev $$NEW_COMMIT new \ - && exit 0 - -## With lots of eye candy; we like our developers pampered and spoiled :-) -compare-autodiffs: autodiffs - @set -u; \ - : $${COLORDIFF=colordiff} $${DIFF=diff}; \ - dir=autodiffs.dir; \ - if test ! -d "$$dir"; then \ - echo "$@: $$dir: Not a directory" >&2; \ - exit 1; \ - fi; \ - mydiff=false mypager=false; \ - if test -t 1; then \ - if ($$COLORDIFF -r . .) /dev/null 2>&1; then \ - mydiff=$$COLORDIFF; \ - mypager="less -R"; \ - else \ - mypager=less; \ - fi; \ - else \ - mypager=cat; \ - fi; \ - if test "$$mydiff" = false; then \ - if ($$DIFF -r -u . .); then \ - mydiff=$$DIFF; \ - else \ - echo "$@: no good-enough diff program specified" >&2; \ - exit 1; \ - fi; \ - fi; \ - st=0; $$mydiff -r -u $$dir/old $$dir/new | $$mypager || st=$$?; \ - rm -rf $$dir; \ - exit $$st -.PHONY: autodiffs compare-autodiffs - -## ---------------------------------------------- ## -## Help writing the announcement for a release. ## -## ---------------------------------------------- ## - -PACKAGE_MAILINGLIST = automake@gnu.org - -announcement: NEWS - $(AM_V_GEN): \ - && rm -f $@ $@-t \ - && fatal () { echo "$@: $$*" >&2; exit 1; } \ - && $(determine_release_type) \ - && ftp_base="ftp://$$dest.gnu.org/gnu/$(PACKAGE)" \ - && X () { printf '%s\n' "$$*" >> $@-t; } \ - && X "We are pleased to announce the $(PACKAGE_NAME) $(VERSION)" \ - "$$announcement_type." \ - && X \ - && X "**TODO** Brief description of the release here." \ - && X \ - && X "**TODO** This description can span multiple paragraphs." \ - && X \ - && X "See below for the detailed list of changes since the" \ - && X "previous version, as summarized by the NEWS file." \ - && X \ - && X "Download here:" \ - && X \ - && X " $$ftp_base/$(PACKAGE)-$(VERSION).tar.gz" \ - && X " $$ftp_base/$(PACKAGE)-$(VERSION).tar.xz" \ - && X \ - && X "Please report bugs and problems to" \ - "<$(PACKAGE_BUGREPORT)>," \ - && X "and send general comments and feedback to" \ - "<$(PACKAGE_MAILINGLIST)>." \ - && X \ - && X "Thanks to everyone who has reported problems, contributed" \ - && X "patches, and helped testing Automake!" \ - && X \ - && X "-*-*-*-" \ - && X \ - && sed -n -e '/^~~~/q' -e p $(srcdir)/NEWS >> $@-t \ - && mv -f $@-t $@ -.PHONY: announcement -CLEANFILES += announcement - -## --------------------------------------------------------------------- ## -## Synchronize third-party files that are committed in our repository. ## -## --------------------------------------------------------------------- ## - -# Program to use to fetch files. -WGET = wget - -# Some repositories we sync files from. -SV_CVS = 'http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/' -SV_GIT_CF = 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;hb=HEAD;f=' -SV_GIT_AC = 'http://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=blob_plain;hb=HEAD;f=' -SV_GIT_GL = 'http://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=blob_plain;hb=HEAD;f=' - -# Files that we fetch and which we compare against. -# Note that the 'lib/COPYING' file must still be synced by hand. -FETCHFILES = \ - $(SV_GIT_CF)config.guess \ - $(SV_GIT_CF)config.sub \ - $(SV_CVS)texinfo/texinfo/doc/texinfo.tex \ - $(SV_CVS)texinfo/texinfo/util/gendocs.sh \ - $(SV_CVS)texinfo/texinfo/util/gendocs_template \ - $(SV_GIT_GL)build-aux/gitlog-to-changelog \ - $(SV_GIT_GL)build-aux/gnupload \ - $(SV_GIT_GL)build-aux/update-copyright \ - $(SV_GIT_GL)doc/INSTALL - -# Fetch the latest versions of few scripts and files we care about. -fetch: - $(AM_V_at)rm -rf Fetchdir - $(AM_V_at)mkdir Fetchdir - $(AM_V_GEN)set -e; \ - if $(AM_V_P); then wget_opts=; else wget_opts=-nv; fi; \ - for url in $(FETCHFILES); do \ - file=`printf '%s\n' "$$url" | sed 's|^.*/||; s|^.*=||'`; \ -## A retrieval failure usually means a serious problem. Just bail out. - $(WGET) $$wget_opts "$$url" -O Fetchdir/$$file || exit 1; \ - if cmp Fetchdir/$$file $(srcdir)/lib/$$file >/dev/null; then \ - : Nothing to do; \ - else \ - echo "$@: updating file $$file"; \ -## Ditto for a copying failure. - cp Fetchdir/$$file $(srcdir)/lib/$$file || exit 1; \ - fi; \ - done - $(AM_V_at)rm -rf Fetchdir -.PHONY: fetch - -## --------------------------------------------------------------------- ## -## Generate manuals in several formats, for upload on the GNU website. ## -## --------------------------------------------------------------------- ## - -# The gendocs.sh script sadly leaves TeX and Texinfo auxiliary files -# in the directory where it's invoked. -clean_texinfo_clutter_cmd = \ - $(am__cd) doc && rm -f *.ac *.aux *.cm *.cp *.cps *.fn *.fns *.ky \ - *.log *.op *.pg *.toc *.tp *.tr *.vr *.vrs - -clean-web-manuals: - $(AM_V_at)rm -rf doc/web-manuals -clean-texinfo-clutter: - $(AM_V_at)$(clean_texinfo_clutter_cmd) -clean-local: clean-web-manuals clean-texinfo-clutter -.PHONY: clean-web-manuals clean-texinfo-clutter - -web-manuals: - $(AM_V_at)rm -rf doc/web-manuals - $(AM_V_GEN): \ -## The gendocs.sh script only works from the srcdir, sadly. - && $(am__cd) $(srcdir)/doc \ - && GENDOCS_TEMPLATE_DIR=../lib \ - && export GENDOCS_TEMPLATE_DIR \ -## Try to respect silent rules. - && if $(AM_V_P); then :; else exec >/dev/null 2>&1; fi \ -## Finally generate the manual in several formats. - && $(SHELL) ../lib/gendocs.sh -o web-manuals \ - --email $(PACKAGE_BUGREPORT) $(PACKAGE) '$(PACKAGE_NAME)' - $(AM_V_at)$(clean_texinfo_clutter_cmd) - $(AM_V_at)if $(AM_V_P); then ls -l doc/web-manuals; else :; fi -.PHONY: web-manuals - -EXTRA_DIST += lib/gendocs.sh lib/gendocs_template - -## ------------------------------------------------ ## -## Update copyright years of all committed files. ## -## ------------------------------------------------ ## - -EXTRA_DIST += lib/update-copyright - -update_copyright_env = \ - UPDATE_COPYRIGHT_FORCE=1 \ - UPDATE_COPYRIGHT_USE_INTERVALS=2 - -.PHONY: update-copyright -update-copyright: - $(AM_V_GEN)set -e; \ - current_year=`date +%Y` && test -n "$$current_year" \ - || { echo "$@: cannot get current year" >&2; exit 1; }; \ - sed -i "/^RELEASE_YEAR=/s/=.*$$/=$$current_year/" \ - bootstrap.sh configure.ac; \ - excluded_re=`echo $(FETCHFILES) \ - | sed -e 's|^.*/|lib/|' -e 's| | lib/|g' -e 's, ,|,g'`; \ - $(GIT) ls-files \ - | grep -Ev '^(lib/)?(COPYING|INSTALL)$$' \ - | grep -Ev "^($$excluded_re)$$" \ - | $(update_copyright_env) xargs $(srcdir)/lib/$@ +# Maintainer-specific files and scripts. +EXTRA_DIST += \ + maintainer/am-ft \ + maintainer/am-xft \ + maintainer/rename-tests \ + maintainer/maint.mk \ + maintainer/syntax-checks.mk + +# Most work delegated to sub-dir makefile fragments. +include $(srcdir)/bin/Makefile.inc +include $(srcdir)/doc/Makefile.inc +include $(srcdir)/lib/Makefile.inc +include $(srcdir)/lib/Automake/Makefile.inc +include $(srcdir)/lib/am/Makefile.inc +include $(srcdir)/m4/Makefile.inc +include $(srcdir)/t/Makefile.inc + +# vim: ft=automake noet