pthread: Determine $(LIB_PTHREAD) correctly on IRIX 6.5.
[gnulib.git] / gnulib-tool
index 4a2ec0e..3356326 100755 (executable)
@@ -259,6 +259,8 @@ Options for --import, --add/remove-import:
                             '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).
@@ -928,6 +930,7 @@ fi
 #                   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
@@ -970,6 +973,7 @@ fi
   libtool=
   macro_prefix=
   po_domain=
+  witness_c_macro=
   vc_files=
   do_changelog=:
   doit=:
@@ -1221,6 +1225,16 @@ fi
       --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 ;;
@@ -1303,7 +1317,7 @@ fi
        || 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
@@ -2082,24 +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
@@ -3010,6 +3026,24 @@ func_modules_to_filelist_separately ()
   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
@@ -3152,8 +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}
@@ -3215,7 +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@"
@@ -3303,14 +3341,25 @@ func_emit_lib_Makefile_am ()
       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 \
@@ -3458,10 +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}
@@ -3510,7 +3562,8 @@ func_emit_tests_Makefile_am ()
                 -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@"
@@ -3611,6 +3664,9 @@ func_emit_tests_Makefile_am ()
   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
@@ -3998,6 +4054,7 @@ func_emit_autoconf_snippets ()
 # - 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
@@ -4034,6 +4091,7 @@ func_import ()
   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
@@ -4118,6 +4176,9 @@ func_import ()
       /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
       }'
@@ -4307,6 +4368,10 @@ func_import ()
     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"
@@ -4706,6 +4771,9 @@ s,^\(.................................................[^ ]*\) *,
   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"
@@ -4715,6 +4783,9 @@ s,^\(.................................................[^ ]*\) *,
   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
@@ -4999,6 +5070,7 @@ s,//*$,/,'
     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
@@ -5054,7 +5126,7 @@ s,//*$,/,'
     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
@@ -5094,7 +5166,13 @@ s,//*$,/,'
     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="
@@ -5479,6 +5557,7 @@ func_create_testdir ()
   testsbase=gltests
   macro_prefix=gl
   po_domain=
+  witness_c_macro=
   vc_files=
 
   # Determine final module list.
@@ -5586,6 +5665,9 @@ func_create_testdir ()
     exec 0<&5 5<&-
   }
 
+  # Determine include_guard_prefix.
+  func_compute_include_guard_prefix
+
   # Create Makefile.ams that are for testing.
   for_test=true
 
@@ -5653,7 +5735,7 @@ func_create_testdir ()
        echo "AC_PROG_CC"
        echo "AC_PROG_INSTALL"
        echo "AC_PROG_MAKE_SET"
-       echo "AC_PROG_RANLIB"
+       echo "gl_PROG_AR_RANLIB"
        echo
        if test -n "$uses_subdirs"; then
          echo "AM_PROG_CC_C_O"
@@ -5730,10 +5812,9 @@ func_create_testdir ()
        echo "AC_OUTPUT"
       ) > "$testdir/$testsbase/configure.ac"
       auxdir="$saved_auxdir"
-      func_append subdirs " $testsbase"
       subdirs_with_configure_ac="$subdirs_with_configure_ac $testsbase"
     fi
-    subdirs="$subdirs $testsbase"
+    func_append subdirs " $testsbase"
   fi
 
   # Create Makefile.am.
@@ -5769,7 +5850,7 @@ func_create_testdir ()
    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"
@@ -6263,7 +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