X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=gnulib-tool;h=9375f97d44781584dba38c585e55eeb9365f09f2;hb=88418d5fd24c99aac393d3e2f564f6939e4e2fe3;hp=28d5b69ade620c9e085321f178684ccf2d634978;hpb=2ec275004253b6618ffc178aa32a67a6a75fa5fb;p=gnulib.git diff --git a/gnulib-tool b/gnulib-tool index 28d5b69ad..9375f97d4 100755 --- a/gnulib-tool +++ b/gnulib-tool @@ -1,6 +1,6 @@ #! /bin/sh # -# Copyright (C) 2002-2010 Free Software Foundation, Inc. +# Copyright (C) 2002-2011 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 @@ -163,6 +163,7 @@ Usage: gnulib-tool --list gnulib-tool --copy-file file [destination] Operation modes: + --list print the available module names --find find the modules which contain the specified file${bold_on} --import import the given modules into the current package @@ -199,6 +200,7 @@ Operation modes: --copy-file copy a file that is not part of any module General options: + --dir=DIRECTORY Specify the target directory. For --import, this specifies where your configure.ac can be found. Defaults to current @@ -210,10 +212,13 @@ General options: --verbose Increase verbosity. May be repeated. --quiet Decrease verbosity. May be repeated. -Options for --import, --update: +Options for --import, --add/remove-import, --update: + --dry-run Only print what would have been done. -Options for --import, --create-[mega]testdir, --[mega]test: +Options for --import, --add/remove-import, + --create-[mega]testdir, --[mega]test: + --with-tests Include unit tests for the included modules. --with-obsolete Include obsolete modules when they occur among the dependencies. By default, dependencies to obsolete @@ -233,7 +238,8 @@ Options for --import, --create-[mega]testdir, --[mega]test: --libtool Use libtool rules. --no-libtool Don't use libtool rules. -Options for --import: +Options for --import, --add/remove-import: + --lib=LIBRARY Specify the library name. Defaults to 'libgnu'. --source-base=DIRECTORY Directory relative to --dir where source code is @@ -248,7 +254,7 @@ Options for --import: Directory relative to --dir where unit tests are placed (default \"tests\"). --aux-dir=DIRECTORY Directory relative to --dir where auxiliary build - tools are placed (default \"build-aux\"). + tools are placed (default comes from configure.ac). --lgpl[=2|=3] Abort if modules aren't available under the LGPL. Also modify license template from GPL to LGPL. The version number of the LGPL can be specified; @@ -266,6 +272,7 @@ Options for --import: --no-changelog Don't update or create ChangeLog files. Options for --create-[mega]testdir, --[mega]test: + --without-c++-tests Exclude unit tests for C++ interoperability. --without-longrunning-tests Exclude unit tests that are long-runners. @@ -274,12 +281,15 @@ Options for --create-[mega]testdir, --[mega]test: --without-unportable-tests Exclude unit tests that fail on some platforms. -Options for --import, --update, --create-[mega]testdir, --[mega]test: +Options for --import, --add/remove-import, --update, + --create-[mega]testdir, --[mega]test: + -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. -Options for --import, --update: +Options for --import, --add/remove-import, --update: + -S, --more-symlinks Make symbolic links instead of copying files, and don't replace copyright notices. @@ -836,20 +846,24 @@ fi # that the top-level statement containing the test starts after the 'alias' # command. if test -z "$have_echo"; then -bsd_echo () + bsd_echo () { cat </dev/null + if (alias echo=bsd_echo) 2>/dev/null; then + alias echo=bsd_echo 2>/dev/null + fi fi if test -z "$have_echo" \ && echo '\t' | grep t > /dev/null; then have_echo=yes fi if test -z "$have_echo"; then - unalias echo 2>/dev/null + if (alias echo=bsd_echo) 2>/dev/null; then + unalias echo 2>/dev/null + fi fi # For Solaris /bin/sh and OSF/1 /bin/sh: respawn using /bin/ksh. if test -z "$have_echo" \ @@ -1603,11 +1617,11 @@ if $modcache; then # ${param//pattern/replacement} # as a shorthand for # `echo "$param" | sed -e "s/pattern/replacement/g"`. - # Note: The 'eval' above silences stderr output in dash. - func_cache_var () + # Note: The 'eval' is necessary for dash and NetBSD /bin/sh. + eval 'func_cache_var () { cachevar=c_${1//[!a-zA-Z0-9_]/_} - } + }' else func_cache_var () { @@ -1792,7 +1806,7 @@ if $modcache; then func_cache_lookup_module () { if $have_associative; then - cached=${modcache_cached[$1]} + eval 'cached=${modcache_cached[$1]}' else func_cache_var "$1" eval "cached=\"\$${cachevar}_cached\"" @@ -1801,7 +1815,7 @@ if $modcache; then # Not found in cache. Look it up on the file system. func_lookup_file "modules/$1" if $have_associative; then - modcache_cached[$1]=yes + eval 'modcache_cached[$1]=yes' else eval "${cachevar}_cached=\"\$1\"" fi @@ -1836,8 +1850,8 @@ func_get_description () func_cache_lookup_module "$1" # Output the field's value, including the final newline (if any). if $have_associative; then - if test -n "${modcache_description[$1]+set}"; then - echo "${modcache_description[$1]}" + if eval 'test -n "${modcache_description[$1]+set}"'; then + eval 'echo "${modcache_description[$1]}"' fi else eval "field_set=\"\$${cachevar}_description_set\"" @@ -1862,8 +1876,8 @@ func_get_comment () func_cache_lookup_module "$1" # Output the field's value, including the final newline (if any). if $have_associative; then - if test -n "${modcache_comment[$1]+set}"; then - echo "${modcache_comment[$1]}" + if eval 'test -n "${modcache_comment[$1]+set}"'; then + eval 'echo "${modcache_comment[$1]}"' fi else eval "field_set=\"\$${cachevar}_comment_set\"" @@ -1888,8 +1902,8 @@ func_get_status () func_cache_lookup_module "$1" # Output the field's value, including the final newline (if any). if $have_associative; then - if test -n "${modcache_status[$1]+set}"; then - echo "${modcache_status[$1]}" + if eval 'test -n "${modcache_status[$1]+set}"'; then + eval 'echo "${modcache_status[$1]}"' fi else eval "field_set=\"\$${cachevar}_status_set\"" @@ -1914,8 +1928,8 @@ func_get_notice () func_cache_lookup_module "$1" # Output the field's value, including the final newline (if any). if $have_associative; then - if test -n "${modcache_notice[$1]+set}"; then - echo "${modcache_notice[$1]}" + if eval 'test -n "${modcache_notice[$1]+set}"'; then + eval 'echo "${modcache_notice[$1]}"' fi else eval "field_set=\"\$${cachevar}_notice_set\"" @@ -1941,7 +1955,7 @@ func_get_applicability () func_cache_lookup_module "$1" # Get the field's value, without the final newline. if $have_associative; then - my_applicability="${modcache_applicability[$1]}" + eval 'my_applicability="${modcache_applicability[$1]}"' else eval "my_applicability=\"\$${cachevar}_applicability\"" fi @@ -1970,8 +1984,8 @@ func_get_filelist () func_cache_lookup_module "$1" # Output the field's value, including the final newline (if any). if $have_associative; then - if test -n "${modcache_files[$1]+set}"; then - echo "${modcache_files[$1]}" + if eval 'test -n "${modcache_files[$1]+set}"'; then + eval 'echo "${modcache_files[$1]}"' fi else eval "field_set=\"\$${cachevar}_files_set\"" @@ -2061,8 +2075,8 @@ func_get_dependencies () func_cache_lookup_module "$1" # Output the field's value, including the final newline (if any). if $have_associative; then - if test -n "${modcache_dependson[$1]+set}"; then - echo "${modcache_dependson[$1]}" + if eval 'test -n "${modcache_dependson[$1]+set}"'; then + eval 'echo "${modcache_dependson[$1]}"' fi else eval "field_set=\"\$${cachevar}_dependson_set\"" @@ -2087,8 +2101,8 @@ func_get_autoconf_early_snippet () func_cache_lookup_module "$1" # Output the field's value, including the final newline (if any). if $have_associative; then - if test -n "${modcache_configureac_early[$1]+set}"; then - echo "${modcache_configureac_early[$1]}" + if eval 'test -n "${modcache_configureac_early[$1]+set}"'; then + eval 'echo "${modcache_configureac_early[$1]}"' fi else eval "field_set=\"\$${cachevar}_configureac_early_set\"" @@ -2113,8 +2127,8 @@ func_get_autoconf_snippet () func_cache_lookup_module "$1" # Output the field's value, including the final newline (if any). if $have_associative; then - if test -n "${modcache_configureac[$1]+set}"; then - echo "${modcache_configureac[$1]}" + if eval 'test -n "${modcache_configureac[$1]+set}"'; then + eval 'echo "${modcache_configureac[$1]}"' fi else eval "field_set=\"\$${cachevar}_configureac_set\"" @@ -2139,8 +2153,8 @@ func_get_automake_snippet () func_cache_lookup_module "$1" # Output the field's value, including the final newline (if any). if $have_associative; then - if test -n "${modcache_makefile[$1]+set}"; then - echo "${modcache_makefile[$1]}" + if eval 'test -n "${modcache_makefile[$1]+set}"'; then + eval 'echo "${modcache_makefile[$1]}"' fi else eval "field_set=\"\$${cachevar}_makefile_set\"" @@ -2177,8 +2191,8 @@ func_get_automake_snippet () sed -n -e "/^Makefile\.am$sed_extract_prog" < "$lookedup_file" else if $have_associative; then - if test -n "${modcache_makefile[$1]+set}"; then - echo "${modcache_makefile[$1]}" + if eval 'test -n "${modcache_makefile[$1]+set}"'; then + eval 'echo "${modcache_makefile[$1]}"' fi else eval 'field_set="$'"${cachevar}"'_makefile_set"' @@ -2214,6 +2228,7 @@ func_get_automake_snippet () # automake will generate a useless dependency; this is harmless. case "$1" in relocatable-prog-wrapper) ;; + pt_chown) ;; *) func_filter_filelist extra_files "$nl" "$extra_files" '' '.c' '' '' if test -n "$extra_files"; then @@ -2254,8 +2269,8 @@ func_get_include_directive () func_cache_lookup_module "$1" # Output the field's value, including the final newline (if any). if $have_associative; then - if test -n "${modcache_include[$1]+set}"; then - echo "${modcache_include[$1]}" + if eval 'test -n "${modcache_include[$1]+set}"'; then + eval 'echo "${modcache_include[$1]}"' fi else eval "field_set=\"\$${cachevar}_include_set\"" @@ -2281,8 +2296,8 @@ func_get_link_directive () func_cache_lookup_module "$1" # Output the field's value, including the final newline (if any). if $have_associative; then - if test -n "${modcache_link[$1]+set}"; then - echo "${modcache_link[$1]}" + if eval 'test -n "${modcache_link[$1]+set}"'; then + eval 'echo "${modcache_link[$1]}"' fi else eval "field_set=\"\$${cachevar}_link_set\"" @@ -2308,8 +2323,8 @@ func_get_license () func_cache_lookup_module "$1" # Output the field's value, including the final newline (if any). if $have_associative; then - if test -n "${modcache_license[$1]+set}"; then - echo "${modcache_license[$1]}" + if eval 'test -n "${modcache_license[$1]+set}"'; then + eval 'echo "${modcache_license[$1]}"' fi else eval "field_set=\"\$${cachevar}_license_set\"" @@ -2337,8 +2352,8 @@ func_get_maintainer () func_cache_lookup_module "$1" # Output the field's value, including the final newline (if any). if $have_associative; then - if test -n "${modcache_maintainer[$1]+set}"; then - echo "${modcache_maintainer[$1]}" + if eval 'test -n "${modcache_maintainer[$1]+set}"'; then + eval 'echo "${modcache_maintainer[$1]}"' fi else eval "field_set=\"\$${cachevar}_maintainer_set\"" @@ -2916,6 +2931,18 @@ func_emit_lib_Makefile_am () echo "EXTRA_${libname}_${libext}_SOURCES =" if test "$libtool" = true; then echo "${libname}_${libext}_LDFLAGS = \$(AM_LDFLAGS)" + echo "${libname}_${libext}_LDFLAGS += -no-undefined" + # Synthesize an ${libname}_${libext}_LDFLAGS augmentation by combining + # the link dependencies of all modules. + for module in $modules; do + func_verify_nontests_module + if test -n "$module"; then + func_get_link_directive "$module" + fi + done \ + | LC_ALL=C sed -e '/^$/d' -e 's/ when linking with libtool.*//' \ + | LC_ALL=C sort -u \ + | LC_ALL=C sed -e 's/^/'"${libname}_${libext}"'_LDFLAGS += /' fi echo if test -n "$pobase"; then @@ -3563,10 +3590,10 @@ func_import () # Use an associative array, for O(N) worst-case run time. declare -A to_remove for m in $1; do - to_remove[$m]=yes + eval 'to_remove[$m]=yes' done for module in $cached_specified_modules; do - if test -z "${to_remove[$module]}"; then + if eval 'test -z "${to_remove[$module]}"'; then func_append specified_modules "$module " fi done @@ -4557,7 +4584,7 @@ s,//*$,/,' # _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_'` + 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\"" @@ -4937,6 +4964,11 @@ func_create_testdir () echo "File list:" echo "$files" | sed -e 's/^/ /' fi + # Add files for which the copy in gnulib is newer than the one that + # "automake --add-missing --copy" would provide. + files="$files build-aux/config.guess" + files="$files build-aux/config.sub" + files=`for f in $files; do echo $f; done | LC_ALL=C sort -u` rewritten='%REWRITTEN%' sed_rewrite_files="\ @@ -5109,6 +5141,12 @@ func_create_testdir () *) func_get_autoconf_snippet "$module" \ | sed -e "$sed_replace_build_aux" + if test "$module" = 'alloca' && test "$libtool" = true; then + echo 'changequote(,)dnl' + echo 'LTALLOCA=`echo "$ALLOCA" | sed -e '"'"'s/\.[^.]* /.lo /g;s/\.[^.]*$/.lo/'"'"'`' + echo 'changequote([, ])dnl' + echo 'AC_SUBST([LTALLOCA])' + fi ;; esac fi @@ -5125,7 +5163,7 @@ func_create_testdir () # _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_'` + 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\"" @@ -5231,13 +5269,19 @@ func_create_testdir () if test -n "$module"; then func_get_autoconf_snippet "$module" \ | sed -e "$sed_replace_build_aux" + if test "$module" = 'alloca' && test "$libtool" = true; then + echo 'changequote(,)dnl' + echo 'LTALLOCA=`echo "$ALLOCA" | sed -e '"'"'s/\.[^.]* /.lo /g;s/\.[^.]*$/.lo/'"'"'`' + echo 'changequote([, ])dnl' + echo 'AC_SUBST([LTALLOCA])' + fi fi done 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_'` + 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\"" @@ -5310,7 +5354,7 @@ func_create_testdir () ) || func_exit 1 fi # Need to run configure and make once, to create built files that are to be - # distributed (such as getdate.c). + # distributed (such as parse-datetime.c). sed_remove_make_variables='s,[$]([A-Za-z0-9_]*),,g' # Extract the value of "CLEANFILES += ..." and "MOSTLYCLEANFILES += ...". cleaned_files=`sed -e "$sed_remove_backslash_newline" < "$testdir/$sourcebase/Makefile.am" \