Merge branch 'stable'
authorIan Beckwith <ianb@erislabs.net>
Thu, 8 Sep 2011 02:18:18 +0000 (03:18 +0100)
committerIan Beckwith <ianb@erislabs.net>
Thu, 8 Sep 2011 02:18:18 +0000 (03:18 +0100)
1  2 
gnulib-tool

diff --combined gnulib-tool
@@@ -224,9 -224,10 +224,10 @@@ Options for --import, --add/remove-impo
                              have code that provides equivalent functionality.
                              This option can be repeated.
        --conditional-dependencies
-                             Support conditional dependencies (experimental,
-                             may save configure time and object code, not
-                             compatible with --with-tests).
+                             Support conditional dependencies (may save configure
+                             time and object code).
+       --no-conditional-dependencies
+                             Don't use conditional dependencies.
        --libtool             Use libtool rules.
        --no-libtool          Don't use libtool rules.
  
@@@ -258,6 -259,8 +259,8 @@@ Options for --import, --add/remove-impo
                              'gl_INIT'. Default is 'gl'.
        --po-domain=NAME      Specify the prefix of the i18n domain. Usually use
                              the package name. A suffix '-gnulib' is appended.
+       --witness-c-macro=NAME  Specify the C macro that is defined when the
+                             sources in this directory are compiled or used.
        --vc-files            Update version control related files.
        --no-vc-files         Don't update version control related files
                              (.gitignore and/or .cvsignore).
@@@ -272,6 -275,8 +275,8 @@@ Options for --create-[mega]testdir, --[
                              Exclude unit tests that require root privileges.
        --without-unportable-tests
                              Exclude unit tests that fail on some platforms.
+       --single-configure    Generate a single configure file, not a separate
+                             configure file for the tests directory.
  
  Options for --import, --add/remove-import, --update,
              --create-[mega]testdir, --[mega]test:
@@@ -438,7 -443,7 +443,7 @@@ func_gnulib_dir (
        * ) self_abspathname=`echo "$self_abspathname" | sed -e 's,/[^/]*$,,'`/"$linkval" ;;
      esac
    done
 -  gnulib_dir=`echo "$self_abspathname" | sed -e 's,/[^/]*$,,'`
 +  gnulib_dir=/usr/share/gnulib
  }
  
  # func_tmpdir
  #                          otherwise
  # - excl_unportable_tests  true if --without-unportable-tests was given, blank
  #                          otherwise
+ # - single_configure  true if --single-configure was given, false otherwise
  # - avoidlist       list of modules to avoid, from --avoid
- # - cond_dependencies  true if --conditional-dependencies was given, blank
- #                      otherwise
+ # - cond_dependencies  true if --conditional-dependencies was given, false if
+ #                      --no-conditional-dependencies was given, blank otherwise
  # - lgpl            yes or a number if --lgpl was given, blank otherwise
  # - makefile_name   from --makefile-name
  # - libtool         true if --libtool was given, false if --no-libtool was
  #                   given, blank otherwise
  # - macro_prefix    from --macro-prefix
  # - po_domain       from --po-domain
+ # - witness_c_macro  from --witness-c-macro
  # - vc_files        true if --vc-files was given, false if --no-vc-files was
  #                   given, blank otherwise
  # - autoconf_minversion  minimum supported autoconf version
    excl_longrunning_tests=
    excl_privileged_tests=
    excl_unportable_tests=
+   single_configure=false
    avoidlist=
    cond_dependencies=
    lgpl=
    libtool=
    macro_prefix=
    po_domain=
+   witness_c_macro=
    vc_files=
    do_changelog=:
    doit=:
        --without-unportable-tests | --without-unportable-test | --without-unportable-tes | --without-unportable-te | --without-unportable-t | --without-unportable- | --without-unportable | --without-unportabl | --without-unportab | --without-unporta | --without-unport | --without-unpor | --without-unpo | --without-unp | --without-un | --without-u)
          excl_unportable_tests=true
          shift ;;
+       --single-configure | --single-configur | --single-configu | --single-config | --single-confi | --single-conf | --single-con | --single-con | --single-co | --single-c | --single- | --single | --singl | --sing | --sin | --si)
+         single_configure=true
+         shift ;;
        --avoid )
          shift
          if test $# = 0; then
        --conditional-dependencies | --conditional-dependencie | --conditional-dependenci | --conditional-dependenc | --conditional-dependen | --conditional-depende | --conditional-depend | --conditional-depen | --conditional-depe | --conditional-dep | --conditional-de | --conditional-d | --conditional- | --conditional | --conditiona | --condition | --conditio | --conditi | --condit | --condi | --cond | --con)
          cond_dependencies=true
          shift ;;
+       --no-conditional-dependencies | --no-conditional-dependencie | --no-conditional-dependenci | --no-conditional-dependenc | --no-conditional-dependen | --no-conditional-depende | --no-conditional-depend | --no-conditional-depen | --no-conditional-depe | --no-conditional-dep | --no-conditional-de | --no-conditional-d | --no-conditional- | --no-conditional | --no-conditiona | --no-condition | --no-conditio | --no-conditi | --no-condit | --no-condi | --no-cond | --no-con | --no-co)
+         cond_dependencies=false
+         shift ;;
        --lgpl )
          lgpl=yes
          shift ;;
        --po-domain=* )
          po_domain=`echo "X$1" | sed -e 's/^X--po-domain=//'`
          shift ;;
+       --witness-c-macro )
+         shift
+         if test $# = 0; then
+           func_fatal_error "missing argument for --witness-c-macro"
+         fi
+         witness_c_macro="$1"
+         shift ;;
+       --witness-c-macro=* )
+         witness_c_macro=`echo "X$1" | sed -e 's/^X--witness-c-macro=//'`
+         shift ;;
        --vc-files )
          vc_files=true
          shift ;;
  
    if case "$mode" in import | add-import | remove-import) true;; *) false;; esac; then
      if test -n "$excl_cxx_tests" || test -n "$excl_longrunning_tests" \
-        || test -n "$excl_privileged_tests" || test -n "$excl_unportable_tests"; then
+        || test -n "$excl_privileged_tests" || test -n "$excl_unportable_tests" \
+        || test "$single_configure" != false; then
        echo "gnulib-tool: invalid options for '$mode' mode" 1>&2
        echo "Try 'gnulib-tool --help' for more information." 1>&2
        func_exit 1
         || test -n "$excl_privileged_tests" || test -n "$excl_unportable_tests" \
         || test -n "$avoidlist" || test -n "$lgpl" || test -n "$makefile_name" \
         || test -n "$macro_prefix" || test -n "$po_domain" \
-        || test -n "$vc_files"; then
+        || test -n "$witness_c_macro" || test -n "$vc_files"; then
        echo "gnulib-tool: invalid options for 'update' mode" 1>&2
        echo "Try 'gnulib-tool --help' for more information." 1>&2
        echo "If you really want to modify the gnulib configuration of your project," 1>&2
    if test -z "$pobase" && test -n "$po_domain"; then
      func_warning "--po-domain has no effect without a --po-base option"
    fi
-   if test -n "$cond_dependencies" && test -n "$inctests"; then
+   if test "$cond_dependencies" = true && test -n "$inctests"; then
      echo "gnulib-tool: option --conditional-dependencies is not supported with --with-tests" 1>&2
      func_exit 1
    fi
@@@ -2070,24 -2096,26 +2096,26 @@@ func_get_dependencies (
        ;;
    esac
    # Then the explicit dependencies listed in the module description.
-   if ! $modcache; then
-     func_lookup_file "modules/$1"
-     sed -n -e "/^Depends-on$sed_extract_prog" < "$lookedup_file"
-   else
-     func_cache_lookup_module "$1"
-     # Output the field's value, including the final newline (if any).
-     if $have_associative; then
-       if eval 'test -n "${modcache_dependson[$1]+set}"'; then
-         eval 'echo "${modcache_dependson[$1]}"'
-       fi
+   { if ! $modcache; then
+       func_lookup_file "modules/$1"
+       sed -n -e "/^Depends-on$sed_extract_prog" < "$lookedup_file"
      else
-       eval "field_set=\"\$${cachevar}_dependson_set\""
-       if test -n "$field_set"; then
-         eval "field_value=\"\$${cachevar}_dependson\""
-         echo "${field_value}"
+       func_cache_lookup_module "$1"
+       # Output the field's value, including the final newline (if any).
+       if $have_associative; then
+         if eval 'test -n "${modcache_dependson[$1]+set}"'; then
+           eval 'echo "${modcache_dependson[$1]}"'
+         fi
+       else
+         eval "field_set=\"\$${cachevar}_dependson_set\""
+         if test -n "$field_set"; then
+           eval "field_value=\"\$${cachevar}_dependson\""
+           echo "${field_value}"
+         fi
        fi
      fi
-   fi
+   } \
+   | sed -e '/^#/d'
  }
  
  # func_get_autoconf_early_snippet module
@@@ -2605,7 -2633,7 +2633,7 @@@ func_modules_transitive_closure (
    inmodules="$modules"
    outmodules=
    fmtc_inc_all_tests="$inc_all_direct_tests"
-   if test -n "$cond_dependencies"; then
+   if test "$cond_dependencies" = true; then
      for module in $inmodules; do
        func_verify_module
        if test -n "$module"; then
        if test -n "$module"; then
          if func_acceptable $module; then
            func_append outmodules " $module"
-           if test -n "$cond_dependencies"; then
+           if test "$cond_dependencies" = true; then
              if func_get_automake_snippet_conditional $module | grep '^if ' > /dev/null; then
                # A module whose Makefile.am snippet contains a reference to an
                # automake conditional. If we were to use it conditionally, we
              done
              if $inc; then
                func_append inmodules " $dep"
-               if test -n "$cond_dependencies"; then
+               if test "$cond_dependencies" = true; then
                  escaped_dep=`echo "$dep" | sed -e "$sed_escape_dependency"`
                  sed_extract_condition1='/^ *'"$escaped_dep"' *$/{
                    s/^.*$/true/p
@@@ -2754,6 -2782,109 +2782,109 @@@ func_show_module_list (
      | sed -e 's/^\(.*\)|.*/|\1/' -e 's/^/    /' -e 's/^    |\(.*\)$/  '"${bold_on}"'\1'"${bold_off}"'/'
  }
  
+ # func_modules_transitive_closure_separately
+ # Determine main module list and tests-related module list separately.
+ # The main module list is the transitive closure of the specified modules,
+ # ignoring tests modules. Its lib/* sources go into $sourcebase/. If --lgpl
+ # is specified, it will consist only of LGPLed source.
+ # The tests-related module list is the transitive closure of the specified
+ # modules, including tests modules, minus the main module list excluding
+ # modules of applicability 'all'. Its lib/* sources (brought in through
+ # dependencies of *-tests modules) go into $testsbase/. It may contain GPLed
+ # source, even if --lgpl is specified.
+ # Input:
+ # - local_gnulib_dir  from --local-dir
+ # - modcache        true or false, from --cache-modules/--no-cache-modules
+ # - specified_modules  list of specified modules
+ # - inctests        true if tests should be included, blank otherwise
+ # - incobsolete     true if obsolete modules among dependencies should be
+ #                   included, blank otherwise
+ # - inc_cxx_tests   true if C++ interoperability tests should be included,
+ #                   blank otherwise
+ # - inc_longrunning_tests  true if long-runnings tests should be included,
+ #                          blank otherwise
+ # - inc_privileged_tests  true if tests that require root privileges should be
+ #                         included, blank otherwise
+ # - inc_unportable_tests  true if tests that fail on some platforms should be
+ #                         included, blank otherwise
+ # - inc_all_direct_tests   true if all kinds of problematic unit tests among
+ #                          the unit tests of the specified modules should be
+ #                          included, blank otherwise
+ # - inc_all_indirect_tests   true if all kinds of problematic unit tests among
+ #                            the unit tests of the dependencies should be
+ #                            included, blank otherwise
+ # - excl_cxx_tests   true if C++ interoperability tests should be excluded,
+ #                    blank otherwise
+ # - excl_longrunning_tests  true if long-runnings tests should be excluded,
+ #                           blank otherwise
+ # - excl_privileged_tests  true if tests that require root privileges should be
+ #                          excluded, blank otherwise
+ # - excl_unportable_tests  true if tests that fail on some platforms should be
+ #                          excluded, blank otherwise
+ # - avoidlist       list of modules to avoid
+ # - cond_dependencies  true if conditional dependencies shall be supported,
+ #                      blank otherwise
+ # - tmp             pathname of a temporary directory
+ # Output:
+ # - main_modules    list of modules, including dependencies
+ # - testsrelated_modules  list of tests-related modules, including dependencies
+ # - conddep_dependers, conddep_condition  information about conditionally
+ #                                         enabled modules
+ func_modules_transitive_closure_separately ()
+ {
+   # Determine main module list.
+   saved_inctests="$inctests"
+   inctests=""
+   modules="$specified_modules"
+   func_modules_transitive_closure
+   main_modules="$modules"
+   inctests="$saved_inctests"
+   if test $verbose -ge 1; then
+     echo "Main module list:"
+     echo "$main_modules" | sed -e 's/^/  /'
+   fi
+   # Determine tests-related module list.
+   echo "$final_modules" | LC_ALL=C sort -u > "$tmp"/final-modules
+   testsrelated_modules=`for module in $main_modules; do
+                           if test \`func_get_applicability $module\` = main; then
+                             echo $module
+                           fi
+                         done \
+                         | LC_ALL=C sort -u | LC_ALL=C join -v 2 - "$tmp"/final-modules`
+   if test $verbose -ge 1; then
+     echo "Tests-related module list:"
+     echo "$testsrelated_modules" | sed -e 's/^/  /'
+   fi
+ }
+ # func_determine_use_libtests
+ # Determines whether a $testsbase/libtests.a is needed.
+ # Input:
+ # - local_gnulib_dir  from --local-dir
+ # - modcache        true or false, from --cache-modules/--no-cache-modules
+ # - testsrelated_modules  list of tests-related modules, including dependencies
+ # Output:
+ # - use_libtests    true if a $testsbase/libtests.a is needed, false otherwise
+ func_determine_use_libtests ()
+ {
+   use_libtests=false
+   for module in $testsrelated_modules; do
+     func_verify_nontests_module
+     if test -n "$module"; then
+       all_files=`func_get_filelist $module`
+       # Test whether some file in $all_files lies in lib/.
+       for f in $all_files; do
+         case $f in
+           lib/*)
+             use_libtests=true
+             break 2
+             ;;
+         esac
+       done
+     fi
+   done
+ }
  # func_modules_add_dummy
  # Input:
  # - local_gnulib_dir  from --local-dir
    fi
  }
  
+ # func_modules_add_dummy_separately
+ # Input:
+ # - local_gnulib_dir  from --local-dir
+ # - modcache        true or false, from --cache-modules/--no-cache-modules
+ # - main_modules    list of modules, including dependencies
+ # - testsrelated_modules  list of tests-related modules, including dependencies
+ # - use_libtests    true if a $testsbase/libtests.a is needed, false otherwise
+ # Output:
+ # - main_modules    list of modules, including 'dummy' if needed
+ # - testsrelated_modules  list of tests-related modules, including 'dummy' if
+ #                         needed
+ func_modules_add_dummy_separately ()
+ {
+   # Add the dummy module to the main module list if needed.
+   modules="$main_modules"
+   func_modules_add_dummy
+   main_modules="$modules"
+   # Add the dummy module to the tests-related module list if needed.
+   if $use_libtests; then
+     modules="$testsrelated_modules"
+     func_modules_add_dummy
+     testsrelated_modules="$modules"
+   fi
+ }
  # func_modules_notice
  # Input:
  # - local_gnulib_dir  from --local-dir
@@@ -2838,6 -2995,55 +2995,55 @@@ func_modules_to_filelist (
    files=`for f in $files; do echo $f; done | LC_ALL=C sort -u`
  }
  
+ # func_modules_to_filelist_separately
+ # Determine the final file lists.
+ # They must be computed separately, because files in lib/* go into
+ # $sourcebase/ if they are in the main file list but into $testsbase/
+ # if they are in the tests-related file list. Furthermore lib/dummy.c
+ # can be in both.
+ # Input:
+ # - local_gnulib_dir  from --local-dir
+ # - modcache        true or false, from --cache-modules/--no-cache-modules
+ # - main_modules    list of modules, including dependencies
+ # - testsrelated_modules  list of tests-related modules, including dependencies
+ func_modules_to_filelist_separately ()
+ {
+   # Determine final main file list.
+   modules="$main_modules"
+   func_modules_to_filelist
+   main_files="$files"
+   # Determine final tests-related file list.
+   modules="$testsrelated_modules"
+   func_modules_to_filelist
+   testsrelated_files=`echo "$files" | sed -e 's,^lib/,tests=lib/,'`
+   # Merge both file lists.
+   sed_remove_empty_lines='/^$/d'
+   files=`{ echo "$main_files"; echo "$testsrelated_files"; } | sed -e "$sed_remove_empty_lines" | LC_ALL=C sort -u`
+   if test $verbose -ge 0; then
+     echo "File list:"
+     sed_prettyprint_files='s,^tests=lib/\(.*\)$,lib/\1 -> tests/\1,'
+     echo "$files" | sed -e "$sed_prettyprint_files" -e 's/^/  /'
+   fi
+ }
+ # func_compute_include_guard_prefix
+ # Determine include_guard_prefix.
+ # Input:
+ # - macro_prefix    prefix of gl_LIBOBJS macros to use
+ # Output:
+ # - include_guard_prefix  replacement for ${gl_include_guard_prefix}
+ # - sed_replace_include_guard_prefix
+ #                   sed expression for resolving ${gl_include_guard_prefix}
+ func_compute_include_guard_prefix ()
+ {
+   if test "$macro_prefix" = gl; then
+     include_guard_prefix='GL'
+   else
+     include_guard_prefix='GL_'`echo "$macro_prefix" | LC_ALL=C tr '[a-z]' '[A-Z]'`
+   fi
+   sed_replace_include_guard_prefix='s/\${gl_include_guard_prefix}/'"${include_guard_prefix}"'/g'
+ }
  # func_execute_command command [args...]
  # Executes a command.
  # Uses also the variables
@@@ -2980,8 -3186,11 +3186,11 @@@ func_update_file (
  # - libtool         true if libtool will be used, false or blank otherwise
  # - macro_prefix    prefix of gl_LIBOBJS macros to use
  # - po_domain       prefix of i18n domain to use (without -gnulib suffix)
+ # - witness_c_macro  from --witness-c-macro
  # - actioncmd       (optional) command that will reproduce this invocation
  # - for_test        true if creating a package for testing, false otherwise
+ # - sed_replace_include_guard_prefix
+ #                   sed expression for resolving ${gl_include_guard_prefix}
  # - destfile        filename relative to destdir of makefile being generated
  # Input/Output:
  # - makefile_am_edits and makefile_am_edit${edit}_{dir,var,val}
@@@ -3043,7 -3252,8 +3252,8 @@@ func_emit_lib_Makefile_am (
                  -e 's,lib_\([A-Z][A-Z]*\),'"${libname}_${libext}"'_\1,g' \
                  -e 's,lib%_LIBRARIES,lib_LIBRARIES,g' \
                  -e 's,lib%_LTLIBRARIES,lib_LTLIBRARIES,g' \
-                 -e "$sed_transform_check_PROGRAMS"
+                 -e "$sed_transform_check_PROGRAMS" \
+                 -e "$sed_replace_include_guard_prefix"
            if test "$module" = 'alloca'; then
              echo "${libname}_${libext}_LIBADD += @${perhapsLT}ALLOCA@"
              echo "${libname}_${libext}_DEPENDENCIES += @${perhapsLT}ALLOCA@"
          if grep '[^    ]' "$tmp"/amsnippet1 "$tmp"/amsnippet2 > /dev/null ; then
            echo "## begin gnulib module $module"
            echo
-           if test -n "$cond_dependencies"; then
+           if test "$cond_dependencies" = true; then
              if func_cond_module_p "$module"; then
                func_module_conditional_name "$module"
                echo "if $conditional"
              fi
            fi
            cat "$tmp"/amsnippet1
-           if test -n "$cond_dependencies"; then
+           if test "$cond_dependencies" = true; then
              if func_cond_module_p "$module"; then
                echo "endif"
              fi
        fi
      fi
    done
+   if test -n "$witness_c_macro"; then
+     cppflags_part1=" -D$witness_c_macro=1"
+   else
+     cppflags_part1=
+   fi
+   if $for_test; then
+     cppflags_part2=" -DGNULIB_STRICT_CHECKING=1"
+   else
+     cppflags_part2=
+   fi
    if test -z "$makefile_name"; then
      echo
-     if $for_test; then
-       echo "AM_CPPFLAGS = -DGNULIB_STRICT_CHECKING=1"
-     else
-       echo "AM_CPPFLAGS ="
-     fi
+     echo "AM_CPPFLAGS =$cppflags_part1$cppflags_part2"
      echo "AM_CFLAGS ="
+   else
+     if test -n "$cppflags_part1$cppflags_part2"; then
+       echo
+       echo "AM_CPPFLAGS +=$cppflags_part1$cppflags_part2"
+     fi
    fi
    echo
    if LC_ALL=C grep "^[a-zA-Z0-9_]*_${perhapsLT}LIBRARIES *+\{0,1\}= *$libname\\.$libext\$" "$tmp"/allsnippets > /dev/null \
@@@ -3286,8 -3507,13 +3507,13 @@@ func_emit_po_POTFILES_in (
  # - m4base          relative directory containing autoconf macros
  # - testsbase       relative directory containing unit test code
  # - macro_prefix    prefix of gl_LIBOBJS macros to use
+ # - witness_c_macro  from --witness-c-macro
  # - for_test        true if creating a package for testing, false otherwise
+ # - single_configure  true if a single configure file should be generated,
+ #                     false for a separate configure file for the tests
  # - use_libtests    true if a libtests.a should be built, false otherwise
+ # - sed_replace_include_guard_prefix
+ #                   sed expression for resolving ${gl_include_guard_prefix}
  # - destfile        filename relative to destdir of makefile being generated
  # Input/Output:
  # - makefile_am_edits and makefile_am_edit${edit}_{dir,var,val}
@@@ -3321,7 -3547,7 +3547,7 @@@ func_emit_tests_Makefile_am (
    uses_subdirs=
    {
      for module in $modules; do
-       if $for_test; then
+       if $for_test && ! $single_configure; then
          func_verify_tests_module
        else
          func_verify_module
                  -e 's,lib_\([A-Z][A-Z]*\),libtests_a_\1,g' \
                  -e 's,lib%_LIBRARIES,lib_LIBRARIES,g' \
                  -e 's,lib%_LTLIBRARIES,lib_LTLIBRARIES,g' \
-                 -e "$sed_transform_check_PROGRAMS"
+                 -e "$sed_transform_check_PROGRAMS" \
+                 -e "$sed_replace_include_guard_prefix"
            if $use_libtests && test "$module" = 'alloca'; then
              echo "libtests_a_LIBADD += @${perhapsLT}ALLOCA@"
              echo "libtests_a_DEPENDENCIES += @${perhapsLT}ALLOCA@"
    fi
    echo "AUTOMAKE_OPTIONS = 1.5 foreign${subdir_options}"
    echo
-   if $for_test; then
+   if $for_test && ! $single_configure; then
      echo "ACLOCAL_AMFLAGS = -I ${testsbase_inverse}/${m4base}"
      echo
    fi
    if $for_test; then
      echo "  -DGNULIB_STRICT_CHECKING=1 \\"
    fi
+   if test -n "$witness_c_macro"; then
+     echo "  -D$witness_c_macro=1 \\"
+   fi
    if test -n "${witness_macro}"; then
      echo "  -D@${witness_macro}@=1 \\"
    fi
@@@ -3678,7 -3908,7 +3908,7 @@@ func_emit_autoconf_snippets (
    toplevel="$3"
    disable_libtool="$4"
    disable_gettext="$5"
-   if test -n "$cond_dependencies"; then
+   if test "$cond_dependencies" = true; then
      # Emit the autoconf code for the unconditional modules.
      for module in $1; do
        eval $verifier
  #                         otherwise
  # - inc_all_tests   true if --with-all-tests was given, blank otherwise
  # - avoidlist       list of modules to avoid, from --avoid
- # - cond_dependencies  true if conditional dependencies shall be supported,
- #                      blank otherwise
+ # - cond_dependencies  true if --conditional-dependencies was given, false if
+ #                      --no-conditional-dependencies was given, blank otherwise
  # - lgpl            yes or a number if library's license shall be LGPL,
  #                   blank otherwise
  # - makefile_name   from --makefile-name
  # - guessed_libtool true if the configure.ac file uses libtool, false otherwise
  # - macro_prefix    prefix of gl_EARLY, gl_INIT macros to use
  # - po_domain       prefix of i18n domain to use (without -gnulib suffix)
+ # - witness_c_macro  from --witness-c-macro
  # - vc_files        true if --vc-files was given, false if --no-vc-files was
  #                   given, blank otherwise
  # - autoconf_minversion  minimum supported autoconf version
@@@ -3856,9 -4087,11 +4087,11 @@@ func_import (
    cached_libname=
    cached_lgpl=
    cached_makefile_name=
+   cached_cond_dependencies=
    cached_libtool=
    cached_macro_prefix=
    cached_po_domain=
+   cached_witness_c_macro=
    cached_vc_files=
    cached_files=
    if test -f "$destdir"/$m4base/gnulib-cache.m4; then
        /gl_MAKEFILE_NAME(/ {
          s,^.*gl_MAKEFILE_NAME([[ ]*\([^]"$`\\)]*\).*$,cached_makefile_name="\1",p
        }
+       /gl_CONDITIONAL_DEPENDENCIES/ {
+         s,^.*$,cached_cond_dependencies=true,p
+       }
        /gl_LIBTOOL/ {
          s,^.*$,cached_libtool=true,p
        }
        /gl_PO_DOMAIN(/ {
          s,^.*gl_PO_DOMAIN([[ ]*\([^]"$`\\)]*\).*$,cached_po_domain="\1",p
        }
+       /gl_WITNESS_C_MACRO(/ {
+         s,^.*gl_WITNESS_C_MACRO([[ ]*\([^]"$`\\)]*\).*$,cached_witness_c_macro="\1",p
+       }
        /gl_VC_FILES(/ {
          s,^.*gl_VC_FILES([[ ]*\([^]"$`\\)]*\).*$,cached_vc_files="\1",p
        }'
      if test -z "$makefile_name"; then
        makefile_name="$cached_makefile_name"
      fi
+     # Use conditional dependencies if specified either way.
+     if test -z "$cond_dependencies"; then
+       cond_dependencies="$cached_cond_dependencies"
+     fi
      # Use libtool if specified either way, or if guessed.
      if test -z "$libtool"; then
        if test -n "$cached_m4base"; then
      if test -z "$po_domain"; then
        po_domain="$cached_po_domain"
      fi
+     # The witness_c_macro defaults to the cached one.
+     if test -z "$witness_c_macro"; then
+       witness_c_macro="$cached_witness_c_macro"
+     fi
      # The vc_files defaults to the cached one.
      if test -z "$vc_files"; then
        vc_files="$cached_vc_files"
      fi
+     # Ensure constraints.
+     if test "$cond_dependencies" = true && test -n "$inctests"; then
+       echo "gnulib-tool: option --conditional-dependencies is not supported with --with-tests" 1>&2
+       func_exit 1
+     fi
    fi
    # --without-*-tests options are not supported here.
    excl_cxx_tests=
    final_modules="$modules"
  
    # Determine main module list and tests-related module list separately.
-   # The main module list is the transitive closure of the specified modules,
-   # ignoring tests modules. Its lib/* sources go into $sourcebase/. If --lgpl
-   # is specified, it will consist only of LGPLed source.
-   # The tests-related module list is the transitive closure of the specified
-   # modules, including tests modules, minus the main module list excluding
-   # modules of applicability 'all'. Its lib/* sources (brought in through
-   # dependencies of *-tests modules) go into $testsbase/. It may contain GPLed
-   # source, even if --lgpl is specified.
-   # Determine main module list.
-   saved_inctests="$inctests"
-   inctests=""
-   modules="$specified_modules"
-   func_modules_transitive_closure
-   main_modules="$modules"
-   inctests="$saved_inctests"
-   if test $verbose -ge 1; then
-     echo "Main module list:"
-     echo "$main_modules" | sed -e 's/^/  /'
-   fi
-   # Determine tests-related module list.
-   echo "$final_modules" | LC_ALL=C sort -u > "$tmp"/final-modules
-   testsrelated_modules=`for module in $main_modules; do
-                           if test \`func_get_applicability $module\` = main; then
-                             echo $module
-                           fi
-                         done \
-                         | LC_ALL=C sort -u | LC_ALL=C join -v 2 - "$tmp"/final-modules`
-   if test $verbose -ge 1; then
-     echo "Tests-related module list:"
-     echo "$testsrelated_modules" | sed -e 's/^/  /'
-   fi
-   # Add the dummy module to the main module list if needed.
-   modules="$main_modules"
-   func_modules_add_dummy
-   main_modules="$modules"
+   func_modules_transitive_closure_separately
  
    # Determine whether a $testsbase/libtests.a is needed.
-   use_libtests=false
-   for module in $testsrelated_modules; do
-     func_verify_nontests_module
-     if test -n "$module"; then
-       all_files=`func_get_filelist $module`
-       # Test whether some file in $all_files lies in lib/.
-       for f in $all_files; do
-         case $f in
-           lib/*)
-             use_libtests=true
-             break 2
-             ;;
-         esac
-       done
-     fi
-   done
+   func_determine_use_libtests
  
-   # Add the dummy module to the tests-related module list if needed.
-   if $use_libtests; then
-     modules="$testsrelated_modules"
-     func_modules_add_dummy
-     testsrelated_modules="$modules"
-   fi
+   # Add the dummy module to the main module list or to the tests-related module
+   # list if needed.
+   func_modules_add_dummy_separately
  
    # If --lgpl, verify that the licenses of modules are compatible.
    if test -n "$lgpl"; then
@@@ -4333,26 -4532,7 +4532,7 @@@ s,^\(..................................
    fi
  
    # Determine the final file lists.
-   # They must be computed separately, because files in lib/* go into
-   # $sourcebase/ if they are in the main file list but into $testsbase/
-   # if they are in the tests-related file list. Furthermore lib/dummy.c
-   # can be in both.
-   # Determine final main file list.
-   modules="$main_modules"
-   func_modules_to_filelist
-   main_files="$files"
-   # Determine final tests-related file list.
-   modules="$testsrelated_modules"
-   func_modules_to_filelist
-   testsrelated_files=`echo "$files" | sed -e 's,^lib/,tests=lib/,'`
-   # Merge both file lists.
-   sed_remove_empty_lines='/^$/d'
-   files=`{ echo "$main_files"; echo "$testsrelated_files"; } | sed -e "$sed_remove_empty_lines" | LC_ALL=C sort -u`
-   if test $verbose -ge 0; then
-     echo "File list:"
-     sed_prettyprint_files='s,^tests=lib/\(.*\)$,lib/\1 -> tests/\1,'
-     echo "$files" | sed -e "$sed_prettyprint_files" -e 's/^/  /'
-   fi
+   func_modules_to_filelist_separately
  
    test -n "$files" \
      || func_fatal_error "refusing to do nothing"
    if test -n "$makefile_name"; then
      func_append actioncmd " --makefile-name=$makefile_name"
    fi
+   if test "$cond_dependencies" = true; then
+     func_append actioncmd " --conditional-dependencies"
+   else
+     func_append actioncmd " --no-conditional-dependencies"
+   fi
    if test "$libtool" = true; then
      func_append actioncmd " --libtool"
    else
    if test -n "$po_domain"; then
      func_append actioncmd " --po-domain=$po_domain"
    fi
+   if test -n "$witness_c_macro"; then
+     func_append actioncmd " --witness-c-macro=$witness_c_macro"
+   fi
    if test -n "$vc_files"; then
      if test "$vc_files" = true; then
        func_append actioncmd " --vc-files"
    fi
    func_append actioncmd " `echo $specified_modules`"
  
+   # Determine include_guard_prefix.
+   func_compute_include_guard_prefix
    # Default the makefile name to Makefile.am.
    if test -n "$makefile_name"; then
      makefile_am=$makefile_name
@@@ -4871,11 -5062,15 +5062,15 @@@ s,//*$,/,
        fi
      fi
      echo "gl_MAKEFILE_NAME([$makefile_name])"
+     if test "$cond_dependencies" = true; then
+       echo "gl_CONDITIONAL_DEPENDENCIES"
+     fi
      if test "$libtool" = true; then
        echo "gl_LIBTOOL"
      fi
      echo "gl_MACRO_PREFIX([$macro_prefix])"
      echo "gl_PO_DOMAIN([$po_domain])"
+     echo "gl_WITNESS_C_DOMAIN([$witness_c_macro])"
      if test -n "$vc_files"; then
        echo "gl_VC_FILES([$vc_files])"
      fi
      echo "  m4_pattern_allow([^gl_ES\$])dnl a valid locale name"
      echo "  m4_pattern_allow([^gl_LIBOBJS\$])dnl a variable"
      echo "  m4_pattern_allow([^gl_LTLIBOBJS\$])dnl a variable"
-     echo "  AC_REQUIRE([AC_PROG_RANLIB])"
+     echo "  AC_REQUIRE([gl_PROG_AR_RANLIB])"
      if test -n "$uses_subdirs"; then
        echo "  AC_REQUIRE([AM_PROG_CC_C_O])"
      fi
      echo "  gl_m4_base='$m4base'"
      func_emit_initmacro_start $macro_prefix
      echo "  gl_source_base='$sourcebase'"
+     if test -n "$witness_c_macro"; then
+       echo "  m4_pushdef([gl_MODULE_INDICATOR_CONDITION], [$witness_c_macro])"
+     fi
      func_emit_autoconf_snippets "$main_modules" func_verify_module true false true
+     if test -n "$witness_c_macro"; then
+       echo "  m4_popdef([gl_MODULE_INDICATOR_CONDITION])"
+     fi
      echo "  # End of code from modules"
      func_emit_initmacro_end $macro_prefix
      echo "  gltests_libdeps="
  #                          excluded, blank otherwise
  # - excl_unportable_tests  true if tests that fail on some platforms should be
  #                          excluded, blank otherwise
+ # - single_configure  true if a single configure file should be generated,
+ #                     false for a separate configure file for the tests
  # - avoidlist       list of modules to avoid
- # - cond_dependencies  true if conditional dependencies shall be supported,
- #                      blank otherwise
+ # - cond_dependencies  true if --conditional-dependencies was given, false if
+ #                      --no-conditional-dependencies was given, blank otherwise
  # - libtool         true if --libtool was given, false if --no-libtool was
  #                   given, blank otherwise
  # - symbolic        true if files should be symlinked, copied otherwise
@@@ -5354,6 -5557,7 +5557,7 @@@ func_create_testdir (
    testsbase=gltests
    macro_prefix=gl
    po_domain=
+   witness_c_macro=
    vc_files=
  
    # Determine final module list.
    if test $verbose -ge 0; then
      func_show_module_list
    fi
+   final_modules="$modules"
+   if $single_configure; then
+     # Determine main module list and tests-related module list separately.
+     func_modules_transitive_closure_separately
+   fi
+   if $single_configure; then
+     # Determine whether a $testsbase/libtests.a is needed.
+     func_determine_use_libtests
+   fi
  
    # Add the dummy module if needed.
-   func_modules_add_dummy
+   if $single_configure; then
+     func_modules_add_dummy_separately
+   else
+     func_modules_add_dummy
+   fi
  
    # Show banner notice of every module.
-   func_modules_notice
+   if $single_configure; then
+     modules="$main_modules"
+     func_modules_notice
+   else
+     func_modules_notice
+   fi
  
    # Determine final file list.
-   func_modules_to_filelist
-   if test $verbose -ge 0; then
-     echo "File list:"
-     echo "$files" | sed -e 's/^/  /'
+   if $single_configure; then
+     func_modules_to_filelist_separately
+   else
+     func_modules_to_filelist
+     if test $verbose -ge 0; then
+       echo "File list:"
+       echo "$files" | sed -e 's/^/  /'
+     fi
    fi
    # Add files for which the copy in gnulib is newer than the one that
    # "automake --add-missing --copy" would provide.
      s,^lib/,$rewritten$sourcebase/,
      s,^m4/,$rewritten$m4base/,
      s,^tests/,$rewritten$testsbase/,
+     s,^tests=lib/,$rewritten$testsbase/,
      s,^top/,$rewritten,
      s,^$rewritten,,"
  
      # constructs are executed in a subshell e.g. by Solaris 10 /bin/sh.
      exec 5<&0 < "$tmp"/files
      while read g f; do
+       case "$f" in
+         tests=lib/*) f=`echo "$f" | sed -e 's,^tests=lib/,lib/,'` ;;
+       esac
        func_lookup_file "$f"
        if test -n "$lookedup_tmp"; then
          cp -p "$lookedup_file" "$testdir/$g"
      exec 0<&5 5<&-
    }
  
+   # Determine include_guard_prefix.
+   func_compute_include_guard_prefix
    # Create Makefile.ams that are for testing.
    for_test=true
  
    # Create $sourcebase/Makefile.am.
    mkdir -p "$testdir/$sourcebase"
    destfile="$sourcebase/Makefile.am"
+   if $single_configure; then
+     modules="$main_modules"
+   fi
    func_emit_lib_Makefile_am > "$testdir/$sourcebase/Makefile.am"
    any_uses_subdirs="$uses_subdirs"
  
  
    if test -n "$inctests"; then
      test -d "$testdir/$testsbase" || mkdir "$testdir/$testsbase"
-     # Viewed from the $testsbase subdirectory, $auxdir is different.
-     saved_auxdir="$auxdir"
-     auxdir=`echo "$testsbase/" | sed -e 's%[^/][^/]*//*%../%g'`"$auxdir"
-     # Create $testsbase/Makefile.am.
-     use_libtests=false
-     destfile="$testsbase/Makefile.am"
-     func_emit_tests_Makefile_am "" > "$testdir/$testsbase/Makefile.am"
-     any_uses_subdirs="$any_uses_subdirs$uses_subdirs"
-     # Create $testsbase/configure.ac.
-     (echo "# Process this file with autoconf to produce a configure script."
-      echo "AC_INIT([dummy], [0])"
-      echo "AC_CONFIG_AUX_DIR([$auxdir])"
-      echo "AM_INIT_AUTOMAKE"
-      echo
-      echo "AC_CONFIG_HEADERS([config.h])"
-      echo
-      echo "AC_PROG_CC"
-      echo "AC_PROG_INSTALL"
-      echo "AC_PROG_MAKE_SET"
-      echo "AC_PROG_RANLIB"
-      echo
-      if test -n "$uses_subdirs"; then
-        echo "AM_PROG_CC_C_O"
+     if $single_configure; then
+       # Create $testsbase/Makefile.am.
+       destfile="$testsbase/Makefile.am"
+       modules="$testsrelated_modules"
+       func_emit_tests_Makefile_am "${macro_prefix}tests_WITNESS" > "$testdir/$testsbase/Makefile.am"
+     else
+       # Viewed from the $testsbase subdirectory, $auxdir is different.
+       saved_auxdir="$auxdir"
+       auxdir=`echo "$testsbase/" | sed -e 's%[^/][^/]*//*%../%g'`"$auxdir"
+       # Create $testsbase/Makefile.am.
+       use_libtests=false
+       destfile="$testsbase/Makefile.am"
+       func_emit_tests_Makefile_am "" > "$testdir/$testsbase/Makefile.am"
+       any_uses_subdirs="$any_uses_subdirs$uses_subdirs"
+       # Create $testsbase/configure.ac.
+       (echo "# Process this file with autoconf to produce a configure script."
+        echo "AC_INIT([dummy], [0])"
+        echo "AC_CONFIG_AUX_DIR([$auxdir])"
+        echo "AM_INIT_AUTOMAKE"
         echo
-      fi
-      for module in $modules; do
-        func_verify_module
-        if test -n "$module"; then
-          case $module in
-            gnumakefile | maintainer-makefile)
-              # These modules are meant to be used only in the top-level directory.
-              ;;
-            *)
-              func_get_autoconf_early_snippet "$module"
-              ;;
-          esac
+        echo "AC_CONFIG_HEADERS([config.h])"
+        echo
+        echo "AC_PROG_CC"
+        echo "AC_PROG_INSTALL"
+        echo "AC_PROG_MAKE_SET"
+        echo "gl_PROG_AR_RANLIB"
+        echo
+        if test -n "$uses_subdirs"; then
+          echo "AM_PROG_CC_C_O"
+          echo
         fi
-      done \
-        | sed -e '/^$/d;' -e 's/AC_REQUIRE(\[\([^()]*\)\])/\1/'
-      if test "$libtool" = true; then
-        echo "LT_INIT([win32-dll])"
-        echo "LT_LANG([C++])"
-        echo "AM_CONDITIONAL([GL_COND_LIBTOOL], [true])"
-        echo "gl_cond_libtool=true"
-      else
-        echo "AM_CONDITIONAL([GL_COND_LIBTOOL], [false])"
-        echo "gl_cond_libtool=false"
-        echo "gl_libdeps="
-        echo "gl_ltlibdeps="
-      fi
-      # 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:
-      #   error: AC_REQUIRE(gt_CSHARPCOMP): cannot be used outside of an AC_DEFUN'd macro
-      # but we want the AC_REQUIRE to have its normal meaning (provide one
-      # expansion of the required macro before the current point, and only one
-      # expansion total).
-      echo "AC_DEFUN([gl_INIT], ["
-      sed_replace_build_aux='
-        :a
-        /AC_CONFIG_FILES(.*:build-aux\/.*)/{
-          s|AC_CONFIG_FILES(\(.*\):build-aux/\(.*\))|AC_CONFIG_FILES(\1:'"$auxdir"'/\2)|
-          ba
-        }'
-      echo "gl_m4_base='../$m4base'"
-      func_emit_initmacro_start $macro_prefix
-      # 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'"
-      func_emit_autoconf_snippets "$modules" func_verify_nontests_module false false false
-      echo "gl_source_base='.'"
-      func_emit_autoconf_snippets "$modules" func_verify_tests_module false false false
-      func_emit_initmacro_end $macro_prefix
-      # _LIBDEPS and _LTLIBDEPS variables are not needed if this library is
-      # created using libtool, because libtool already handles the dependencies.
-      if test "$libtool" != true; then
-        libname_upper=`echo "$libname" | LC_ALL=C tr '[a-z]-' '[A-Z]_'`
-        echo "  ${libname_upper}_LIBDEPS=\"\$gl_libdeps\""
-        echo "  AC_SUBST([${libname_upper}_LIBDEPS])"
-        echo "  ${libname_upper}_LTLIBDEPS=\"\$gl_ltlibdeps\""
-        echo "  AC_SUBST([${libname_upper}_LTLIBDEPS])"
-      fi
-      echo "])"
-      func_emit_initmacro_done $macro_prefix $sourcebase # FIXME use $sourcebase or $testsbase?
-      echo
-      echo "gl_INIT"
-      echo
-      # Usually $testsbase/config.h will be a superset of config.h. Verify this
-      # by "merging" config.h into $testsbase/config.h; look out for gcc warnings.
-      echo "AH_TOP([#include \"../config.h\"])"
-      echo
-      echo "AC_CONFIG_FILES([Makefile])"
-      echo "AC_OUTPUT"
-     ) > "$testdir/$testsbase/configure.ac"
-     auxdir="$saved_auxdir"
+        for module in $modules; do
+          func_verify_module
+          if test -n "$module"; then
+            case $module in
+              gnumakefile | maintainer-makefile)
+                # These modules are meant to be used only in the top-level directory.
+                ;;
+              *)
+                func_get_autoconf_early_snippet "$module"
+                ;;
+            esac
+          fi
+        done \
+          | sed -e '/^$/d;' -e 's/AC_REQUIRE(\[\([^()]*\)\])/\1/'
+        if test "$libtool" = true; then
+          echo "LT_INIT([win32-dll])"
+          echo "LT_LANG([C++])"
+          echo "AM_CONDITIONAL([GL_COND_LIBTOOL], [true])"
+          echo "gl_cond_libtool=true"
+        else
+          echo "AM_CONDITIONAL([GL_COND_LIBTOOL], [false])"
+          echo "gl_cond_libtool=false"
+          echo "gl_libdeps="
+          echo "gl_ltlibdeps="
+        fi
+        # 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:
+        #   error: AC_REQUIRE(gt_CSHARPCOMP): cannot be used outside of an AC_DEFUN'd macro
+        # but we want the AC_REQUIRE to have its normal meaning (provide one
+        # expansion of the required macro before the current point, and only one
+        # expansion total).
+        echo "AC_DEFUN([gl_INIT], ["
+        sed_replace_build_aux='
+          :a
+          /AC_CONFIG_FILES(.*:build-aux\/.*)/{
+            s|AC_CONFIG_FILES(\(.*\):build-aux/\(.*\))|AC_CONFIG_FILES(\1:'"$auxdir"'/\2)|
+            ba
+          }'
+        echo "gl_m4_base='../$m4base'"
+        func_emit_initmacro_start $macro_prefix
+        # 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'"
+        func_emit_autoconf_snippets "$modules" func_verify_nontests_module false false false
+        echo "gl_source_base='.'"
+        func_emit_autoconf_snippets "$modules" func_verify_tests_module false false false
+        func_emit_initmacro_end $macro_prefix
+        # _LIBDEPS and _LTLIBDEPS variables are not needed if this library is
+        # created using libtool, because libtool already handles the dependencies.
+        if test "$libtool" != true; then
+          libname_upper=`echo "$libname" | LC_ALL=C tr '[a-z]-' '[A-Z]_'`
+          echo "  ${libname_upper}_LIBDEPS=\"\$gl_libdeps\""
+          echo "  AC_SUBST([${libname_upper}_LIBDEPS])"
+          echo "  ${libname_upper}_LTLIBDEPS=\"\$gl_ltlibdeps\""
+          echo "  AC_SUBST([${libname_upper}_LTLIBDEPS])"
+        fi
+        echo "])"
+        func_emit_initmacro_done $macro_prefix $sourcebase # FIXME use $sourcebase or $testsbase?
+        echo
+        echo "gl_INIT"
+        echo
+        # Usually $testsbase/config.h will be a superset of config.h. Verify this
+        # by "merging" config.h into $testsbase/config.h; look out for gcc warnings.
+        echo "AH_TOP([#include \"../config.h\"])"
+        echo
+        echo "AC_CONFIG_FILES([Makefile])"
+        echo "AC_OUTPUT"
+       ) > "$testdir/$testsbase/configure.ac"
+       auxdir="$saved_auxdir"
+       subdirs_with_configure_ac="$subdirs_with_configure_ac $testsbase"
+     fi
      func_append subdirs " $testsbase"
-     subdirs_with_configure_ac="$subdirs_with_configure_ac $testsbase"
    fi
  
    # Create Makefile.am.
     echo "m4_pattern_allow([^gl_LIBOBJS\$])dnl a variable"
     echo "m4_pattern_allow([^gl_LTLIBOBJS\$])dnl a variable"
     echo
-    echo "AC_PROG_RANLIB"
+    echo "gl_PROG_AR_RANLIB"
     echo
     if test -n "$any_uses_subdirs"; then
       echo "AM_PROG_CC_C_O"
       echo
     fi
-    for module in $modules; do
-      func_verify_nontests_module
+    for module in $final_modules; do
+      if $single_configure; then
+        func_verify_module
+      else
+        func_verify_nontests_module
+      fi
       if test -n "$module"; then
         func_get_autoconf_early_snippet "$module"
       fi
     echo "gl_m4_base='$m4base'"
     func_emit_initmacro_start $macro_prefix
     echo "gl_source_base='$sourcebase'"
-    func_emit_autoconf_snippets "$modules" func_verify_nontests_module true false false
+    if $single_configure; then
+      func_emit_autoconf_snippets "$main_modules" func_verify_module true false false
+    else
+      func_emit_autoconf_snippets "$modules" func_verify_nontests_module true false false
+    fi
     func_emit_initmacro_end $macro_prefix
+    if $single_configure; then
+      echo "  gltests_libdeps="
+      echo "  gltests_ltlibdeps="
+      func_emit_initmacro_start ${macro_prefix}tests
+      echo "  gl_source_base='$testsbase'"
+      # Define a tests witness macro.
+      echo "  ${macro_prefix}tests_WITNESS=IN_GNULIB_TESTS"
+      echo "  AC_SUBST([${macro_prefix}tests_WITNESS])"
+      echo "  gl_module_indicator_condition=\$${macro_prefix}tests_WITNESS"
+      echo "  m4_pushdef([gl_MODULE_INDICATOR_CONDITION], [\$gl_module_indicator_condition])"
+      func_emit_autoconf_snippets "$testsrelated_modules" func_verify_module true false false
+      echo "  m4_popdef([gl_MODULE_INDICATOR_CONDITION])"
+      func_emit_initmacro_end ${macro_prefix}tests
+    fi
     # _LIBDEPS and _LTLIBDEPS variables are not needed if this library is
     # created using libtool, because libtool already handles the dependencies.
     if test "$libtool" != true; then
       echo "  ${libname_upper}_LTLIBDEPS=\"\$gl_ltlibdeps\""
       echo "  AC_SUBST([${libname_upper}_LTLIBDEPS])"
     fi
+    if $single_configure; then
+      if $use_libtests; then
+        echo "  LIBTESTS_LIBDEPS=\"\$gltests_libdeps\""
+        echo "  AC_SUBST([LIBTESTS_LIBDEPS])"
+      fi
+    fi
     echo "])"
     func_emit_initmacro_done $macro_prefix $sourcebase
+    if $single_configure; then
+      func_emit_initmacro_done ${macro_prefix}tests $testsbase
+    fi
     echo
     echo "gl_INIT"
     echo
     func_execute_command ${AUTOHEADER} || func_exit 1
     func_execute_command ${AUTOMAKE} --add-missing --copy || func_exit 1
    ) || func_exit 1
-   if test -n "$inctests"; then
+   if test -n "$inctests" && ! $single_configure; then
      # Create autogenerated files.
      (cd "$testdir/$testsbase" || func_exit 1
       # Do not use "${AUTORECONF} --force --install", because it may invoke
@@@ -6068,7 -6344,8 +6344,8 @@@ s/\([.*$]\)/[\1]/g
                  #   inc_longrunning_tests, inc_privileged_tests,
                  #   inc_unportable_tests, inc_all_tests, avoidlist, sourcebase,
                  #   m4base, pobase, docbase, testsbase, inctests, libname, lgpl,
-                 #   makefile_name, libtool, macro_prefix, po_domain, vc_files
+                 #   makefile_name, libtool, macro_prefix, po_domain,
+                 #   witness_c_macro, vc_files
                  # don't propagate from one directory to another.
                  (func_import) || func_exit 1
                done