#! /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
Usage: gnulib-tool --list
gnulib-tool --find filename
gnulib-tool --import [module1 ... moduleN]
+ gnulib-tool --add-import [module1 ... moduleN]
+ gnulib-tool --remove-import [module1 ... moduleN]
gnulib-tool --update
gnulib-tool --create-testdir --dir=directory [module1 ... moduleN]
gnulib-tool --create-megatestdir --dir=directory [module1 ... moduleN]
gnulib-tool --copy-file file [destination]
Operation modes:
+
--list print the available module names
--find find the modules which contain the specified file
- --import import the given modules into the current package;
+ --import import the given modules into the current package
+ --add-import augment the list of imports from gnulib into the
+ current package, by adding the given modules;
if no modules are specified, update the current
package from the current gnulib
+ --remove-import reduce the list of imports from gnulib into the
+ current package, by removing the given modules
--update update the current package, restore files omitted
- from CVS
+ from version control
--create-testdir create a scratch package with the given modules
--create-megatestdir create a mega scratch package with the given modules
one by one and all together
--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
--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
--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
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;
--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.
--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.
# explicit canonicalization command when $PATH contains no empty fields.
self_abspathname=
if test "${PATH_SEPARATOR+set}" != set; then
- func_tmpdir
- { echo "#! /bin/sh"; echo "exit 0"; } > "$tmp"/conf.sh
- chmod +x "$tmp"/conf.sh
- if (PATH="/nonexistent;$tmp"; conf.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
- else
- PATH_SEPARATOR=:
- fi
- rm -rf "$tmp"
+ # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which
+ # contains only /bin. Note that ksh looks also at the FPATH variable,
+ # so we have to set that as well for the test.
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+ || PATH_SEPARATOR=';'
+ }
fi
if test "$PATH_SEPARATOR" = ";"; then
# On Windows, programs are searched in "." before $PATH.
# that the top-level statement containing the test starts after the 'alias'
# command.
if test -z "$have_echo"; then
-bsd_echo ()
+ bsd_echo ()
{
cat <<EOF
$*
EOF
}
-alias echo=bsd_echo 2>/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" \
# Command-line option processing.
# Removes the OPTIONS from the arguments. Sets the variables:
-# - mode list or import or create-testdir or create-megatestdir
+# - mode list or import or add-import or remove-import or update
+# or create-testdir or create-megatestdir
# - destdir from --dir
# - local_gnulib_dir from --local-dir
# - modcache true or false, from --cache-modules/--no-cache-modules
--import | --impor | --impo | --imp | --im | --i )
mode=import
shift ;;
+ --add-import | --add-impor | --add-impo | --add-imp | --add-im | --add-i | --add- | --add | --ad )
+ mode=add-import
+ shift ;;
+ --remove-import | --remove-impor | --remove-impo | --remove-imp | --remove-im | --remove-i | --remove- | --remove | --remov | --remo | --rem | --re | --r )
+ mode=remove-import
+ shift ;;
--update | --updat | --upda | --upd | --up | --u )
mode=update
shift ;;
esac
done
- if test "$mode" = import; then
+ 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
- echo "gnulib-tool: invalid options for 'import' mode" 1>&2
+ echo "gnulib-tool: invalid options for '$mode' mode" 1>&2
echo "Try 'gnulib-tool --help' for more information." 1>&2
func_exit 1
fi
fi
+ # This code helps migrating from --import to --add-import or --update. It can
+ # be removed on 2012-01-01.
+ if test "$mode" = import && test $# = 0; then
+ echo "gnulib-tool: cowardly refusing to erase the module list." 1>&2
+ echo "The meaning of the option '--import' has changed." 1>&2
+ echo "See the documentation at" 1>&2
+ echo "<http://www.gnu.org/software/gnulib/manual/html_node/Modified-imports.html>." 1>&2
+ echo "For updating to a newer version of gnulib, use" 1>&2
+ echo " gnulib-tool --add-import" 1>&2
+ echo "For restoring files that were omitted from version control, use" 1>&2
+ echo " gnulib-tool --update" 1>&2
+ func_exit 1
+ fi
if test "$mode" = update; then
if test $# != 0; then
echo "gnulib-tool: too many arguments in 'update' mode" 1>&2
DEFAULT_AUTOCONF_MINVERSION="2.59"
autoconf_minversion=
configure_ac=
- if { test "$mode" = import || test "$mode" = update; } && test -n "$destdir"; then
+ if case "$mode" in import | add-import | remove-import | update) true;; *) false;; esac \
+ && test -n "$destdir"; then
if test -f "$destdir"/configure.ac; then
configure_ac="$destdir/configure.ac"
else
fi
if test -n "$configure_ac"; then
# Use sed, not autoconf --trace, to look for the AC_PREREQ invocation,
- # because when some m4 files are omitted from a CVS repository,
+ # because when some m4 files are omitted from a version control repository,
# "autoconf --trace=AC_PREREQ" fails with an error message like this:
# m4: aclocal.m4:851: Cannot open m4/absolute-header.m4: No such file or directory
# autom4te: m4 failed with exit status: 1
done
signal=0
+# Note: The 'eval' silences stderr output in dash.
+if (declare -A x && { x[f/2]='foo'; x[f/3]='bar'; eval test '${x[f/2]}' = foo; }) 2>/dev/null; then
+ # Zsh 4 and Bash 4 have associative arrays.
+ have_associative=true
+else
+ # For other shells, use 'eval' with computed shell variable names.
+ have_associative=false
+fi
+
# func_lookup_file file
# looks up a file in $local_gnulib_dir or $gnulib_dir, or combines it through
# 'patch'.
if $modcache; then
- # Note: The 'eval' silences stderr output in dash.
- if (declare -A x && { x[f/2]='foo'; x[f/3]='bar'; eval test '${x[f/2]}' = foo; }) 2>/dev/null; then
- # Zsh 4 and Bash 4 have associative arrays.
- have_associative=true
- else
- # For other shells, use 'eval' with computed shell variable names.
- have_associative=false
- fi
-
if $have_associative; then
# Declare the associative arrays.
# ${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 ()
{
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\""
# 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
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\""
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\""
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\""
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\""
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
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\""
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\""
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\""
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\""
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\""
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"'
# 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
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\""
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\""
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\""
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\""
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
# func_import modules
# Uses also the variables
+# - mode import or add-import or remove-import or update
# - destdir target directory
# - local_gnulib_dir from --local-dir
# - modcache true or false, from --cache-modules/--no-cache-modules
# - verbose integer, default 0, inc/decremented by --verbose/--quiet
# - libname library name
+# - supplied_libname true if --lib was given, blank otherwise
# - sourcebase directory relative to destdir where to place source code
# - m4base directory relative to destdir where to place *.m4 macros
# - pobase directory relative to destdir where to place *.po files
func_import ()
{
# Get the cached settings.
+ # In 'import' mode, we read them only for the purpose of knowing the old
+ # installed file list, and don't use them as defaults.
cached_local_gnulib_dir=
cached_specified_modules=
cached_incobsolete=
fi
fi
- # Merge the cached settings with the specified ones.
- # The m4base must be the same as expected from the pathname.
- if test -n "$cached_m4base" && test "$cached_m4base" != "$m4base"; then
- func_fatal_error "$m4base/gnulib-cache.m4 is expected to contain gl_M4_BASE([$m4base])"
- fi
- # The local_gnulib_dir defaults to the cached one. Recall that the cached one
- # is relative to $destdir, whereas the one we use is relative to . or absolute.
- if test -z "$local_gnulib_dir"; then
- if test -n "$cached_local_gnulib_dir"; then
- case "$destdir" in
- /*)
- local_gnulib_dir="$destdir/$cached_local_gnulib_dir" ;;
- *)
- case "$cached_local_gnulib_dir" in
- /*)
- local_gnulib_dir="$destdir/$cached_local_gnulib_dir" ;;
- *)
- func_relconcat "$destdir" "$cached_local_gnulib_dir"
- local_gnulib_dir="$relconcat" ;;
- esac ;;
- esac
+ if test "$mode" = import; then
+ # In 'import' mode, the new set of specified modules overrides the cached
+ # set of modules. Ignore the cached settings.
+ specified_modules="$1"
+ else
+ # Merge the cached settings with the specified ones.
+ # The m4base must be the same as expected from the pathname.
+ if test -n "$cached_m4base" && test "$cached_m4base" != "$m4base"; then
+ func_fatal_error "$m4base/gnulib-cache.m4 is expected to contain gl_M4_BASE([$m4base])"
fi
- fi
- # Append the cached and the specified module names. So that
- # "gnulib-tool --import foo" means to add the module foo.
- specified_modules="$cached_specified_modules $1"
- # Included obsolete modules among the dependencies if specified either way.
- if test -z "$incobsolete"; then
- incobsolete="$cached_incobsolete"
- fi
- # Included special kinds of tests modules among the dependencies if specified
- # either way.
- if test -z "$inc_cxx_tests"; then
- inc_cxx_tests="$cached_inc_cxx_tests"
- fi
- if test -z "$inc_longrunning_tests"; then
- inc_longrunning_tests="$cached_inc_longrunning_tests"
- fi
- if test -z "$inc_privileged_tests"; then
- inc_privileged_tests="$cached_inc_privileged_tests"
- fi
- if test -z "$inc_unportable_tests"; then
- inc_unportable_tests="$cached_inc_unportable_tests"
- fi
- if test -z "$inc_all_tests"; then
- inc_all_tests="$cached_inc_all_tests"
- fi
- # --without-*-tests options are not supported here.
- excl_cxx_tests=
- excl_longrunning_tests=
- excl_privileged_tests=
- excl_unportable_tests=
- # Append the cached and the specified avoidlist. This is probably better
- # than dropping the cached one when --avoid is specified at least once.
- avoidlist=`for m in $cached_avoidlist $avoidlist; do echo $m; done | LC_ALL=C sort -u`
- avoidlist=`echo $avoidlist`
-
- # The sourcebase defaults to the cached one.
- if test -z "$sourcebase"; then
- sourcebase="$cached_sourcebase"
+ # The local_gnulib_dir defaults to the cached one. Recall that the cached one
+ # is relative to $destdir, whereas the one we use is relative to . or absolute.
+ if test -z "$local_gnulib_dir"; then
+ if test -n "$cached_local_gnulib_dir"; then
+ case "$destdir" in
+ /*)
+ local_gnulib_dir="$destdir/$cached_local_gnulib_dir" ;;
+ *)
+ case "$cached_local_gnulib_dir" in
+ /*)
+ local_gnulib_dir="$destdir/$cached_local_gnulib_dir" ;;
+ *)
+ func_relconcat "$destdir" "$cached_local_gnulib_dir"
+ local_gnulib_dir="$relconcat" ;;
+ esac ;;
+ esac
+ fi
+ fi
+ case $mode in
+ add-import)
+ # Append the cached and the specified module names. So that
+ # "gnulib-tool --add-import foo" means to add the module foo.
+ specified_modules="$cached_specified_modules $1"
+ ;;
+ remove-import)
+ # Take the cached module names, minus the specified module names.
+ specified_modules=
+ if $have_associative; then
+ # Use an associative array, for O(N) worst-case run time.
+ declare -A to_remove
+ for m in $1; do
+ eval 'to_remove[$m]=yes'
+ done
+ for module in $cached_specified_modules; do
+ if eval 'test -z "${to_remove[$module]}"'; then
+ func_append specified_modules "$module "
+ fi
+ done
+ else
+ # This loop has O(N²) worst-case run time.
+ for module in $cached_specified_modules; do
+ to_remove=
+ for m in $1; do
+ if test "$m" = "$module"; then
+ to_remove=yes
+ break
+ fi
+ done
+ if test -z "$to_remove"; then
+ func_append specified_modules "$module "
+ fi
+ done
+ fi
+ ;;
+ update)
+ # Take the cached module names. There are no specified module names.
+ specified_modules="$cached_specified_modules"
+ ;;
+ esac
+ # Included obsolete modules among the dependencies if specified either way.
+ if test -z "$incobsolete"; then
+ incobsolete="$cached_incobsolete"
+ fi
+ # Included special kinds of tests modules among the dependencies if specified
+ # either way.
+ if test -z "$inc_cxx_tests"; then
+ inc_cxx_tests="$cached_inc_cxx_tests"
+ fi
+ if test -z "$inc_longrunning_tests"; then
+ inc_longrunning_tests="$cached_inc_longrunning_tests"
+ fi
+ if test -z "$inc_privileged_tests"; then
+ inc_privileged_tests="$cached_inc_privileged_tests"
+ fi
+ if test -z "$inc_unportable_tests"; then
+ inc_unportable_tests="$cached_inc_unportable_tests"
+ fi
+ if test -z "$inc_all_tests"; then
+ inc_all_tests="$cached_inc_all_tests"
+ fi
+ # Append the cached and the specified avoidlist. This is probably better
+ # than dropping the cached one when --avoid is specified at least once.
+ avoidlist=`for m in $cached_avoidlist $avoidlist; do echo $m; done | LC_ALL=C sort -u`
+ avoidlist=`echo $avoidlist`
+
+ # The sourcebase defaults to the cached one.
if test -z "$sourcebase"; then
- func_fatal_error "missing --source-base option"
+ sourcebase="$cached_sourcebase"
+ if test -z "$sourcebase"; then
+ func_fatal_error "missing --source-base option"
+ fi
fi
- fi
- # The pobase defaults to the cached one.
- if test -z "$pobase"; then
- pobase="$cached_pobase"
- fi
- # The docbase defaults to the cached one.
- if test -z "$docbase"; then
- docbase="$cached_docbase"
+ # The pobase defaults to the cached one.
+ if test -z "$pobase"; then
+ pobase="$cached_pobase"
+ fi
+ # The docbase defaults to the cached one.
if test -z "$docbase"; then
- func_fatal_error "missing --doc-base option. --doc-base has been introduced on 2006-07-11; if your last invocation of 'gnulib-tool --import' is before that date, you need to run 'gnulib-tool --import' once, with a --doc-base option."
+ docbase="$cached_docbase"
+ if test -z "$docbase"; then
+ func_fatal_error "missing --doc-base option. --doc-base has been introduced on 2006-07-11; if your last invocation of 'gnulib-tool --import' is before that date, you need to run 'gnulib-tool --import' once, with a --doc-base option."
+ fi
fi
- fi
- # The testsbase defaults to the cached one.
- if test -z "$testsbase"; then
- testsbase="$cached_testsbase"
+ # The testsbase defaults to the cached one.
if test -z "$testsbase"; then
- func_fatal_error "missing --tests-base option"
+ testsbase="$cached_testsbase"
+ if test -z "$testsbase"; then
+ func_fatal_error "missing --tests-base option"
+ fi
fi
- fi
- # Require the tests if specified either way.
- if test -z "$inctests"; then
- inctests="$cached_inctests"
- fi
- # The libname defaults to the cached one.
- if test -z "$supplied_libname"; then
- libname="$cached_libname"
- if test -z "$libname"; then
- func_fatal_error "missing --lib option"
+ # Require the tests if specified either way.
+ if test -z "$inctests"; then
+ inctests="$cached_inctests"
fi
- fi
- # Require LGPL if specified either way.
- if test -z "$lgpl"; then
- lgpl="$cached_lgpl"
- fi
- # The makefile_name defaults to the cached one.
- if test -z "$makefile_name"; then
- makefile_name="$cached_makefile_name"
- fi
- # Use libtool if specified either way, or if guessed.
- if test -z "$libtool"; then
- if test -n "$cached_m4base"; then
- libtool="$cached_libtool"
- else
- libtool="$guessed_libtool"
+ # The libname defaults to the cached one.
+ if test -z "$supplied_libname"; then
+ libname="$cached_libname"
+ if test -z "$libname"; then
+ func_fatal_error "missing --lib option"
+ fi
fi
- fi
- # The macro_prefix defaults to the cached one.
- if test -z "$macro_prefix"; then
- macro_prefix="$cached_macro_prefix"
+ # Require LGPL if specified either way.
+ if test -z "$lgpl"; then
+ lgpl="$cached_lgpl"
+ fi
+ # The makefile_name defaults to the cached one.
+ if test -z "$makefile_name"; then
+ makefile_name="$cached_makefile_name"
+ fi
+ # Use libtool if specified either way, or if guessed.
+ if test -z "$libtool"; then
+ if test -n "$cached_m4base"; then
+ libtool="$cached_libtool"
+ else
+ libtool="$guessed_libtool"
+ fi
+ fi
+ # The macro_prefix defaults to the cached one.
if test -z "$macro_prefix"; then
- func_fatal_error "missing --macro-prefix option"
+ macro_prefix="$cached_macro_prefix"
+ if test -z "$macro_prefix"; then
+ func_fatal_error "missing --macro-prefix option"
+ fi
+ fi
+ # The po_domain defaults to the cached one.
+ if test -z "$po_domain"; then
+ po_domain="$cached_po_domain"
+ fi
+ # The vc_files defaults to the cached one.
+ if test -z "$vc_files"; then
+ vc_files="$cached_vc_files"
fi
fi
- # The po_domain defaults to the cached one.
- if test -z "$po_domain"; then
- po_domain="$cached_po_domain"
- fi
- # The vc_files defaults to the cached one.
- if test -z "$vc_files"; then
- vc_files="$cached_vc_files"
- fi
+ # --without-*-tests options are not supported here.
+ excl_cxx_tests=
+ excl_longrunning_tests=
+ excl_privileged_tests=
+ excl_unportable_tests=
# Canonicalize the list of specified modules.
specified_modules=`for m in $specified_modules; do echo $m; done | LC_ALL=C sort -u`
yes | 3)
sed_transform_main_lib_file=$sed_transform_main_lib_file'
s/GNU General/GNU Lesser General/g
+ s/General Public License/Lesser General Public License/g
+ s/Lesser Lesser General Public License/Lesser General Public License/g
'
;;
2)
sed_transform_main_lib_file=$sed_transform_main_lib_file'
s/GNU General/GNU Lesser General/g
+ s/General Public License/Lesser General Public License/g
+ s/Lesser Lesser General Public License/Lesser General Public License/g
+
s/version [23]\([ ,]\)/version 2.1\1/g
'
;;
# Update license.
sed_transform_main_lib_file=$sed_transform_main_lib_file'
s/GNU Lesser General/GNU General/g
+ s/Lesser General Public License/General Public License/g
+
s/GNU Library General/GNU General/g
+ s/Library General Public License/General Public License/g
+
s/version 2\(.1\)\{0,1\}\([ ,]\)/version 3\2/g
'
fi
# Update license.
sed_transform_build_aux_file=$sed_transform_build_aux_file'
s/GNU Lesser General/GNU General/g
+ s/Lesser General Public License/General Public License/g
+
s/GNU Library General/GNU General/g
+ s/Library General Public License/General Public License/g
+
s/version 2\(.1\)\{0,1\}\([ ,]\)/version 3\2/g
'
fi
# Update license.
sed_transform_testsrelated_lib_file=$sed_transform_testsrelated_lib_file'
s/GNU Lesser General/GNU General/g
+ s/Lesser General Public License/General Public License/g
+
s/GNU Library General/GNU General/g
+ s/Library General Public License/General Public License/g
+
s/version 2\(.1\)\{0,1\}\([ ,]\)/version 3\2/g
'
fi
else
# Install the file.
# Don't protest if the file should be there but isn't: it happens
- # frequently that developers don't put autogenerated files into CVS.
+ # frequently that developers don't put autogenerated files under version control.
func_add_file
func_append added_files "$g$nl"
fi
echo "#"
echo "# This file represents the specification of how gnulib-tool is used."
echo "# It acts as a cache: It is written and read by gnulib-tool."
- echo "# In projects using CVS, this file is meant to be stored in CVS,"
- echo "# like the configure.ac and various Makefile.am files."
+ echo "# In projects that use version control, this file is meant to be put under"
+ echo "# version control, like the configure.ac and various Makefile.am files."
echo
echo
echo "# Specification in the form of a command-line invocation:"
echo "# This file represents the compiled summary of the specification in"
echo "# gnulib-cache.m4. It lists the computed macro invocations that need"
echo "# to be invoked from configure.ac."
- echo "# In projects using CVS, this file can be treated like other built files."
+ echo "# In projects that use version control, this file can be treated like"
+ echo "# other built files."
echo
echo
echo "# This macro should be invoked from $configure_ac, in the section"
# _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\""
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="\
*)
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
# _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\""
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\""
) || 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" \
done
;;
- import | update )
+ import | add-import | remove-import | update )
# Where to import.
if test -z "$destdir"; then
fi
# Determine where to apply func_import.
- if test -n "$m4base"; then
+ if test "$mode" = import; then
# Apply func_import to a particular gnulib directory.
- # Any number of additional modules can be given.
- if test ! -f "$destdir/$m4base"/gnulib-cache.m4; then
- # First use of gnulib in the given m4base.
- test -n "$supplied_libname" || supplied_libname=true
- test -n "$sourcebase" || sourcebase="lib"
- test -n "$docbase" || docbase="doc"
- test -n "$testsbase" || testsbase="tests"
- test -n "$macro_prefix" || macro_prefix="gl"
- fi
+ # The command line contains the complete specification; don't look at
+ # the contents of gnulib-cache.m4.
+ test -n "$supplied_libname" || supplied_libname=true
+ test -n "$sourcebase" || sourcebase="lib"
+ test -n "$m4base" || m4base="m4"
+ test -n "$docbase" || docbase="doc"
+ test -n "$testsbase" || testsbase="tests"
+ test -n "$macro_prefix" || macro_prefix="gl"
func_import "$*"
else
- # Apply func_import to all gnulib directories.
- # To get this list of directories, look at Makefile.am. (Not at
- # configure, because it may be omitted from CVS. Also, don't run
- # "find $destdir -name gnulib-cache.m4", as it might be too expensive.)
- m4dirs=
- m4dirs_count=0
- if test -f "$destdir"/Makefile.am; then
- aclocal_amflags=`sed -n -e 's/^ACLOCAL_AMFLAGS[ ]*=\(.*\)$/\1/p' "$destdir"/Makefile.am`
- m4dir_is_next=
- for arg in $aclocal_amflags; do
- if test -n "$m4dir_is_next"; then
- # Ignore absolute directory pathnames, like /usr/local/share/aclocal.
- case "$arg" in
- /*) ;;
- *)
- if test -f "$destdir/$arg"/gnulib-cache.m4; then
- func_append m4dirs " $arg"
- m4dirs_count=`expr $m4dirs_count + 1`
- fi
- ;;
- esac
- m4dir_is_next=
- else
- if test "X$arg" = "X-I"; then
- m4dir_is_next=yes
- else
+ if test -n "$m4base"; then
+ # Apply func_import to a particular gnulib directory.
+ # Any number of additional modules can be given.
+ if test ! -f "$destdir/$m4base"/gnulib-cache.m4; then
+ # First use of gnulib in the given m4base.
+ test -n "$supplied_libname" || supplied_libname=true
+ test -n "$sourcebase" || sourcebase="lib"
+ test -n "$docbase" || docbase="doc"
+ test -n "$testsbase" || testsbase="tests"
+ test -n "$macro_prefix" || macro_prefix="gl"
+ fi
+ func_import "$*"
+ else
+ # Apply func_import to all gnulib directories.
+ # To get this list of directories, look at Makefile.am. (Not at
+ # configure, because it may be omitted from version control. Also,
+ # don't run "find $destdir -name gnulib-cache.m4", as it might be
+ # too expensive.)
+ m4dirs=
+ m4dirs_count=0
+ if test -f "$destdir"/Makefile.am; then
+ aclocal_amflags=`sed -n -e 's/^ACLOCAL_AMFLAGS[ ]*=\(.*\)$/\1/p' "$destdir"/Makefile.am`
+ m4dir_is_next=
+ for arg in $aclocal_amflags; do
+ if test -n "$m4dir_is_next"; then
+ # Ignore absolute directory pathnames, like /usr/local/share/aclocal.
+ case "$arg" in
+ /*) ;;
+ *)
+ if test -f "$destdir/$arg"/gnulib-cache.m4; then
+ func_append m4dirs " $arg"
+ m4dirs_count=`expr $m4dirs_count + 1`
+ fi
+ ;;
+ esac
m4dir_is_next=
+ else
+ if test "X$arg" = "X-I"; then
+ m4dir_is_next=yes
+ else
+ m4dir_is_next=
+ fi
fi
+ done
+ else
+ # No Makefile.am! Oh well. Look at the last generated aclocal.m4.
+ if test -f "$destdir"/aclocal.m4; then
+ sedexpr1='s,^m4_include(\[\(.*\)])$,\1,p'
+ sedexpr2='s,^[^/]*$,.,'
+ sedexpr3='s,/[^/]*$,,'
+ m4dirs=`sed -n -e "$sedexpr1" aclocal.m4 | sed -e "$sedexpr2" -e "$sedexpr3" | LC_ALL=C sort -u`
+ m4dirs=`for arg in $m4dirs; do if test -f "$destdir/$arg"/gnulib-cache.m4; then echo $arg; fi; done`
+ m4dirs_count=`for arg in $m4dirs; do echo "$arg"; done | wc -l`
fi
- done
- else
- # No Makefile.am! Oh well. Look at the last generated aclocal.m4.
- if test -f "$destdir"/aclocal.m4; then
- sedexpr1='s,^m4_include(\[\(.*\)])$,\1,p'
- sedexpr2='s,^[^/]*$,.,'
- sedexpr3='s,/[^/]*$,,'
- m4dirs=`sed -n -e "$sedexpr1" aclocal.m4 | sed -e "$sedexpr2" -e "$sedexpr3" | LC_ALL=C sort -u`
- m4dirs_count=`printf %s "$m4dirs" | wc -l`
fi
- fi
- if test $m4dirs_count = 0; then
- # First use of gnulib in a package.
- # Any number of additional modules can be given.
- test -n "$supplied_libname" || supplied_libname=true
- test -n "$sourcebase" || sourcebase="lib"
- m4base="m4"
- test -n "$docbase" || docbase="doc"
- test -n "$testsbase" || testsbase="tests"
- test -n "$macro_prefix" || macro_prefix="gl"
- func_import "$*"
- else
- if test $m4dirs_count = 1; then
- # There's only one use of gnulib here. Assume the user means it.
+ if test $m4dirs_count = 0; then
+ # First use of gnulib in a package.
# Any number of additional modules can be given.
- for m4base in $m4dirs; do
- func_import "$*"
- done
+ test -n "$supplied_libname" || supplied_libname=true
+ test -n "$sourcebase" || sourcebase="lib"
+ m4base="m4"
+ test -n "$docbase" || docbase="doc"
+ test -n "$testsbase" || testsbase="tests"
+ test -n "$macro_prefix" || macro_prefix="gl"
+ func_import "$*"
else
- # Ambiguous - guess what the user meant.
- if test $# = 0; then
- # No further arguments. Guess the user wants to update all of them.
+ if test $m4dirs_count = 1; then
+ # There's only one use of gnulib here. Assume the user means it.
+ # Any number of additional modules can be given.
for m4base in $m4dirs; do
- # Perform func_import in a subshell, so that variable values
- # such as
- # local_gnulib_dir, incobsolete, inc_cxx_tests,
- # 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
- # don't propagate from one directory to another.
- (func_import) || func_exit 1
+ func_import "$*"
done
else
- # Really ambiguous.
- func_fatal_error "Ambiguity: to which directory should the modules be added? Please specify at least --m4-base=..."
+ # Ambiguous - guess what the user meant.
+ if test $# = 0; then
+ # No further arguments. Guess the user wants to update all of them.
+ for m4base in $m4dirs; do
+ # Perform func_import in a subshell, so that variable values
+ # such as
+ # local_gnulib_dir, incobsolete, inc_cxx_tests,
+ # 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
+ # don't propagate from one directory to another.
+ (func_import) || func_exit 1
+ done
+ else
+ # Really ambiguous.
+ func_fatal_error "Ambiguity: to which directory should the modules be added? Please specify at least --m4-base=..."
+ fi
fi
fi
fi
else
# Install the file.
# Don't protest if the file should be there but isn't: it happens
- # frequently that developers don't put autogenerated files into CVS.
+ # frequently that developers don't put autogenerated files under version
+ # control.
func_add_file
fi
rm -f "$tmpfile"