| ## Process this file with automake to create Makefile.in |
| |
| ## Makefile for Automake. |
| |
| # Copyright (C) 1995-2012 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, see <http://www.gnu.org/licenses/>. |
| |
| ## Might be updated later. |
| CLEANFILES = |
| DISTCLEANFILES = |
| MAINTAINERCLEANFILES = |
| EXTRA_DIST = |
| |
| ## ------------ ## |
| ## Top level. ## |
| ## ------------ ## |
| |
| # Distribution formats. |
| AM_DIST_FORMATS = gzip xz |
| |
| # 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 |
| # configure substitutions in our text. |
| do_subst = sed $(strip \ |
| $(foreach x, data am bin doc pkgvdata script automake_ac system_ac, \ |
| -e 's,@$(x)dir@,$($(x)dir),g')) \ |
| -e "s,[@]configure_input@,Generated from $(<F) do not edit by hand.,g" \ |
| <"$<" | $(SHELL) ./config.status --file=- >"$@-t" |
| |
| # Generated files shouldn't contain unexpanded '@substitutions@', and |
| # should be made read-only, to prevent them from being edited by mistake |
| # instead of the file the are generated from. |
| generated_file_finalize = $(AM_V_at) \ |
| if LC_ALL=C grep '@[a-zA-Z0-9_][a-zA-Z0-9_]*@' $@-t; then \ |
| echo "$@ contains unexpanded substitution (see lines above)"; \ |
| exit 1; \ |
| fi; \ |
| chmod a-w $@-t && mv -f $@-t $@ |
| |
| AUTOMAKESOURCES = automake.in aclocal.in |
| TAGS_FILES = $(AUTOMAKESOURCES) |
| |
| bin_SCRIPTS = $(basename $(AUTOMAKESOURCES)) |
| CLEANFILES += $(bin_SCRIPTS) |
| |
| EXTRA_DIST += \ |
| $(AUTOMAKESOURCES) \ |
| bootstrap.sh \ |
| GNUmakefile \ |
| syntax-checks.mk \ |
| HACKING \ |
| NG-NEWS \ |
| $(gitlog_to_changelog_fixes) |
| |
| ## 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 aclocal: %: %.in Makefile |
| $(AM_V_at)rm -f $@ $@-t |
| $(AM_V_GEN)$(do_subst) |
| ## 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. |
| INSTALL: lib/INSTALL |
| $(AM_V_GEN)cp $(srcdir)/lib/INSTALL $@ |
| |
| # We don't use the default name for the autom4te cache directory, |
| # so we need this. |
| maintainer-clean-local: |
| rm -rf .autom4te.cache |
| |
| |
| ## -------------------------------------------------------------------- ## |
| ## 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/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) |
| chmod +x $(patsubst lib/%,'$(DESTDIR)$(scriptdir)/%',$(dist_script_DATA)) |
| |
| installcheck-local: installcheck-executable-scripts |
| installcheck-executable-scripts: |
| @for f in $(patsubst lib/%,'$(scriptdir)/%',$(dist_script_DATA)); do \ |
| test -x $$f || { echo "$@: $$f: not executable" >&2; st=1; }; \ |
| done; \ |
| exit $$st; |
| |
| |
| ## ---------------------------------------------------- ## |
| ## 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/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)$(MKDIR_P) $(@D) |
| $(AM_V_GEN)$(do_subst) |
| $(generated_file_finalize) |
| EXTRA_DIST += lib/Automake/Config.in |
| |
| |
| ## --------------------- ## |
| ## Makefile fragments. ## |
| ## --------------------- ## |
| |
| dist_am_DATA = \ |
| lib/am/am-dir.mk \ |
| lib/am/common-targets.mk \ |
| lib/am/color-tests.mk \ |
| lib/am/serial-tests.mk \ |
| lib/am/parallel-tests.mk \ |
| lib/am/check-typos.mk \ |
| lib/am/clean.mk \ |
| lib/am/header-vars.mk \ |
| lib/am/tags.mk \ |
| lib/am/dejagnu.mk \ |
| lib/am/distcheck.mk \ |
| lib/am/distdir.mk \ |
| lib/am/subdirs.mk \ |
| lib/am/texibuild.mk \ |
| lib/am/texinfos.mk \ |
| lib/am/compile.am \ |
| lib/am/configure.am \ |
| lib/am/data.am \ |
| lib/am/depend2.am \ |
| lib/am/footer.am \ |
| lib/am/header.am \ |
| lib/am/java.am \ |
| lib/am/lang-compile.am \ |
| lib/am/lex.am \ |
| lib/am/library.am \ |
| lib/am/libs.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/texi-vers.am \ |
| lib/am/texi-spec.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/cond.m4 \ |
| m4/cond-if.m4 \ |
| m4/depend.m4 \ |
| m4/dmalloc.m4 \ |
| m4/extra-recurs.m4 \ |
| m4/gcj.m4 \ |
| m4/init.m4 \ |
| m4/install-sh.m4 \ |
| m4/lex.m4 \ |
| m4/lispdir.m4 \ |
| m4/minuso.m4 \ |
| m4/missing.m4 \ |
| m4/options.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. |
| $(srcdir)/m4/amversion.m4: $(srcdir)/m4/amversion.in $(srcdir)/configure.ac |
| $(AM_V_at)rm -f $@-t $@ |
| $(AM_V_GEN)$(do_subst) |
| $(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 |
| |
| # Hand-written tests for stuff in 'contrib/'. |
| include $(srcdir)/contrib/t/local.am |
| |
| # All tests, both hand-written and autogenerated. |
| # IMPORTANT: This assumes that the autogenerated tests are placed |
| # in the $(srcdir) as well! |
| all_TESTS = \ |
| $(wildcard $(srcdir)/t/*.sh) \ |
| $(wildcard $(srcdir)/t/*.tap) \ |
| $(wildcard $(srcdir)/t/pm/*.pl) |
| |
| # This is to ensure longer-running tests will be run earlier, which is |
| # useful when running the testsuite in parallel on multicore machines. |
| # Here too we assume that the autogenerated tests are placed in $(srcdir). |
| long_running_TESTS = \ |
| $(srcdir)/t/dist-many.sh \ |
| $(srcdir)/t/parallel-tests-many.sh \ |
| $(srcdir)/t/add-missing.tap \ |
| $(srcdir)/t/instspc.tap \ |
| $(wildcard $(srcdir)/t/depcomp-*.tap) \ |
| $(wildcard $(srcdir)/t/*libtool*.sh) \ |
| $(wildcard $(srcdir)/t/lt*.sh) \ |
| $(wildcard $(srcdir)/t/remake*.sh) |
| |
| TESTS = \ |
| $(long_running_TESTS) \ |
| $(filter-out $(long_running_TESTS), $(all_TESTS)) \ |
| $(contrib_TESTS) |
| |
| EXTRA_DIST += $(TESTS) |
| |
| # FIXME: this "expected failures" are in truth an hack used to |
| # FIXME: to verify that some incorrect usages of our perl libraries |
| # FIXME: raise an error. We should find a cleaner way to check that. |
| perl_fake_XFAIL_TESTS = \ |
| t/pm/Cond2.pl \ |
| t/pm/Cond3.pl \ |
| t/pm/DisjCon2.pl \ |
| t/pm/DisjCon3.pl \ |
| t/pm/Version2.pl \ |
| t/pm/Version3.pl |
| |
| XFAIL_TESTS = \ |
| t/all.sh \ |
| t/override-suggest-local.sh \ |
| t/comments-in-var-def.sh \ |
| t/cond17.sh \ |
| t/dist-srcdir2.sh \ |
| t/gcj6.sh \ |
| t/override-conditional-2.sh \ |
| t/dist-pr109765.sh \ |
| t/instdir-cond2.sh \ |
| t/interp3.sh \ |
| t/java-nobase.sh \ |
| t/objext-pr10128.sh \ |
| t/pr8365-remake-timing.sh \ |
| t/remake-am-pr10111.sh \ |
| t/remake-m4-pr10111.sh \ |
| t/var-undef-append.sh \ |
| $(perl_fake_XFAIL_TESTS) |
| |
| # 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; |
| |
| # Automatically-computed dependencies for tests. |
| include $(srcdir)/testsuite-autodeps.am |
| |
| ## The dependencies declared here are not truly complete, but such |
| ## completeness would cause more issues than it would solve. See |
| ## automake bug#11347. |
| $(srcdir)/testsuite-autodeps.am: $(srcdir)/gen-testsuite-part |
| $(AM_V_at)rm -f $(@F)-t $@ |
| $(AM_V_GEN)$(PERL) $< --srcdir $(srcdir) > $(@F)-t |
| $(AM_V_at)chmod a-w $(@F)-t && mv -f $(@F)-t $@ |
| EXTRA_DIST += gen-testsuite-part |
| |
| # 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-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) $(@D) |
| $(AM_V_GEN)$(do_subst) |
| $(generated_file_finalize) |
| EXTRA_DIST += t/ax/test-defs.in |
| CLEANFILES += t/ax/test-defs.sh |
| nodist_noinst_DATA = t/ax/test-defs.sh |
| |
| runtest: runtest.in Makefile |
| $(AM_V_at)rm -f $@ $@-t |
| $(AM_V_GEN)$(do_subst) |
| $(AM_V_at)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 |
| |
| # Run the testsuite with the installed aclocal and automake. |
| installcheck-local: installcheck-testsuite |
| installcheck-testsuite: |
| am_running_installcheck=yes $(MAKE) check |
| |
| # Run the testsuite without skipping expensive tests by default. |
| check-expensive installcheck-expensive: %-expensive: |
| $(MAKE) $* RUN_EXPENSIVE_TESTS=yes |
| |
| # Performance tests. |
| perf_TESTS = $(wildcard $(srcdir)/t/perf/*.sh) \ |
| $(wildcard $(srcdir)/t/perf/*.tap) |
| .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: |
| ## Directories candidate to be test directories match this wildcard. |
| @globs='t/*.dir t/*/*.dir */t/*.dir */t/*/*.dir'; \ |
| ## The 'nullglob' bash option is not portable, so use perl. |
| dirs=`$(PERL) -e "print join(' ', glob('$$globs'));"` || exit 1; \ |
| if test -n "$$dirs"; then \ |
| ## Errors in find are acceptable, errors in rm are not. |
| find $$dirs -type d ! -perm -700 -exec chmod u+rwx {} ';'; \ |
| echo " rm -rf $$dirs"; \ |
| rm -rf $$dirs || exit 1; \ |
| fi |
| |
| |
| ## ---------------- ## |
| ## Documentation. ## |
| ## ---------------- ## |
| |
| info_TEXINFOS = doc/automake-ng.texi |
| doc_automake_ng_TEXINFOS = doc/fdl.texi |
| |
| CLEANFILES += $(man1_MANS) |
| EXTRA_DIST += doc/help2man |
| |
| man1_MANS = $(versioned_mans) $(unversioned_mans) |
| |
| unversioned_mans = doc/aclocal.1 doc/automake.1 |
| versioned_mans = doc/aclocal-$(APIVERSION).1 doc/automake-$(APIVERSION).1 |
| |
| $(unversioned_mans): Makefile |
| $(AM_V_GEN)$(MKDIR_P) doc \ |
| && f=`echo $(@D) | sed 's|.*/||; s|\.1$$||; $(transform)'` \ |
| && echo ".so man1/$$f-$(APIVERSION).1" > $@ |
| |
| $(versioned_mans): doc/%-$(APIVERSION).1: % lib/Automake/Config.pm |
| $(AM_V_GEN)$(MKDIR_P) doc \ |
| && PATH="$(abs_builddir)/t/wrap$(PATH_SEPARATOR)$$PATH" \ |
| && export PATH \ |
| && $(PERL) $(srcdir)/doc/help2man --output=$@ $*-$(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 \ |
| am-ng |
| |
| 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 \ |
| && 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) distcheck \ |
| && $(MAKE) distclean \ |
| && rm -rf $(amhello_configury) \ |
| && mv -f amhello-1.0.tar.gz .. |
| |
| |
| ## ------------------------------------------------- ## |
| ## Third-party, obsolescent or experimental stuff. ## |
| ## ------------------------------------------------- ## |
| |
| EXTRA_DIST += \ |
| contrib/check-html.am \ |
| contrib/README |
| |
| |
| ## --------------------------------------------------- ## |
| ## Older files, kept mostly for historical interest. ## |
| ## --------------------------------------------------- ## |
| |
| EXTRA_DIST += \ |
| $(addprefix old/ChangeLog., 96 98 00 01 02 03 04 09 11) \ |
| old/ChangeLog-tests 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). |
| .PHONY: ChangeLog |
| ChangeLog: |
| $(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 |
| $(MKDIR_P) $(PERL_COVERAGE_DB) |
| PERL5OPT="$$PERL5OPT $(PERL_COVERAGE_FLAGS)"; export PERL5OPT; \ |
| $(MAKE) `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) check-coverage-report |
| recheck-coverage: recheck-coverage-run |
| $(MAKE) 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 |
| |
| version_rx = ^[1-9][0-9]*\.[0-9][0-9]*(\.[0-9][0-9]*)? |
| stable_version_rx = $(version_rx)$$ |
| beta_version_rx = $(version_rx)[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_version_rx)'; then \ |
| release_type='Release' dest=ftp; \ |
| elif $(match_version) '$(beta_version_rx)'; then \ |
| release_type='Beta release' dest=alpha; \ |
| else \ |
| fatal "invalid version '$(VERSION)' for a release"; \ |
| fi |
| |
| 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) dist || exit 1; \ |
| echo Will upload to $$dest: $(DIST_ARCHIVES); \ |
| $(srcdir)/lib/gnupload $(GNUPLOADFLAGS) --to $$dest $(DIST_ARCHIVES) |
| |
| .PHONY: 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 \ |
| && 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 .. && 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 \ |
| && 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 >/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 |
| |
| |
| ## --------------------------------------------------------------------- ## |
| ## Synchronize third-party files that are committed in our repository. ## |
| ## --------------------------------------------------------------------- ## |
| |
| ## Program to use to fetch files. |
| WGET = wget |
| WGET_SV_CVS = $(WGET) http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/ |
| WGET_SV_GIT_CF = $(WGET) 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;hb=HEAD;f=' |
| WGET_SV_GIT_AC = $(WGET) 'http://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=blob_plain;hb=HEAD;f=' |
| WGET_SV_GIT_GL = $(WGET) 'http://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=blob_plain;hb=HEAD;f=' |
| |
| ## Files that we fetch and which we compare against. |
| ## The 'lib/COPYING' file must still be synced by hand. |
| FETCHFILES = \ |
| INSTALL \ |
| config.guess \ |
| config.sub \ |
| gnupload \ |
| gitlog-to-changelog \ |
| texinfo.tex \ |
| update-copyright |
| |
| ## Fetch the latest versions of files we care about. |
| fetch: |
| rm -rf Fetchdir > /dev/null 2>&1 |
| mkdir Fetchdir |
| ## If a get fails then that is a problem. |
| (cd Fetchdir && \ |
| $(WGET_SV_GIT_CF)config.guess -O config.guess && \ |
| $(WGET_SV_GIT_CF)config.sub -O config.sub && \ |
| $(WGET_SV_CVS)texinfo/texinfo/doc/texinfo.tex -O texinfo.tex && \ |
| $(WGET_SV_GIT_GL)doc/INSTALL -O INSTALL && \ |
| $(WGET_SV_GIT_GL)build-aux/gnupload -O gnupload && \ |
| $(WGET_SV_GIT_GL)build-aux/update-copyright -O update-copyright && \ |
| $(WGET_SV_GIT_GL)build-aux/gitlog-to-changelog -O gitlog-to-changelog) |
| ## Don't exit after test because we want to give as many errors as |
| ## possible. |
| @stat=0; for file in $(FETCHFILES); do \ |
| if diff -u $(srcdir)/lib/$$file Fetchdir/$$file \ |
| >>Fetchdir/update.patch 2>/dev/null; then :; \ |
| else \ |
| stat=1; \ |
| echo "Updating $(srcdir)/lib/$$file ..."; \ |
| cp Fetchdir/$$file $(srcdir)/lib/$$file; \ |
| fi; \ |
| done; \ |
| test $$stat = 0 || \ |
| echo "See Fetchdir/update.patch for a log of the changes."; \ |
| exit $$stat |
| .PHONY: fetch |
| |
| |
| ## ------------------------------------------------ ## |
| ## 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/$@ |