X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=gnulib-tool;h=e3e928d06bcc738abaf9c9644f91fee5e6248927;hb=8c7c9cbc34033a0cea5bf11ba9b4df7b0eec0f59;hp=dff02be8c4336b48e72eebf8eb80ba7c05e5bbc0;hpb=15ab52dfbc4f58755ea94f50f0d5b4f53f395a19;p=gnulib.git diff --git a/gnulib-tool b/gnulib-tool index dff02be8c..e3e928d06 100755 --- a/gnulib-tool +++ b/gnulib-tool @@ -1,6 +1,6 @@ #! /bin/sh # -# Copyright (C) 2002-2006 Free Software Foundation, Inc. +# Copyright (C) 2002-2007 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,7 +22,7 @@ progname=$0 package=gnulib -cvsdatestamp='$Date: 2006-11-06 13:04:37 $' +cvsdatestamp='$Date: 2007-01-09 13:44:33 $' last_checkin_date=`echo "$cvsdatestamp" | sed -e 's,^\$[D]ate: ,,'` version=`echo "$last_checkin_date" | sed -e 's/ .*$//' -e 's,/,-,g'` nl=' @@ -66,10 +66,13 @@ if test -z "${AUTOPOINT}" || test -n "${GETTEXTPATH}"; then AUTOPOINT="${GETTEXTPATH}autopoint" fi -# GNU sort is needed. Set SORT to its location (not needed if it's called -# 'sort' and already in the PATH). -if test -z "$SORT"; then - SORT=sort +# When using GNU sed, turn off as many GNU extensions as possible, +# to minimize the risk of accidentally using non-portable features. +# However, do this only for gnulib-tool itself, not for the code that +# gnulib-tool generates, since we don't want "sed --posix" to leak +# into makefiles. +if (alias) > /dev/null 2>&1 && echo | sed --posix d >/dev/null 2>&1; then + alias sed='sed --posix' fi # func_usage @@ -159,6 +162,8 @@ Options for --import: Options for --import and --update: --dry-run For --import, only print what would have been done. -s, --symbolic, --symlink Make symbolic links instead of copying files. + --local-symlink Make symbolic links instead of copying files, only + for files from the local override directory. Report bugs to ." } @@ -180,7 +185,7 @@ Written by" "Bruno Haible" "and" "Simon Josefsson" # outputs to stdout a header for a generated file. func_emit_copyright_notice () { - echo "# Copyright (C) 2004-2006 Free Software Foundation, Inc." + echo "# Copyright (C) 2004-2007 Free Software Foundation, Inc." echo "#" echo "# This file is free software, distributed under the terms of the GNU" echo "# General Public License. As a special exception to the GNU General" @@ -271,21 +276,6 @@ else } fi -# func_ln_if_changed SRC DEST -# Like ln -s, but avoids munging timestamps if the link is correct. -func_ln_if_changed () -{ - if test $# -ne 2; then - echo "usage: func_ln_if_changed SRC DEST" >&2 - fi - if test -L "$2" && test "$1" = "`func_readlink "$2"`"; then - : - else - rm -f "$2" - ln -s "$1" "$2" - fi -} - # func_relativize DIR1 DIR2 # computes a relative pathname RELDIR such that DIR1/RELDIR = DIR2. # Input: @@ -379,6 +369,45 @@ func_relconcat () done } +# func_ln SRC DEST +# Like ln -s, except that SRC is given relative to the current directory (or +# absolute), not given relative to the directory of DEST. +func_ln () +{ + case "$1" in + /*) + ln -s "$1" "$2" ;; + *) # SRC is relative. + case "$2" in + /*) + ln -s "`pwd`/$1" "$2" ;; + *) # DEST is relative too. + ln_destdir=`echo "$2" | sed -e 's,[^/]*$,,'` + test -n "$ln_destdir" || ln_destdir="." + func_relativize "$ln_destdir" "$1" + ln -s "$reldir" "$2" + ;; + esac + ;; + esac +} + +# func_ln_if_changed SRC DEST +# Like func_ln, but avoids munging timestamps if the link is correct. +func_ln_if_changed () +{ + if test $# -ne 2; then + echo "usage: func_ln_if_changed SRC DEST" >&2 + fi + ln_target=`func_readlink "$2"` + if test -L "$2" && test "$1" = "$ln_target"; then + : + else + rm -f "$2" + func_ln "$1" "$2" + fi +} + # Command-line option processing. # Removes the OPTIONS from the arguments. Sets the variables: # - mode list or import or create-testdir or create-megatestdir @@ -400,7 +429,8 @@ func_relconcat () # - autoconf_minversion minimum supported autoconf version # - do_changelog false if --no-changelog was given, : otherwise # - doit : if actions shall be executed, false if only to be printed -# - symbolic true if --symbolic was given, blank otherwise +# - symbolic true if --symlink was given, blank otherwise +# - lsymbolic true if --local-symlink was given, blank otherwise { mode= destdir= @@ -421,6 +451,7 @@ func_relconcat () do_changelog=: doit=: symbolic= + lsymbolic= supplied_opts="$@" @@ -584,6 +615,9 @@ func_relconcat () -s | --symbolic | --symboli | --symbol | --symbo | --symb | --symlink | --symlin | --symli | --syml | --sym | --sy ) symbolic=true shift ;; + --local-symlink | --local-symlin | --local-symli | --local-syml | --local-sym | --local-sy | --local-s ) + lsymbolic=true + shift ;; --help | --hel | --he | --h ) func_usage func_exit $? ;; @@ -659,11 +693,14 @@ func_relconcat () s,^dnl .*$,, s, dnl .*$,, /AC_PREREQ/ { - s,^.*AC_PREREQ([[ ]*\([^])]*\).*$,prereqs="$prereqs \1",p + s,^.*AC_PREREQ([[ ]*\([^])]*\).*$,\1,p }' - eval `sed -n -e "$my_sed_traces" < "$configure_ac"` + prereqs=`sed -n -e "$my_sed_traces" < "$configure_ac"` if test -n "$prereqs"; then - autoconf_minversion=`for version in $prereqs; do echo $version; done | $SORT -g -u | tail -1` + autoconf_minversion=` + for version in $prereqs; do echo $version; done | + LC_ALL=C sort -nru | sed 1q + ` fi fi if test -z "$autoconf_minversion"; then @@ -777,12 +814,18 @@ func_all_modules () # Filter out unit test modules; they can be retrieved through # --extract-tests-module if desired. { - (cd "$gnulib_dir/modules" && ls -1) + (cd "$gnulib_dir" && find modules -type f -print | sed -e 's,^modules/,,') if test -n "$local_gnulib_dir" && test -d "$local_gnulib_dir/modules"; then - (cd "$local_gnulib_dir/modules" && ls -1 | sed -e 's,\.diff$,,') + (cd "$local_gnulib_dir" && find modules -type f -print | sed -e 's,^modules/,,' -e 's,\.diff$,,') fi } \ - | sed -e '/^CVS$/d' -e '/^ChangeLog$/d' -e '/^COPYING$/d' -e '/^README$/d' -e '/^TEMPLATE$/d' -e '/^TEMPLATE-TESTS$/d' -e '/~$/d' \ + | sed -e '/^CVS$/d' -e '/[/]CVS$/d' \ + -e '/^ChangeLog$/d' -e '/[/]ChangeLog$/d' \ + -e '/^COPYING$/d' -e '/[/]COPYING$/d' \ + -e '/^README$/d' -e '/[/]README$/d' \ + -e '/^TEMPLATE$/d' \ + -e '/^TEMPLATE-TESTS$/d' \ + -e '/~$/d' \ | sed -e '/-tests$/d' \ | LC_ALL=C sort -u } @@ -871,6 +914,7 @@ func_get_filelist () { func_lookup_file "modules/$1" sed -n -e "/^Files$sed_extract_prog" < "$lookedup_file" + echo m4/gnulib-common.m4 case "$autoconf_minversion" in 2.59) #echo m4/onceonly.m4 @@ -920,7 +964,7 @@ func_get_automake_snippet () s/\\$/\\/ ta }' - sed_extract_mentioned_files='s/^lib_SOURCES[ ]*+=[ ]*//p' + sed_extract_mentioned_files='s/^lib_SOURCES[ ]*+=[ ]*//p' already_mentioned_files=` \ sed -n -e "/^Makefile\.am$sed_extract_prog" < "$lookedup_file" \ | sed -e "$sed_combine_lines" \ @@ -939,6 +983,23 @@ func_get_automake_snippet () echo "EXTRA_DIST +=" $extra_files echo fi + # Synthesize also an EXTRA_lib_SOURCES augmentation. + # This is necessary so that automake can generate the right list of + # dependency rules. + # A possible approach would be to use autom4te --trace of the redefined + # AC_LIBOBJ and AC_REPLACE_FUNCS macros when creating the Makefile.am + # (use autom4te --trace, not just grep, so that AC_LIBOBJ invocations + # inside autoconf's built-in macros are not missed). + # But it's simpler and more robust to do it here, based on the file list. + # If some .c file exists and is not used with AC_LIBOBJ - for example, + # a .c file is preprocessed into another .c file for BUILT_SOURCES -, + # automake will generate a useless dependency; this is harmless. + sed_extract_c_files='/\.c$/p' + extra_files=`echo "$extra_files" | sed -n -e "$sed_extract_c_files"` + if test -n "$extra_files"; then + echo "EXTRA_lib_SOURCES +=" $extra_files + echo + fi ;; esac } @@ -1110,10 +1171,13 @@ func_modules_to_filelist () # - local_gnulib_dir from --local-dir # - modules list of modules, including dependencies # - libname library name +# - auxdir directory relative to destdir where to place build aux files # - makefile_name from --makefile-name # - libtool true if libtool will be used, false or blank otherwise # - macro_prefix prefix of gl_LIBOBJS macros to use # - actioncmd (optional) command that will reproduce this invocation +# Output: +# - uses_subdirs nonempty if object files in subdirs exist func_emit_lib_Makefile_am () { # When creating an includable Makefile.am snippet, augment variables with @@ -1139,11 +1203,8 @@ func_emit_lib_Makefile_am () echo "# Reproduce by: $actioncmd" fi echo - if test -z "$makefile_name"; then - echo "AUTOMAKE_OPTIONS = 1.5 gnits" - fi - echo - ( + uses_subdirs= + { for module in $modules; do func_verify_nontests_module if test -n "$module"; then @@ -1169,28 +1230,29 @@ func_emit_lib_Makefile_am () echo fi rm -f amsnippet.tmp + # Test whether there are some source files in subdirectories. + for f in `func_get_filelist "$module"`; do + case $f in + lib/*/*.c) uses_subdirs=yes ;; + esac + done fi done - ) > allsnippets.tmp - if grep "^[a-zA-Z0-9_]*_${perhapsLT}LIBRARIES *= *$libname\\.$libext\$" allsnippets.tmp > /dev/null; then - # One of the snippets already specifies an installation location for the - # library. Don't confuse automake by saying it should not be installed. - : - else - # By default, the generated library should not be installed. - echo "noinst_${perhapsLT}LIBRARIES $assign $libname.$libext" + } > allsnippets.tmp + if test -z "$makefile_name"; then + # If there are source files in subdirectories, prevent collision of the + # object files (example: hash.c and libxml/hash.c). + subdir_options= + if test -n "$uses_subdirs"; then + subdir_options=' subdir-objects' + fi + echo "AUTOMAKE_OPTIONS = 1.5 gnits${subdir_options}" fi echo - echo "${libname}_${libext}_SOURCES =" - # Here we use $(LIBOBJS), not @LIBOBJS@. The value is the same. However, - # automake during its analyses looks for $(LIBOBJS), not for @LIBOBJS@. - echo "${libname}_${libext}_LIBADD = \$(${macro_prefix}_${perhapsLT}LIBOBJS)" - echo "${libname}_${libext}_DEPENDENCIES = \$(${macro_prefix}_${perhapsLT}LIBOBJS)" - if test "$libtool" = true; then - echo "${libname}_${libext}_LDFLAGS = \$(AM_LDFLAGS)" - fi if test -z "$makefile_name"; then echo "noinst_HEADERS =" + echo "noinst_LIBRARIES =" + echo "noinst_LTLIBRARIES =" # Automake versions < 1.9b create an empty pkgdatadir at installation time # if you specify pkgdata_DATA to empty. This is a workaround. if grep '^pkgdata_DATA *+=' allsnippets.tmp > /dev/null; then @@ -1210,7 +1272,27 @@ func_emit_lib_Makefile_am () echo "AM_CPPFLAGS =" fi echo - cat allsnippets.tmp + if grep "^[a-zA-Z0-9_]*_${perhapsLT}LIBRARIES *= *$libname\\.$libext\$" allsnippets.tmp > /dev/null; then + # One of the snippets already specifies an installation location for the + # library. Don't confuse automake by saying it should not be installed. + : + else + # By default, the generated library should not be installed. + echo "noinst_${perhapsLT}LIBRARIES += $libname.$libext" + fi + echo + echo "${libname}_${libext}_SOURCES =" + # Here we use $(LIBOBJS), not @LIBOBJS@. The value is the same. However, + # automake during its analyses looks for $(LIBOBJS), not for @LIBOBJS@. + echo "${libname}_${libext}_LIBADD = \$(${macro_prefix}_${perhapsLT}LIBOBJS)" + echo "${libname}_${libext}_DEPENDENCIES = \$(${macro_prefix}_${perhapsLT}LIBOBJS)" + echo "EXTRA_${libname}_${libext}_SOURCES =" + if test "$libtool" = true; then + echo "${libname}_${libext}_LDFLAGS = \$(AM_LDFLAGS)" + fi + echo + cat allsnippets.tmp \ + | sed -e 's|\$(top_srcdir)/build-aux/|$(top_srcdir)/'"$auxdir"'/|g' echo echo "mostlyclean-local: mostlyclean-generic" echo " @for dir in '' \$(MOSTLYCLEANDIRS); do \\" @@ -1328,8 +1410,22 @@ func_emit_tests_Makefile_am () # - macro_prefix prefix of gl_EARLY, gl_INIT macros to use func_emit_initmacro_start () { + # Overriding AC_LIBOBJ and AC_REPLACE_FUNCS has the effect of storing + # platform-dependent object files in ${macro_prefix}_LIBOBJS instead of + # LIBOBJS. The purpose is to allow several gnulib instantiations under + # a single configure.ac file. (AC_CONFIG_LIBOBJ_DIR does not allow this + # flexibility.) + # Furthermore it avoids an automake error like this when a Makefile.am + # that uses pieces of gnulib also uses $(LIBOBJ): + # automatically discovered file `error.c' should not be explicitly mentioned echo " m4_pushdef([AC_LIBOBJ], m4_defn([${macro_prefix}_LIBOBJ]))" echo " m4_pushdef([AC_REPLACE_FUNCS], m4_defn([${macro_prefix}_REPLACE_FUNCS]))" + # Overriding AC_LIBSOURCES has the same purpose of avoiding the automake + # error when a Makefile.am that uses pieces of gnulib also uses $(LIBOBJ): + # automatically discovered file `error.c' should not be explicitly mentioned + # We let automake know about the files to be distributed through the + # EXTRA_lib_SOURCES variable. + echo " m4_pushdef([AC_LIBSOURCES], m4_defn([${macro_prefix}_LIBSOURCES]))" } # func_emit_initmacro_end @@ -1337,6 +1433,7 @@ func_emit_initmacro_start () # - macro_prefix prefix of gl_EARLY, gl_INIT macros to use func_emit_initmacro_end () { + echo " m4_popdef([AC_LIBSOURCES])" echo " m4_popdef([AC_REPLACE_FUNCS])" echo " m4_popdef([AC_LIBOBJ])" echo " AC_CONFIG_COMMANDS_PRE([" @@ -1370,6 +1467,11 @@ func_emit_initmacro_done () echo "# into ${macro_prefix}_LIBOBJS instead of into LIBOBJS." echo "AC_DEFUN([${macro_prefix}_REPLACE_FUNCS]," echo " [AC_CHECK_FUNCS([\$1], , [${macro_prefix}_LIBOBJ(\$ac_func)])])" + echo + echo "# Like AC_LIBSOURCES, except that it does nothing." + echo "# We rely on EXTRA_lib..._SOURCES instead." + echo "AC_DEFUN([${macro_prefix}_LIBSOURCES]," + echo " [])" } # func_import modules @@ -1393,6 +1495,8 @@ func_emit_initmacro_done () # - autoconf_minversion minimum supported autoconf version # - doit : if actions shall be executed, false if only to be printed # - symbolic true if files should be symlinked, copied otherwise +# - lsymbolic true if files from local_gnulib_dir should be symlinked, +# copied otherwise func_import () { # Get the cached settings. @@ -1733,7 +1837,10 @@ func_import () echo "Replacing file $g (non-gnulib code backuped in ${g}~) !!" fi mv -f "$destdir/$g" "$destdir/${g}~" || func_fatal_error "failed" - if test -n "$symbolic" && test -z "$lookedup_tmp" \ + if { test -n "$symbolic" \ + || { test -n "$lsymbolic" \ + && test "$lookedup_file" = "$local_gnulib_dir/$f"; }; } \ + && test -z "$lookedup_tmp" \ && cmp "$lookedup_file" "$tmpfile" > /dev/null; then func_ln_if_changed "$lookedup_file" "$destdir/$g" else @@ -1753,7 +1860,10 @@ func_import () # frequently that developers don't put autogenerated files into CVS. if $doit; then echo "Copying file $g" - if test -n "$symbolic" && test -z "$lookedup_tmp" \ + if { test -n "$symbolic" \ + || { test -n "$lsymbolic" \ + && test "$lookedup_file" = "$local_gnulib_dir/$f"; }; } \ + && test -z "$lookedup_tmp" \ && cmp "$lookedup_file" "$tmpfile" > /dev/null; then func_ln_if_changed "$lookedup_file" "$destdir/$g" else @@ -1948,6 +2058,9 @@ func_import () echo " m4_pattern_allow([^gl_LIBOBJS\$])dnl a variable" echo " m4_pattern_allow([^gl_LTLIBOBJS\$])dnl a variable" echo " AC_REQUIRE([AC_PROG_RANLIB])" + if test -n "$uses_subdirs"; then + echo " AC_REQUIRE([AM_PROG_CC_C_O])" + fi if grep AC_GNU_SOURCE "$destdir"/$m4base/*.m4 >/dev/null 2>/dev/null; then echo " AC_REQUIRE([AC_GNU_SOURCE])" fi @@ -2079,10 +2192,17 @@ func_import () echo "Finished." echo echo "You may need to add #include directives for the following .h files." + # Intersect $specified_modules and $modules + # (since $specified_modules is not necessarily of subset of $modules - some + # may have been skipped through --avoid, and since the elements of $modules + # but not in $specified_modules can go away without explicit notice - through + # changes in the module dependencies). + echo "$specified_modules" > "$tmp"/modules1 # a sorted list, one module per line + echo "$modules" > "$tmp"/modules2 # also a sorted list, one module per line # First the #include <...> directives without #ifs, sorted for convenience, # then the #include "..." directives without #ifs, sorted for convenience, # then the #include directives that are surrounded by #ifs. Not sorted. - for module in $modules; do + for module in `LC_ALL=C join "$tmp"/modules1 "$tmp"/modules2`; do include_directive=`func_get_include_directive "$module"` case "$nl$include_directive" in *"$nl#if"*) @@ -2150,6 +2270,30 @@ func_create_testdir () fi modules=`for m in $modules; do echo $m; done | LC_ALL=C sort -u` + # Check that the license of every module is consistent with the license of + # its dependencies. + saved_modules="$modules" + for requested_module in $saved_modules; do + requested_license=`func_get_license "$requested_module"` + if test "$requested_license" != GPL; then + # Here we use func_modules_transitive_closure, not just + # func_get_dependencies, so that we also detect weird situations like + # an LGPL module which depends on a GPLed build tool module which depends + # on a GPL module. + modules="$requested_module" + func_modules_transitive_closure + for module in $modules; do + license=`func_get_license "$module"` + case $license in + LGPL | 'GPLed build tool') ;; + 'public domain' | 'unlimited' | 'unmodifiable license text') ;; + *) echo "warning: module $requested_module depends on a module with an incompatible license: $module" 1>&2 ;; + esac + done + fi + done + modules="$saved_modules" + # Subdirectory names. sourcebase=gllib m4base=glm4 @@ -2207,10 +2351,12 @@ func_create_testdir () cp -p "$lookedup_file" "$testdir/$g" else ln "$lookedup_file" "$testdir/$g" 2>/dev/null || - if test -z "$symbolic"; then - cp -p "$lookedup_file" "$testdir/$g" + if { test -n "$symbolic" \ + || { test -n "$lsymbolic" \ + && test "$lookedup_file" = "$local_gnulib_dir/$f"; }; }; then + func_ln "$lookedup_file" "$testdir/$g" else - ln -s "$lookedup_file" "$testdir/$g" + cp -p "$lookedup_file" "$testdir/$g" fi fi done @@ -2284,7 +2430,6 @@ func_create_testdir () echo "gl_libdeps=" echo "gl_ltlibdeps=" fi - echo "gl_source_base='$testsbase'" # Wrap the set of autoconf snippets into an autoconf macro that is then # invoked. This is needed because autoconf does not support AC_REQUIRE # at the top level: @@ -2294,20 +2439,17 @@ func_create_testdir () # expansion total). echo "AC_DEFUN([gl_INIT], [" func_emit_initmacro_start - if test "$auxdir" != "build-aux"; then - sed_replace_build_aux=' - :a - /AC_CONFIG_FILES(.*:build-aux\/.*)/{ - s|AC_CONFIG_FILES(\(.*\):build-aux/\(.*\))|AC_CONFIG_FILES(\1:../'"$auxdir"'/\2)| - ba - }' - sed_replace_build_aux=`echo "$sed_replace_build_aux" | sed -e 1d -e 's/^ *//'` - else - sed_replace_build_aux= - fi + sed_replace_build_aux=' + :a + /AC_CONFIG_FILES(.*:build-aux\/.*)/{ + s|AC_CONFIG_FILES(\(.*\):build-aux/\(.*\))|AC_CONFIG_FILES(\1:../'"$auxdir"'/\2)| + ba + }' + sed_replace_build_aux=`echo "$sed_replace_build_aux" | sed -e 1d -e 's/^ *//'` # We don't have explicit ordering constraints between the various # autoconf snippets. It's cleanest to put those of the library before # those of the tests. + echo "gl_source_base='../$sourcebase'" for module in $modules; do func_verify_nontests_module if test -n "$module"; then @@ -2315,6 +2457,7 @@ func_create_testdir () | sed -e "$sed_replace_build_aux" fi done + echo "gl_source_base='.'" for module in $modules; do func_verify_tests_module if test -n "$module"; then @@ -2371,6 +2514,10 @@ func_create_testdir () echo "AC_PROG_INSTALL" echo "AC_PROG_MAKE_SET" echo + echo "# For autobuild." + echo "AC_CANONICAL_BUILD" + echo "AC_CANONICAL_HOST" + echo echo "m4_pattern_forbid([^gl_[A-Z]])dnl the gnulib macro namespace" echo "m4_pattern_allow([^gl_ES\$])dnl a valid locale name" echo "m4_pattern_allow([^gl_LIBOBJS\$])dnl a variable" @@ -2378,6 +2525,10 @@ func_create_testdir () echo echo "AC_PROG_RANLIB" echo + if test -n "$uses_subdirs"; then + echo "AM_PROG_CC_C_O" + echo + fi if grep AC_GNU_SOURCE "$testdir/$m4base"/*.m4 >/dev/null 2>/dev/null; then echo "AC_GNU_SOURCE" echo @@ -2463,33 +2614,59 @@ func_create_testdir () # autopoint, which brings in older versions of some of our .m4 files. if test -f $m4base/gettext.m4; then echo "executing ${AUTOPOINT} --force" - ${AUTOPOINT} --force + ${AUTOPOINT} --force || func_exit 1 for f in $m4base/*.m4~; do - mv $f `echo $f | sed -e 's,~$,,'` + mv -f $f `echo $f | sed -e 's,~$,,'` || func_exit 1 done fi - echo "executing ${ACLOCAL} --force -I $m4base" - ${ACLOCAL} --force -I $m4base + echo "executing ${ACLOCAL} -I $m4base" + ${ACLOCAL} -I $m4base || func_exit 1 if ! test -d build-aux; then echo "executing mkdir build-aux" - mkdir build-aux + mkdir build-aux || func_exit 1 fi - echo "executing ${AUTOCONF} --force" - ${AUTOCONF} --force - echo "executing ${AUTOHEADER} --force" - ${AUTOHEADER} --force - echo "executing ${AUTOMAKE} --add-missing --copy --force-missing" - ${AUTOMAKE} --add-missing --copy --force-missing - ) + echo "executing ${AUTOCONF}" + ${AUTOCONF} || func_exit 1 + echo "executing ${AUTOHEADER}" + ${AUTOHEADER} || func_exit 1 + echo "executing ${AUTOMAKE} --add-missing --copy" + ${AUTOMAKE} --add-missing --copy || func_exit 1 + ) || func_exit 1 + if test -n "$inctests"; then + # Create autogenerated files. + (cd "$testdir/$testsbase" || func_exit 1 + # Do not use "${AUTORECONF} --force --install", because it may invoke + # autopoint, which brings in older versions of some of our .m4 files. + if test -f ../$m4base/gettext.m4; then + echo "executing ${AUTOPOINT} --force" + ${AUTOPOINT} --force || func_exit 1 + for f in ../$m4base/*.m4~; do + mv -f $f `echo $f | sed -e 's,~$,,'` || func_exit 1 + done + fi + echo "executing ${ACLOCAL} -I ../$m4base" + ${ACLOCAL} -I ../$m4base || func_exit 1 + if ! test -d ../build-aux; then + echo "executing mkdir ../build-aux" + mkdir ../build-aux + fi + echo "executing ${AUTOCONF}" + ${AUTOCONF} || func_exit 1 + echo "executing ${AUTOHEADER}" + ${AUTOHEADER} || func_exit 1 + echo "executing ${AUTOMAKE} --add-missing --copy" + ${AUTOMAKE} --add-missing --copy || func_exit 1 + ) || func_exit 1 + fi if grep '^BUILT_SOURCES *+=' "$testdir/$sourcebase/Makefile.am" > /dev/null; then (cd "$testdir" - ./configure + ./configure || func_exit 1 cd "$sourcebase" echo 'built_sources: $(BUILT_SOURCES)' >> Makefile - make built_sources + make built_sources || func_exit 1 cd .. - make distclean - ) + make distclean || func_exit 1 + ) || func_exit 1 fi } @@ -2546,14 +2723,14 @@ func_create_megatestdir () # recursively, but the subdirectories are already finished, therefore # calling autoreconf here would only waste lots of CPU time. echo "executing ${ACLOCAL}" - ${ACLOCAL} + ${ACLOCAL} || func_exit 1 echo "executing mkdir build-aux" mkdir build-aux echo "executing ${AUTOCONF}" - ${AUTOCONF} + ${AUTOCONF} || func_exit 1 echo "executing ${AUTOMAKE} --add-missing --copy" - ${AUTOMAKE} --add-missing --copy - ) + ${AUTOMAKE} --add-missing --copy || func_exit 1 + ) || func_exit 1 } case $mode in @@ -2722,10 +2899,10 @@ case $mode in cd "$destdir" mkdir build cd build - ../configure - make - make check - make distclean + ../configure || func_exit 1 + make || func_exit 1 + make check || func_exit 1 + make distclean || func_exit 1 remaining=`find . -type f -print` if test -n "$remaining"; then echo "Remaining files:" $remaining 1>&2