progname=$0
package=gnulib
-cvsdatestamp='$Date: 2006-08-30 18:13:34 $'
+cvsdatestamp='$Date: 2006-10-07 14:54:51 $'
last_checkin_date=`echo "$cvsdatestamp" | sed -e 's,^\$[D]ate: ,,'`
version=`echo "$last_checkin_date" | sed -e 's/ .*$//' -e 's,/,-,g'`
+nl='
+'
# You can set AUTOCONFPATH to empty if autoconf 2.57 is already in your PATH.
AUTOCONFPATH=
SORT=sort
fi
-nl='
-'
-
# func_usage
# outputs to stdout the --help usage message.
func_usage ()
func_version ()
{
year=`echo "$last_checkin_date" | sed -e 's,/.*$,,'`
- echo "$progname (GNU $package) $version"
- echo "Copyright (C) $year Free Software Foundation, Inc.
+ echo "\
+$progname (GNU $package) $version
+Copyright (C) $year Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
- echo "Written by" "Bruno Haible" "and" "Simon Josefsson"
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+Written by" "Bruno Haible" "and" "Simon Josefsson"
}
# func_emit_copyright_notice
echo "# Generated by gnulib-tool."
}
+# func_exit STATUS
+# exit with status
+func_exit ()
+{
+ (exit $1); exit $1
+}
+
# func_tmpdir
# creates a temporary directory.
# Sets variable
} ||
{
echo "$0: cannot create a temporary directory in $TMPDIR" >&2
- { (exit 1); exit 1; }
+ func_exit 1
}
}
+# func_append var value
+# appends the given value to the shell variable var.
+if ( foo=bar; foo+=baz && test "$foo" = barbaz ) >/dev/null 2>&1; then
+ # Use bash's += operator. It reduces complexity of appending repeatedly to
+ # a single variable from O(n^2) to O(n).
+ func_append ()
+ {
+ eval "$1+=\"\$2\""
+ }
+else
+ func_append ()
+ {
+ eval "$1=\"\$$1\$2\""
+ }
+fi
+
# func_fatal_error message
# outputs to stderr a fatal error message, and terminates the program.
func_fatal_error ()
{
echo "gnulib-tool: *** $1" 1>&2
echo "gnulib-tool: *** Stop." 1>&2
- exit 1
+ func_exit 1
}
# func_readlink SYMLINK
if test $# = 0; then
func_fatal_error "missing argument for --avoid"
fi
- avoidlist="$avoidlist $1"
+ func_append avoidlist " $1"
shift ;;
--avoid=* )
- avoidlist="$avoidlist "`echo "X$1" | sed -e 's/^X--avoid=//'`
+ arg=`echo "X$1" | sed -e 's/^X--avoid=//'`
+ func_append avoidlist " $arg"
shift ;;
--lgpl )
lgpl=true
shift ;;
--help | --hel | --he | --h )
func_usage
- exit 0 ;;
+ func_exit $? ;;
--version | --versio | --versi | --vers | --ver | --ve | --v )
func_version
- exit 0 ;;
+ func_exit $? ;;
-- )
# Stop option processing
shift
-* )
echo "gnulib-tool: unknown option $1" 1>&2
echo "Try 'gnulib-tool --help' for more information." 1>&2
- exit 1 ;;
+ func_exit 1 ;;
* )
break ;;
esac
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
echo "you need to use 'gnulib --import' - at your own risk!" 1>&2
- exit 1
+ func_exit 1
fi
if test -n "$local_gnulib_dir" || test -n "$supplied_libname" \
|| test -n "$sourcebase" || test -n "$m4base" \
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
echo "you need to use 'gnulib --import' - at your own risk!" 1>&2
- exit 1
+ func_exit 1
fi
do_changelog=false
fi
}'
eval `sed -n -e "$my_sed_traces" < "$configure_ac"`
if test -n "$prereqs"; then
- autoconf_minversion=`for version in $prereqs; do echo $version; done | $SORT -g | uniq | tail -1`
+ autoconf_minversion=`for version in $prereqs; do echo $version; done | $SORT -g -u | tail -1`
fi
fi
if test -z "$autoconf_minversion"; then
gnulib_dir=`echo "$self_abspathname" | sed -e 's,/[^/]*$,,'`
func_tmpdir
-trap 'rm -rf "$tmp"' 0 1 2 3 15
+trap 'exit_status=$?
+ if test "$signal" != 0; then
+ echo "caught signal $signal" >&2
+ fi
+ rm -rf "$tmp"
+ exit $exit_status' 0
+for signal in 1 2 3 13 15; do
+ trap '{ signal='$signal'; func_exit 1; }' $signal
+done
+signal=0
# func_lookup_file file
# looks up a file in $local_gnulib_dir or $gnulib_dir, or combines it through
} \
| sed -e '/^CVS$/d' -e '/^ChangeLog$/d' -e '/^COPYING$/d' -e '/^README$/d' -e '/^TEMPLATE$/d' -e '/^TEMPLATE-TESTS$/d' -e '/~$/d' \
| sed -e '/-tests$/d' \
- | LC_ALL=C sort \
- | LC_ALL=C uniq
+ | LC_ALL=C sort -u
}
# func_verify_module
# - modules list of specified modules
# - inctests true if tests should be included, blank otherwise
# - avoidlist list of modules to avoid
+# - tmp pathname of a temporary directory
# Output:
# - modules list of modules, including dependencies
func_modules_transitive_closure ()
{
- while true; do
- xmodules=
- for module in $modules; do
+ # In order to process every module only once (for speed), process an "input
+ # list" of modules, producing an "output list" of modules. During each round,
+ # more modules can be queued in the input list. Once a module on the input
+ # list has been processed, it is added to the "handled list", so we can avoid
+ # to process it again.
+ handledmodules=
+ inmodules="$modules"
+ outmodules=
+ while test -n "$inmodules"; do
+ inmodules_this_round="$inmodules"
+ inmodules= # Accumulator, queue for next round
+ for module in $inmodules_this_round; do
func_verify_module
if test -n "$module"; then
- # Duplicate dependencies are harmless, but Jim wants a warning.
- duplicated_deps=`func_get_dependencies $module | LC_ALL=C sort | LC_ALL=C uniq -d`
- if test -n "$duplicated_deps"; then
- echo "warning: module $module has duplicated dependencies: "`echo $duplicated_deps` 1>&2
- fi
if func_acceptable $module; then
- xmodules="$xmodules $module"
- for depmodule in `func_get_dependencies $module`; do
- if func_acceptable $depmodule; then
- xmodules="$xmodules $depmodule"
- fi
- done
+ func_append outmodules " $module"
+ deps=`func_get_dependencies $module`
+ # Duplicate dependencies are harmless, but Jim wants a warning.
+ duplicated_deps=`echo "$deps" | LC_ALL=C sort | LC_ALL=C uniq -d`
+ if test -n "$duplicated_deps"; then
+ echo "warning: module $module has duplicated dependencies: "`echo $duplicated_deps` 1>&2
+ fi
+ func_append inmodules " $deps"
if test -n "$inctests"; then
testsmodule=`func_get_tests_module $module`
if test -n "$testsmodule"; then
- if func_acceptable $testsmodule; then
- xmodules="$xmodules $testsmodule"
- for depmodule in `func_get_dependencies $testsmodule`; do
- if func_acceptable $depmodule; then
- xmodules="$xmodules $depmodule"
- fi
- done
- fi
+ func_append inmodules " $testsmodule"
fi
fi
fi
fi
done
- xmodules=`for m in $xmodules; do echo $m; done | LC_ALL=C sort | LC_ALL=C uniq`
- if test "$xmodules" = "$modules"; then
- break
- fi
- modules="$xmodules"
+ handledmodules=`for m in $handledmodules $inmodules_this_round; do echo $m; done | LC_ALL=C sort -u`
+ # Remove $handledmodules from $inmodules.
+ for m in $inmodules; do echo $m; done | LC_ALL=C sort -u > "$tmp"/queued-modules
+ inmodules=`echo "$handledmodules" | LC_ALL=C join -v 2 - "$tmp"/queued-modules`
done
+ modules=`for m in $outmodules; do echo $m; done | LC_ALL=C sort -u`
+ rm -f "$tmp"/queued-modules
}
# func_modules_add_dummy
done
# Add the dummy module, to make sure the library will be non-empty.
if test -z "$have_lib_SOURCES"; then
- modules="$modules dummy"
+ func_append modules " dummy"
fi
}
for module in $modules; do
func_verify_module
if test -n "$module"; then
- files="$files "`func_get_filelist $module`
+ fs=`func_get_filelist $module`
+ func_append files " $fs"
fi
done
- files=`for f in $files; do echo $f; done | LC_ALL=C sort | LC_ALL=C uniq`
+ files=`for f in $files; do echo $f; done | LC_ALL=C sort -u`
}
# func_emit_lib_Makefile_am
# - actioncmd (optional) command that will reproduce this invocation
func_emit_lib_Makefile_am ()
{
+ # When creating an includable Makefile.am snippet, augment variables with
+ # += instead of assigning them.
+ if test -n "$makefile_name"; then
+ assign='+='
+ else
+ assign='='
+ fi
if test "$libtool" = true; then
libext=la
perhapsLT=LT
+ sed_eliminate_LDFLAGS=
else
libext=a
perhapsLT=
+ sed_eliminate_LDFLAGS='/^lib_LDFLAGS[ ]*+=/d'
fi
+ echo "## DO NOT EDIT! GENERATED AUTOMATICALLY!"
echo "## Process this file with automake to produce Makefile.in."
func_emit_copyright_notice
if test -n "$actioncmd"; then
echo "# Reproduce by: $actioncmd"
fi
echo
- # No need to generate dependencies since the sources are in gnulib, not here.
- echo "AUTOMAKE_OPTIONS = 1.5 gnits no-dependencies"
+ if test -z "$makefile_name"; then
+ echo "AUTOMAKE_OPTIONS = 1.5 gnits"
+ fi
echo
(
for module in $modules; do
func_get_automake_snippet "$module" |
sed -e 's,lib_LIBRARIES,lib%_LIBRARIES,g' \
-e 's,lib_LTLIBRARIES,lib%_LTLIBRARIES,g' |
+ sed -e "$sed_eliminate_LDFLAGS" |
sed -e 's,lib_\([A-Z][A-Z]*\),'"${libname}_${libext}"'_\1,g' |
sed -e 's,lib%_LIBRARIES,lib_LIBRARIES,g' \
-e 's,lib%_LTLIBRARIES,lib_LTLIBRARIES,g'
:
else
# By default, the generated library should not be installed.
- echo "noinst_${perhapsLT}LIBRARIES = $libname.$libext"
+ echo "noinst_${perhapsLT}LIBRARIES $assign $libname.$libext"
fi
echo
echo "${libname}_${libext}_SOURCES ="
- echo "${libname}_${libext}_LIBADD = @${perhapsLT}LIBOBJS@"
- echo "noinst_HEADERS ="
- if grep '^pkgdata_DATA *+=' allsnippets.tmp > /dev/null; then
- echo "pkgdata_DATA ="
+ # Here we use $(LIBOBJS), not @LIBOBJS@. The value is the same. However,
+ # automake during its analyses looks for $(LIBOBJS), not for @LIBOBJS@.
+ echo "${libname}_${libext}_LIBADD = \$(${perhapsLT}LIBOBJS)"
+ if test "$libtool" = true; then
+ echo "${libname}_${libext}_LDFLAGS = \$(AM_LDFLAGS)"
+ fi
+ if test -z "$makefile_name"; then
+ echo "noinst_HEADERS ="
+ # Automake versions < 1.9b create an empty pkgdatadir at installation time
+ # if you specify pkgdata_DATA to empty. This is a workaround.
+ if grep '^pkgdata_DATA *+=' allsnippets.tmp > /dev/null; then
+ echo "pkgdata_DATA ="
+ fi
+ echo "EXTRA_DIST ="
+ echo "BUILT_SOURCES ="
+ echo "SUFFIXES ="
+ fi
+ echo "MOSTLYCLEANFILES $assign core *.stackdump"
+ if test -z "$makefile_name"; then
+ echo "MOSTLYCLEANDIRS ="
+ echo "CLEANFILES ="
+ echo "DISTCLEANFILES ="
+ echo "MAINTAINERCLEANFILES ="
+ echo
+ echo "AM_CPPFLAGS ="
fi
- echo "EXTRA_DIST ="
- echo "BUILT_SOURCES ="
- echo "SUFFIXES ="
- echo "MOSTLYCLEANFILES = core *.stackdump"
- echo "MOSTLYCLEANDIRS ="
- echo "CLEANFILES ="
- echo "DISTCLEANFILES ="
- echo "MAINTAINERCLEANFILES ="
- echo
- echo "AM_CPPFLAGS ="
echo
cat allsnippets.tmp
echo
else
libext=a
fi
+ if test "$libtool" = true; then
+ libext=la
+ sed_eliminate_LDFLAGS=
+ else
+ libext=a
+ sed_eliminate_LDFLAGS='/^lib_LDFLAGS[ ]*+=/d'
+ fi
testsbase_inverse=`echo "$testsbase" | sed -e 's,/$,,' | sed -e 's,[^/][^/]*,..,g'`
+ echo "## DO NOT EDIT! GENERATED AUTOMATICALLY!"
echo "## Process this file with automake to produce Makefile.in."
func_emit_copyright_notice
echo
for module in $modules; do
func_verify_tests_module
if test -n "$module"; then
- func_get_automake_snippet "$module" > amsnippet.tmp
+ {
+ func_get_automake_snippet "$module" |
+ sed -e 's,lib_LIBRARIES,lib%_LIBRARIES,g' \
+ -e 's,lib_LTLIBRARIES,lib%_LTLIBRARIES,g' |
+ sed -e "$sed_eliminate_LDFLAGS" |
+ sed -e 's,lib_\([A-Z][A-Z]*\),'"${libname}_${libext}"'_\1,g' |
+ sed -e 's,lib%_LIBRARIES,lib_LIBRARIES,g' \
+ -e 's,lib%_LTLIBRARIES,lib_LTLIBRARIES,g'
+ } > amsnippet.tmp
# Skip the contents if its entirely empty.
if grep '[^ ]' amsnippet.tmp > /dev/null ; then
echo "## begin gnulib module $module"
fi
# Canonicalize the list of specified modules.
- specified_modules=`for m in $specified_modules; do echo $m; done | LC_ALL=C sort | LC_ALL=C uniq`
+ specified_modules=`for m in $specified_modules; do echo $m; done | LC_ALL=C sort -u`
# Determine final module list.
modules="$specified_modules"
license=`func_get_license $module`
case $license in
LGPL | 'GPLed build tool') ;;
- 'public domain' | 'unlimited' | 'unmodifiable license text') ;;
+ 'public domain' | 'unlimited' | 'unmodifiable license text') ;;
*) func_fatal_error "incompatible license on module $module: $license" ;;
esac
done
# Determine script to apply to imported library files.
sed_transform_lib_file=
- case $nl$modules$nl in
- *"${nl}config-h$nl"*)
+ for module in $modules; do
+ if test $module = config-h; then
# Assume config.h exists, and that -DHAVE_CONFIG_H is omitted.
sed_transform_lib_file=$sed_transform_lib_file'
- s/^#ifdef[ ]*HAVE_CONFIG_H[ ]*$/#if 1/
- ' ;;
- esac
+ s/^#ifdef[ ]*HAVE_CONFIG_H[ ]*$/#if 1/
+ '
+ break
+ fi
+ done
if test -n "$lgpl"; then
# Update license.
sed_transform_lib_file=$sed_transform_lib_file'
new_files="$files m4/gnulib-tool.m4"
old_files="$cached_files"
if test -f "$destdir"/$m4base/gnulib-tool.m4; then
- old_files="$old_files m4/gnulib-tool.m4"
+ func_append old_files " m4/gnulib-tool.m4"
fi
# Create directories.
# Copy files or make symbolic links. Remove obsolete files.
delimiter=' '
- for f in $old_files; do
- case "$f" in
- build-aux/*) g=`echo "$f" | sed -e "s,^build-aux/,$auxdir/,"` ;;
- doc/*) g=`echo "$f" | sed -e "s,^doc/,$cached_docbase/,"` ;;
- lib/*) g=`echo "$f" | sed -e "s,^lib/,$cached_sourcebase/,"` ;;
- m4/*) g=`echo "$f" | sed -e "s,^m4/,$cached_m4base/,"` ;;
- tests/*) g=`echo "$f" | sed -e "s,^tests/,$cached_testsbase/,"` ;;
- *) g="$f" ;;
- esac
- echo "$g""$delimiter""$f"
- done | LC_ALL=C sort > "$tmp"/old-files
- for f in $new_files; do
- case "$f" in
- build-aux/*) g=`echo "$f" | sed -e "s,^build-aux/,$auxdir/,"` ;;
- doc/*) g=`echo "$f" | sed -e "s,^doc/,$docbase/,"` ;;
- lib/*) g=`echo "$f" | sed -e "s,^lib/,$sourcebase/,"` ;;
- m4/*) g=`echo "$f" | sed -e "s,^m4/,$m4base/,"` ;;
- tests/*) g=`echo "$f" | sed -e "s,^tests/,$testsbase/,"` ;;
- *) g="$f" ;;
- esac
- echo "$g""$delimiter""$f"
- done | LC_ALL=C sort > "$tmp"/new-files
+ sed_rewrite_old_files="\
+ s,^build-aux/,$auxdir/,
+ s,^doc/,$cached_docbase/,
+ s,^lib/,$cached_sourcebase/,
+ s,^m4/,$cached_m4base/,
+ s,^tests/,$cached_testsbase/,"
+ sed_rewrite_new_files="\
+ s,^build-aux/,$auxdir/,
+ s,^doc/,$docbase/,
+ s,^lib/,$sourcebase/,
+ s,^m4/,$m4base/,
+ s,^tests/,$testsbase/,"
+ # Construct a table with 2 columns: rewritten-file-name original-file-name,
+ # representing the files according to the last gnulib-tool invocation.
+ for f in $old_files; do echo $f; done \
+ | sed -e "s,^.*\$,&$delimiter&," -e "$sed_rewrite_old_files" \
+ | LC_ALL=C sort \
+ > "$tmp"/old-files
+ # Construct a table with 2 columns: rewritten-file-name original-file-name,
+ # representing the files after this gnulib-tool invocation.
+ for f in $new_files; do echo $f; done \
+ | sed -e "s,^.*\$,&$delimiter&," -e "$sed_rewrite_new_files" \
+ | LC_ALL=C sort \
+ > "$tmp"/new-files
# First the files that are in old-files, but not in new-files:
sed_take_first_column='s,'"$delimiter"'.*,,'
for g in `LC_ALL=C join -t"$delimiter" -v1 "$tmp"/old-files "$tmp"/new-files | sed -e "$sed_take_first_column"`; do
fi
done
# func_add_or_update handles a file that ought to be present afterwards.
- # Uses parameters f, g, already_present.
+ # Uses parameters
+ # - f the original file name
+ # - g the rewritten file name
+ # - already_present nonempty if the file already exists, empty otherwise
func_add_or_update ()
{
func_dest_tmpfilename "$g"
func_lookup_file "$f"
cp "$lookedup_file" "$tmpfile" || func_fatal_error "failed"
- if test -n "sed_transform_lib_file"; then
+ if test -n "$sed_transform_lib_file"; then
case "$f" in
lib/*)
sed -e "$sed_transform_lib_file" \
# Then the files that are in new-files, but not in old-files:
sed_take_last_column='s,^.*'"$delimiter"',,'
already_present=
- for f in `LC_ALL=C join -t"$delimiter" -v2 "$tmp"/old-files "$tmp"/new-files | sed -e "$sed_take_last_column"`; do
- case "$f" in
- build-aux/*) g=`echo "$f" | sed -e "s,^build-aux/,$auxdir/,"` ;;
- doc/*) g=`echo "$f" | sed -e "s,^doc/,$docbase/,"` ;;
- lib/*) g=`echo "$f" | sed -e "s,^lib/,$sourcebase/,"` ;;
- m4/*) g=`echo "$f" | sed -e "s,^m4/,$m4base/,"` ;;
- tests/*) g=`echo "$f" | sed -e "s,^tests/,$testsbase/,"` ;;
- *) g="$f" ;;
- esac
- func_add_or_update
- done
+ LC_ALL=C join -t"$delimiter" -v2 "$tmp"/old-files "$tmp"/new-files \
+ | sed -e "$sed_take_last_column" \
+ | sed -e "s,^.*\$,&$delimiter&," -e "$sed_rewrite_new_files" > "$tmp"/added-files
+ { # Rearrange file descriptors. Needed because "while ... done < ..."
+ # constructs are executed in a subshell e.g. by Solaris 10 /bin/sh.
+ exec 5<&0 < "$tmp"/added-files
+ while read g f; do
+ func_add_or_update
+ done
+ exec 0<&5 5<&-
+ }
# Then the files that are in new-files and in old-files:
already_present=true
- for f in `LC_ALL=C join -t"$delimiter" "$tmp"/old-files "$tmp"/new-files | sed -e "$sed_take_last_column"`; do
- case "$f" in
- build-aux/*) g=`echo "$f" | sed -e "s,^build-aux/,$auxdir/,"` ;;
- doc/*) g=`echo "$f" | sed -e "s,^doc/,$docbase/,"` ;;
- lib/*) g=`echo "$f" | sed -e "s,^lib/,$sourcebase/,"` ;;
- m4/*) g=`echo "$f" | sed -e "s,^m4/,$m4base/,"` ;;
- tests/*) g=`echo "$f" | sed -e "s,^tests/,$testsbase/,"` ;;
- *) g="$f" ;;
- esac
- func_add_or_update
- done
+ LC_ALL=C join -t"$delimiter" "$tmp"/old-files "$tmp"/new-files \
+ | sed -e "$sed_take_last_column" \
+ | sed -e "s,^.*\$,&$delimiter&," -e "$sed_rewrite_new_files" > "$tmp"/kept-files
+ { # Rearrange file descriptors. Needed because "while ... done < ..."
+ # constructs are executed in a subshell e.g. by Solaris 10 /bin/sh.
+ exec 5<&0 < "$tmp"/kept-files
+ while read g f; do
+ func_add_or_update
+ done
+ exec 0<&5 5<&-
+ }
# Command-line invocation printed in a comment in generated gnulib-cache.m4.
actioncmd="gnulib-tool --import"
- actioncmd="$actioncmd --dir=$destdir"
+ func_append actioncmd " --dir=$destdir"
if test -n "$local_gnulib_dir"; then
- actioncmd="$actioncmd --local-dir=$local_gnulib_dir"
+ func_append actioncmd " --local-dir=$local_gnulib_dir"
fi
- actioncmd="$actioncmd --lib=$libname"
- actioncmd="$actioncmd --source-base=$sourcebase"
- actioncmd="$actioncmd --m4-base=$m4base"
- actioncmd="$actioncmd --doc-base=$docbase"
- actioncmd="$actioncmd --aux-dir=$auxdir"
+ func_append actioncmd " --lib=$libname"
+ func_append actioncmd " --source-base=$sourcebase"
+ func_append actioncmd " --m4-base=$m4base"
+ func_append actioncmd " --doc-base=$docbase"
+ func_append actioncmd " --aux-dir=$auxdir"
for module in $avoidlist; do
- actioncmd="$actioncmd --avoid=$module"
+ func_append actioncmd " --avoid=$module"
done
if test -n "$lgpl"; then
- actioncmd="$actioncmd --lgpl"
+ func_append actioncmd " --lgpl"
fi
if test -n "$makefile_name"; then
- actioncmd="$actioncmd --makefile_name=$makefile_name"
+ func_append actioncmd " --makefile_name=$makefile_name"
fi
if test "$libtool" = true; then
- actioncmd="$actioncmd --libtool"
+ func_append actioncmd " --libtool"
else
- actioncmd="$actioncmd --no-libtool"
+ func_append actioncmd " --no-libtool"
fi
- actioncmd="$actioncmd --macro-prefix=$macro_prefix"
- actioncmd="$actioncmd `echo $specified_modules`"
+ func_append actioncmd " --macro-prefix=$macro_prefix"
+ func_append actioncmd " `echo $specified_modules`"
# Default the makefile name to Makefile.am.
if test -n "$makefile_name"; then
# Create m4/gnulib-comp.m4.
func_dest_tmpfilename $m4base/gnulib-comp.m4
(
+ echo "# DO NOT EDIT! GENERATED AUTOMATICALLY!"
func_emit_copyright_notice
echo "#"
echo "# This file represents the compiled summary of the specification in"
echo "["
if test "$libtool" = true; then
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
+ echo " gl_source_base='$sourcebase'"
if test "$auxdir" != "build-aux"; then
sed_replace_build_aux='
:a
fi
fi
done
+ # _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" | 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 "])"
echo
echo "# This macro records the list of files which have been installed by"
echo "Finished."
echo
echo "You may need to add #include directives for the following .h files."
+ # First the #include <...> directives without #ifs, sorted for convenience,
+ # then the #include "..." directives without #ifs, sorted for convenience,
+ # then the #include directives that are surrounded by #ifs. Not sorted.
+ for module in $modules; do
+ include_directive=`func_get_include_directive "$module"`
+ case "$nl$include_directive" in
+ *"$nl#if"*)
+ echo "$include_directive" 1>&5
+ ;;
+ *)
+ echo "$include_directive" | grep -v 'include "' 1>&6
+ echo "$include_directive" | grep 'include "' 1>&7
+ ;;
+ esac
+ done 5> "$tmp"/include-if 6> "$tmp"/include-angles 7> "$tmp"/include-quotes
(
- # First the #include <...> directives without #ifs, sorted for convenience.
- for module in $modules; do
- if func_get_include_directive "$module" | grep '^#if' >/dev/null; then
- :
- else
- func_get_include_directive "$module" | grep -v 'include "'
- fi
- done | LC_ALL=C sort -u
- # Then the #include "..." directives without #ifs, sorted for convenience.
- for module in $modules; do
- if func_get_include_directive "$module" | grep '^#if' >/dev/null; then
- :
- else
- func_get_include_directive "$module" | grep 'include "'
- fi
- done | LC_ALL=C sort -u
- # Then the #include directives that are surrounded by #ifs. Not sorted.
- for module in $modules; do
- if func_get_include_directive "$module" | grep '^#if' >/dev/null; then
- func_get_include_directive "$module"
- fi
- done
- ) | sed -e '/^$/d;' -e 's/^/ /'
+ LC_ALL=C sort -u "$tmp"/include-angles
+ LC_ALL=C sort -u "$tmp"/include-quotes
+ cat "$tmp"/include-if
+ ) | sed -e '/^$/d' -e 's/^/ /'
+ rm -f "$tmp"/include-angles "$tmp"/include-quotes "$tmp"/include-if
+
echo
echo "Don't forget to"
if test "$makefile_am" = Makefile.am; then
{
testdir="$1"
modules="$2"
- modules=`for m in $modules; do echo $m; done | LC_ALL=C sort | LC_ALL=C uniq`
+ modules=`for m in $modules; do echo $m; done | LC_ALL=C sort -u`
# Subdirectory names.
sourcebase=gllib
m4base=glm4
+ docbase=gldoc
testsbase=gltests
# Determine final module list.
for d in `echo "$files" | sed -n -e 's,^\(.*\)/[^/]*,\1,p'`; do
case "$d" in
build-aux) mkdir -p "$testdir/$auxdir" ;;
+ doc) mkdir -p "$testdir/$docbase" ;;
lib) mkdir -p "$testdir/$sourcebase" ;;
m4) mkdir -p "$testdir/$m4base" ;;
tests) mkdir -p "$testdir/$testsbase" ;;
done
# Copy files or make symbolic links.
- for f in $files; do
- func_lookup_file "$f"
- case "$f" in
- build-aux/*) g=`echo "$f" | sed -e "s,^build-aux/,$auxdir/,"` ;;
- lib/*) g=`echo "$f" | sed -e "s,^lib/,$sourcebase/,"` ;;
- m4/*) g=`echo "$f" | sed -e "s,^m4/,$m4base/,"` ;;
- tests/*) g=`echo "$f" | sed -e "s,^tests/,$testsbase/,"` ;;
- *) g="$f" ;;
- esac
- if test -n "$lookedup_tmp"; then
- cp -p "$lookedup_file" "$testdir/$g"
- else
- ln "$lookedup_file" "$testdir/$g" 2>/dev/null ||
- if test -z "$symbolic"; then
+ delimiter=' '
+ sed_rewrite_files="\
+ s,^build-aux/,$auxdir/,
+ s,^doc/,$docbase/,
+ s,^lib/,$sourcebase/,
+ s,^m4/,$m4base/,
+ s,^tests/,$testsbase/,"
+ for f in $files; do echo $f; done \
+ | sed -e "s,^.*\$,&$delimiter&," -e "$sed_rewrite_files" \
+ | LC_ALL=C sort \
+ > "$tmp"/files
+ { # Rearrange file descriptors. Needed because "while ... done < ..."
+ # constructs are executed in a subshell e.g. by Solaris 10 /bin/sh.
+ exec 5<&0 < "$tmp"/files
+ while read g f; do
+ func_lookup_file "$f"
+ if test -n "$lookedup_tmp"; then
cp -p "$lookedup_file" "$testdir/$g"
else
- ln -s "$lookedup_file" "$testdir/$g"
+ ln "$lookedup_file" "$testdir/$g" 2>/dev/null ||
+ if test -z "$symbolic"; then
+ cp -p "$lookedup_file" "$testdir/$g"
+ else
+ ln -s "$lookedup_file" "$testdir/$g"
+ fi
fi
- fi
- done
+ done
+ exec 0<&5 5<&-
+ }
# Create $sourcebase/Makefile.am.
mkdir -p "$testdir/$sourcebase"
mkdir -p "$testdir/po"
(echo "## Process this file with automake to produce Makefile.in."
) > "$testdir/po/Makefile.am"
- subdirs="$subdirs po"
+ func_append subdirs " po"
fi
if test -n "$inctests"; then
fi
if test "$libtool" = true; then
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
+ echo "gl_source_base='$testsbase'"
# Wrap the set of autoconf snippets into an autoconf macro that is then
# invoked. This is needed because autoconf does not support AC_REQUIRE
# at the top level:
| sed -e "$sed_replace_build_aux"
fi
done
+ # _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" | 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 "])"
echo "gl_INIT"
echo
echo
echo "AC_OUTPUT([Makefile])"
) > "$testdir/$testsbase/configure.ac"
- subdirs="$subdirs $testsbase"
+ func_append subdirs " $testsbase"
subdirs_with_configure_ac="$subdirs_with_configure_ac $testsbase"
fi
fi
if test "$libtool" = true; then
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
+ echo "gl_source_base='$sourcebase'"
# 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:
| sed -e "$sed_replace_build_aux"
fi
done
+ # _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" | 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 "])"
echo "gl_INIT"
echo
# configure.ac which creates the subdir's Makefile.am, not this one.
case " $subdirs_with_configure_ac " in
*" $d "*) ;;
- *) makefiles="$makefiles $d/Makefile" ;;
+ *) func_append makefiles " $d/Makefile" ;;
esac
done
echo "AC_OUTPUT([$makefiles])"
# First, all modules one by one.
for onemodule in $allmodules; do
func_create_testdir "$megatestdir/$onemodule" $onemodule
- megasubdirs="${megasubdirs}$onemodule "
+ func_append megasubdirs "$onemodule "
done
# Then, all modules all together.
+ # Except config-h, which breaks all modules which use HAVE_CONFIG_H.
# Except fnmatch-posix, which conflicts with fnmatch-gnu. FIXME.
- allmodules=`for m in $allmodules; do if test $m != fnmatch-posix; then echo $m; fi; done`
+ allmodules=`for m in $allmodules; do if test $m != config-h && test $m != fnmatch-posix; then echo $m; fi; done`
func_create_testdir "$megatestdir/ALL" "$allmodules"
- megasubdirs="${megasubdirs}ALL"
+ func_append megasubdirs "ALL"
# Create Makefile.am.
(echo "## Process this file with automake to produce Makefile.in."
/*) ;;
*)
if test -f "$destdir/$arg"/gnulib-cache.m4; then
- m4dirs="$m4dirs $arg"
+ func_append m4dirs " $arg"
m4dirs_count=`expr $m4dirs_count + 1`
fi
;;
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 | LC_ALL=C uniq`
+ m4dirs=`sed -n -e "$sedexpr1" aclocal.m4 | sed -e "$sedexpr2" -e "$sedexpr3" | LC_ALL=C sort -u`
m4dirs_count=`echo "$m4dirs" | wc -l`
fi
fi
if test $# = 0; then
# No further arguments. Guess the user wants to update all of them.
for m4base in $m4dirs; do
- func_import
+ # Perform func_import in a subshell, so that variable values
+ # such as
+ # local_gnulib_dir, avoidlist, sourcebase, m4base, docbase,
+ # testsbase, libname, lgpl, makefile_name, libtool, macro_prefix
+ # don't propagate from one directory to another.
+ (func_import) || func_exit 1
done
else
# Really ambiguous.
if test -n "$remaining"; then
echo "Remaining files:" $remaining 1>&2
echo "gnulib-tool: *** Stop." 1>&2
- exit 1
+ func_exit 1
fi
cd ..
cd ..
if test -n "$remaining"; then
echo "Remaining files:" $remaining 1>&2
echo "gnulib-tool: *** Stop." 1>&2
- exit 1
+ func_exit 1
fi
cd ..
cd ..
rm -rf "$tmp"
# Undo the effect of the previous 'trap' command. Some shellology:
-# We cannot use "trap - 0 1 2 3 15", because Solaris sh would attempt to
+# We cannot use "trap - 0 1 2 3 13 15", because Solaris sh would attempt to
# execute the command "-". "trap '' ..." is fine only for signal 0 (= normal
# exit); for the others we need to call 'exit' explicitly. The value of $? is
# 128 + signal number and is set before the trap-registered command is run.
trap '' 0
-trap 'exit $?' 1 2 3 15
+trap 'func_exit $?' 1 2 3 13 15
exit 0
+
+# Local Variables:
+# indent-tabs-mode: nil
+# whitespace-check-buffer-indent: nil
+# End: