progname=$0
package=gnulib
-cvsdatestamp='$Date: 2006-07-09 03:31:53 $'
+cvsdatestamp='$Date: 2006-07-31 11:35:20 $'
last_checkin_date=`echo "$cvsdatestamp" | sed -e 's,^\$[D]ate: ,,'`
version=`echo "$last_checkin_date" | sed -e 's/ .*$//' -e 's,/,-,g'`
AUTORECONF="${AUTOCONFPATH}autoreconf"
fi
+# GNU sort is needed. Set SORT to its location (not needed if it's called
+# 'sort' and already in the PATH).
+if test -z "$SORT"; then
+ SORT=sort
+fi
+
# func_usage
# outputs to stdout the --help usage message.
func_usage ()
--extract-maintainer report the maintainer(s) inside gnulib
--extract-tests-module report the unit test module, if it exists
-Options:
- --dir=DIRECTORY specify the target directory
+General options:
+ --dir=DIRECTORY Specify the target directory.
For --import, this specifies where your
configure.ac can be found. Defaults to current
directory.
+ --local-dir=DIRECTORY Specify a local override directory where to look
+ up files before looking in gnulib's directory.
+
+Options for --import:
--lib=LIBRARY Specify the library name. Defaults to 'libgnu'.
--source-base=DIRECTORY
- Directory relative --dir where source code is
- placed (default \"lib\"), for --import.
- --m4-base=DIRECTORY Directory relative --dir where *.m4 macros are
- placed (default \"m4\"), for --import.
+ Directory relative to --dir where source code is
+ placed (default \"lib\").
+ --m4-base=DIRECTORY Directory relative to --dir where *.m4 macros are
+ placed (default \"m4\").
+ --doc-base=DIRECTORY Directory relative to --dir where doc files are
+ placed (default \"doc\").
--tests-base=DIRECTORY
- Directory relative --dir where unit tests are
- placed (default \"tests\"), for --import.
- --aux-dir=DIRECTORY Directory relative --dir where auxiliary build
+ 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\").
--with-tests Include unit tests for the included modules.
--avoid=MODULE Avoid including the given MODULE. Useful if you
This option can be repeated.
--lgpl Abort if modules aren't available under the LGPL.
Also modify license template from GPL to LGPL.
- --libtool Use libtool rules, for --import.
+ --libtool Use libtool rules.
+ --no-libtool Don't use libtool rules.
--macro-prefix=PREFIX Specify the prefix of the macros 'gl_EARLY' and
'gl_INIT'. Default is 'gl'.
--no-changelog don't update or create ChangeLog files
+
+Options for --import and --update:
--dry-run For --import, only print what would have been done.
-s, --symbolic, --symlink Make symbolic links instead of copying files.
# - libname, supplied_libname from --lib
# - sourcebase from --source-base
# - m4base from --m4-base
+# - docbase from --doc-base
# - testsbase from --tests-base
# - auxdir from --aux-dir
# - inctests true if --with-tests was given, blank otherwise
# - avoidlist list of modules to avoid, from --avoid
# - lgpl true if --lgpl was given, blank otherwise
-# - libtool true if --libtool was given, blank otherwise
+# - libtool true if --libtool was given, false if --no-libtool was
+# given, blank otherwise
+# - macro_prefix from --macro-prefix
+# - autoconf_minversion minimum supported autoconf version
# - do_changelog false if --no-changelog was given, : otherwise
# - doit : if actions shall be executed, false if only to be printed
+# - local_gnulib_dir from --local-dir
+# - symbolic true if --symbolic was given, blank otherwise
{
mode=
destdir=
supplied_libname=
sourcebase=
m4base=
+ docbase=
testsbase=
auxdir=
inctests=
lgpl=
libtool=
macro_prefix=
+ autoconf_minversion=
do_changelog=:
doit=:
+ local_gnulib_dir=
symbolic=
supplied_opts="$@"
--m4-base=* )
m4base=`echo "X$1" | sed -e 's/^X--m4-base=//'`
shift ;;
+ --doc-base )
+ shift
+ if test $# = 0; then
+ func_fatal_error "missing argument for --doc-base"
+ fi
+ docbase=$1
+ shift ;;
+ --doc-base=* )
+ docbase=`echo "X$1" | sed -e 's/^X--doc-base=//'`
+ shift ;;
--tests-base )
shift
if test $# = 0; then
--libtool )
libtool=true
shift ;;
+ --no-libtool )
+ libtool=false
+ shift ;;
--macro-prefix )
shift
if test $# = 0; then
--dry-run )
doit=false
shift ;;
+ --local-dir )
+ shift
+ if test $# = 0; then
+ func_fatal_error "missing argument for --local-dir"
+ fi
+ local_gnulib_dir=$1
+ shift ;;
+ --local-dir=* )
+ local_gnulib_dir=`echo "X$1" | sed -e 's/^X--local-dir=//'`
+ shift ;;
-s | --symbolic | --symboli | --symbol | --symbo | --symb | --symlink | --symlin | --symli | --syml | --sym | --sy )
symbolic=true
shift ;;
exit 1
fi
if test -n "$supplied_libname" || test -n "$sourcebase" || test -n "$m4base" \
- || test -n "$testsbase" || test -n "$auxdir" || test -n "$inctests" \
- || test -n "$avoidlist" || test -n "$lgpl" || test -n "$macro_prefix"; then
+ || test -n "$docbase" || test -n "$testsbase" || test -n "$auxdir" \
+ || test -n "$inctests" || test -n "$avoidlist" || test -n "$lgpl" \
+ || test -n "$macro_prefix"; 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
do_changelog=false
fi
+ # Determine the minimum supported autoconf version from the project's
+ # configure.ac.
+ DEFAULT_AUTOCONF_MINVERSION="2.59"
+ if test -f configure.ac; then
+ autoconf_minversion=`$AUTOCONF --trace=AC_PREREQ:'$1' | $SORT -g | uniq | tail -1`
+ fi
+ if test -z "$autoconf_minversion"; then
+ autoconf_minversion=$DEFAULT_AUTOCONF_MINVERSION
+ fi
+ case "$autoconf_minversion" in
+ 1.* | 2.[0-4]* | 2.5[0-8]*)
+ func_fatal_error "minimum supported autoconf version is 2.59. Try adding AC_PREREQ([$DEFAULT_AUTOCONF_MINVERSION]) to your configure.ac." ;;
+ esac
+
# Remove trailing slashes from the directory names. This is necessary for
# m4base (to avoid an error in func_import) and optional for the others.
sed_trimtrailingslashes='s,\([^/]\)//*$,\1,'
case "$m4base" in
*/ ) m4base=`echo "$m4base" | sed -e "$sed_trimtrailingslashes"` ;;
esac
+ case "$docbase" in
+ */ ) docbase=`echo "$docbase" | sed -e "$sed_trimtrailingslashes"` ;;
+ esac
case "$testsbase" in
*/ ) testsbase=`echo "$testsbase" | sed -e "$sed_trimtrailingslashes"` ;;
esac
done
gnulib_dir=`echo "$self_abspathname" | sed -e 's,/[^/]*$,,'`
+func_tmpdir
+trap 'rm -rf "$tmp"' 0 1 2 3 15
+
+# func_lookup_file file
+# looks up a file in $local_gnulib_dir or $gnulib_dir, or combines it through
+# 'patch'.
+# Output:
+# - lookedup_file name of the merged (combined) file
+# - lookedup_tmp true if it is located in the tmp directory, blank otherwise
+func_lookup_file ()
+{
+ lkfile="$1"
+ if test -n "$local_gnulib_dir" && test -f "$local_gnulib_dir/$lkfile"; then
+ lookedup_file="$local_gnulib_dir/$lkfile"
+ lookedup_tmp=
+ else
+ if test -f "$gnulib_dir/$lkfile"; then
+ if test -n "$local_gnulib_dir" && test -f "$local_gnulib_dir/$lkfile.diff"; then
+ lkbase=`echo "$lkfile" | sed -e 's,^.*/,,'`
+ rm -f "$tmp/$lkbase"
+ cp "$gnulib_dir/$lkfile" "$tmp/$lkbase"
+ patch -s "$tmp/$lkbase" < "$local_gnulib_dir/$lkfile.diff" \
+ || func_fatal_error "patch file $local_gnulib_dir/$lkfile.diff didn't apply cleanly"
+ lookedup_file="$tmp/$lkbase"
+ lookedup_tmp=true
+ else
+ lookedup_file="$gnulib_dir/$lkfile"
+ lookedup_tmp=
+ fi
+ else
+ func_fatal_error "file $gnulib_dir/$lkfile not found"
+ fi
+ fi
+}
+
# func_all_modules
func_all_modules ()
{
# Filter out metainformation files like README, which are not modules.
# Filter out unit test modules; they can be retrieved through
# --extract-tests-module if desired.
- (cd "$gnulib_dir/modules" && ls -1) \
+ {
+ (cd "$gnulib_dir/modules" && ls -1)
+ if test -n "$local_gnulib_dir" && test -d "$local_gnulib_dir/modules"; then
+ (cd "$local_gnulib_dir/modules" && ls -1 | sed -e 's,\.diff$,,')
+ fi
+ } \
| sed -e '/^CVS$/d' -e '/^ChangeLog$/d' -e '/^README$/d' -e '/^TEMPLATE$/d' -e '/^TEMPLATE-TESTS$/d' -e '/~$/d' \
| sed -e '/-tests$/d' \
- | LC_ALL=C sort
+ | LC_ALL=C sort \
+ | LC_ALL=C uniq
}
# func_verify_module
# verifies a module name
func_verify_module ()
{
- if test ! -f "$gnulib_dir/modules/$module" \
+ if ! { test -f "$gnulib_dir/modules/$module" \
+ || { test -n "$local_gnulib_dir" && test -d "$local_gnulib_dir/modules" \
+ && test -f "$local_gnulib_dir/modules/$module"; }; } \
|| test "CVS" = "$module" \
|| test "ChangeLog" = "$module" \
|| test "README" = "$module" \
esac
}
-sed_extract_prog=':[ ]*$/ {
+sed_extract_prog=':[ ]*$/ {
:a
n
- s/^Description:[ ]*$//
- s/^Files:[ ]*$//
- s/^Depends-on:[ ]*$//
- s/^configure\.ac:[ ]*$//
- s/^Makefile\.am:[ ]*$//
- s/^Include:[ ]*$//
- s/^License:[ ]*$//
- s/^Maintainer:[ ]*$//
+ s/^Description:[ ]*$//
+ s/^Files:[ ]*$//
+ s/^Depends-on:[ ]*$//
+ s/^configure\.ac:[ ]*$//
+ s/^Makefile\.am:[ ]*$//
+ s/^Include:[ ]*$//
+ s/^License:[ ]*$//
+ s/^Maintainer:[ ]*$//
tb
p
ba
# func_get_description module
func_get_description ()
{
- sed -n -e "/^Description$sed_extract_prog" < "$gnulib_dir/modules/$1"
+ func_lookup_file "modules/$1"
+ sed -n -e "/^Description$sed_extract_prog" < "$lookedup_file"
}
# func_get_filelist module
func_get_filelist ()
{
- sed -n -e "/^Files$sed_extract_prog" < "$gnulib_dir/modules/$1"
- #echo m4/onceonly.m4
- #echo m4/onceonly_2_57.m4
+ func_lookup_file "modules/$1"
+ sed -n -e "/^Files$sed_extract_prog" < "$lookedup_file"
+ case "$autoconf_minversion" in
+ 2.59)
+ #echo m4/onceonly.m4
+ echo m4/onceonly_2_57.m4
+ ;;
+ esac
}
# func_get_dependencies module
# ${module}-tests always implicitly depends on ${module}.
echo "$1" | sed -n -e 's/-tests//p'
# Then the explicit dependencies listed in the module description.
- sed -n -e "/^Depends-on$sed_extract_prog" < "$gnulib_dir/modules/$1"
+ func_lookup_file "modules/$1"
+ sed -n -e "/^Depends-on$sed_extract_prog" < "$lookedup_file"
}
# func_get_autoconf_snippet module
func_get_autoconf_snippet ()
{
- sed -n -e "/^configure\.ac$sed_extract_prog" < "$gnulib_dir/modules/$1"
+ func_lookup_file "modules/$1"
+ sed -n -e "/^configure\.ac$sed_extract_prog" < "$lookedup_file"
}
# func_get_automake_snippet module
func_get_automake_snippet ()
{
- sed -n -e "/^Makefile\.am$sed_extract_prog" < "$gnulib_dir/modules/$1"
+ func_lookup_file "modules/$1"
+ sed -n -e "/^Makefile\.am$sed_extract_prog" < "$lookedup_file"
}
# func_get_include_directive module
func_get_include_directive ()
{
- sed -n -e "/^Include$sed_extract_prog" < "$gnulib_dir/modules/$1" | \
+ func_lookup_file "modules/$1"
+ sed -n -e "/^Include$sed_extract_prog" < "$lookedup_file" | \
sed -e 's/^\(["<]\)/#include \1/'
}
# func_get_license module
func_get_license ()
{
- sed -n -e "/^License$sed_extract_prog" < "$gnulib_dir/modules/$1"
+ func_lookup_file "modules/$1"
+ sed -n -e "/^License$sed_extract_prog" < "$lookedup_file"
}
# func_get_maintainer module
func_get_maintainer ()
{
- sed -n -e "/^Maintainer$sed_extract_prog" < "$gnulib_dir/modules/$1"
+ func_lookup_file "modules/$1"
+ sed -n -e "/^Maintainer$sed_extract_prog" < "$lookedup_file"
}
# func_get_tests_module module
func_verify_nontests_module
if test -n "$module"; then
# Extract the value of "lib_SOURCES += ...".
- for file in `func_get_automake_snippet "$module" | sed -e "$sed_remove_backslash_newline" | sed -n -e 's,^lib_SOURCES[ ]*+=\([^#]*\).*$,\1,p'`; do
+ for file in `func_get_automake_snippet "$module" | sed -e "$sed_remove_backslash_newline" | sed -n -e 's,^lib_SOURCES[ ]*+=\([^#]*\).*$,\1,p'`; do
# Ignore .h files since they are not compiled.
case "$file" in
*.h) ;;
# Input:
# - modules list of modules, including dependencies
# - libname library name
-# - libtool true if libtool will be used, blank otherwise
+# - libtool true if libtool will be used, false or blank otherwise
# - actioncmd (optional) command that will reproduce this invocation
func_emit_lib_Makefile_am ()
{
- if test -n "$libtool"; then
+ if test "$libtool" = true; then
libext=la
perhapsLT=LT
else
fi
} > amsnippet.tmp
# Skip the contents if its entirely empty.
- if grep '[^ ]' amsnippet.tmp > /dev/null ; then
+ if grep '[^ ]' amsnippet.tmp > /dev/null ; then
echo "## begin gnulib module $module"
echo
cat amsnippet.tmp
# Input:
# - modules list of modules, including dependencies
# - libname library name
-# - libtool true if libtool will be used, blank otherwise
+# - libtool true if libtool will be used, false or blank otherwise
# - sourcebase relative directory containing lib source code
# - m4base relative directory containing autoconf macros
# - testsbase relative directory containing unit test code
func_emit_tests_Makefile_am ()
{
- if test -n "$libtool"; then
+ if test "$libtool" = true; then
libext=la
else
libext=a
if test -n "$module"; then
func_get_automake_snippet "$module" > amsnippet.tmp
# Skip the contents if its entirely empty.
- if grep '[^ ]' amsnippet.tmp > /dev/null ; then
+ if grep '[^ ]' amsnippet.tmp > /dev/null ; then
echo "## begin gnulib module $module"
echo
cat amsnippet.tmp
# - libname library name
# - sourcebase directory relative to destdir where to place source code
# - m4base directory relative to destdir where to place *.m4 macros
+# - docbase directory relative to destdir where to place doc files
# - testsbase directory relative to destdir where to place unit test code
# - auxdir directory relative to destdir where to place build aux files
# - inctests true if --with-tests was given, blank otherwise
# - avoidlist list of modules to avoid, from --avoid
# - lgpl true if library's license shall be LGPL, blank otherwise
-# - libtool true if libtool will be used, blank otherwise
-# - guessed_libtool true if the configure.ac file uses libtool, blank otherwise
+# - libtool true if --libtool was given, false if --no-libtool was
+# given, blank otherwise
+# - guessed_libtool true if the configure.ac file uses libtool, false otherwise
# - macro_prefix prefix of gl_EARLY, gl_INIT macros to use
+# - autoconf_minversion minimum supported autoconf version
# - doit : if actions shall be executed, false if only to be printed
# - symbolic true if files should be symlinked, copied otherwise
func_import ()
cached_avoidlist=
cached_sourcebase=
cached_m4base=
+ cached_docbase=
cached_testsbase=
cached_libname=
cached_lgpl=
cached_macro_prefix=
cached_files=
if test -f "$destdir"/$m4base/gnulib-cache.m4; then
+ cached_libtool=false
my_sed_traces='
s,#.*$,,
s,^dnl .*$,,
/gl_M4_BASE(/ {
s,^.*gl_M4_BASE([[ ]*\([^])]*\).*$,cached_m4base="\1",p
}
+ /gl_DOC_BASE(/ {
+ s,^.*gl_DOC_BASE([[ ]*\([^])]*\).*$,cached_docbase="\1",p
+ }
/gl_TESTS_BASE(/ {
s,^.*gl_TESTS_BASE([[ ]*\([^])]*\).*$,cached_testsbase="\1",p
}
func_fatal_error "missing --source-base option"
fi
fi
+ # The docbase defaults to the cached one.
+ if test -z "$docbase"; then
+ 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
# The testsbase defaults to the cached one.
if test -z "$testsbase"; then
testsbase="$cached_testsbase"
echo "Create directory $destdir/$m4base"
fi
fi
+ docfiles=`echo "$files" | sed -n -e 's,^doc/,,p'`
+ if test -n "$docfiles"; then
+ if test ! -d "$destdir/$docbase"; then
+ if $doit; then
+ echo "Creating directory $destdir/$docbase"
+ mkdir "$destdir/$docbase" || func_fatal_error "failed"
+ else
+ echo "Create directory $destdir/$docbase"
+ fi
+ fi
+ fi
if test -n "$inctests"; then
if test ! -d "$destdir/$testsbase"; then
if $doit; then
fi
fi
- func_tmpdir
- trap 'rm -rf "$tmp"' 0 1 2 3 15
# func_dest_tmpfilename file
# determines the name of a temporary file (file is relative to destdir).
# Sets variable:
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/,"` ;;
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/,"` ;;
func_add_or_update ()
{
func_dest_tmpfilename "$g"
- cp "$gnulib_dir/$f" "$tmpfile" || func_fatal_error "failed"
+ func_lookup_file "$f"
+ cp "$lookedup_file" "$tmpfile" || func_fatal_error "failed"
if test -n "$lgpl"; then
# Update license.
case "$f" in
lib/*)
sed -e 's/GNU General/GNU Lesser General/g' \
-e 's/version 2\([ ,]\)/version 2.1\1/g' \
- < "$gnulib_dir/$f" > "$tmpfile" || func_fatal_error "failed"
+ < "$lookedup_file" > "$tmpfile" || func_fatal_error "failed"
;;
esac
fi
echo "Replacing file $g (non-gnulib code backuped in ${g}~) !!"
fi
mv -f "$destdir/$g" "$destdir/${g}~" || func_fatal_error "failed"
- if test -n "$symbolic" && cmp "$gnulib_dir/$f" "$tmpfile" > /dev/null; then
- func_ln_if_changed "$gnulib_dir/$f" "$destdir/$g"
+ if test -n "$symbolic" && test -z "$lookedup_tmp" \
+ && cmp "$lookedup_file" "$tmpfile" > /dev/null; then
+ func_ln_if_changed "$lookedup_file" "$destdir/$g"
else
mv -f "$tmpfile" "$destdir/${g}" || func_fatal_error "failed"
fi
# frequently that developers don't put autogenerated files into CVS.
if $doit; then
echo "Copying file $g"
- if test -n "$symbolic" && cmp "$gnulib_dir/$f" "$tmpfile" > /dev/null; then
- func_ln_if_changed "$gnulib_dir/$f" "$destdir/$g"
+ if test -n "$symbolic" && test -z "$lookedup_tmp" \
+ && cmp "$lookedup_file" "$tmpfile" > /dev/null; then
+ func_ln_if_changed "$lookedup_file" "$destdir/$g"
else
mv -f "$tmpfile" "$destdir/${g}" || func_fatal_error "failed"
fi
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/,"` ;;
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/,"` ;;
actioncmd="$actioncmd --lib=$libname"
actioncmd="$actioncmd --source-base=$sourcebase"
actioncmd="$actioncmd --m4-base=$m4base"
+ actioncmd="$actioncmd --doc-base=$docbase"
actioncmd="$actioncmd --aux-dir=$auxdir"
for module in $avoidlist; do
actioncmd="$actioncmd --avoid=$module"
if test -n "$lgpl"; then
actioncmd="$actioncmd --lgpl"
fi
- if test -n "$libtool"; then
+ if test "$libtool" = true; then
actioncmd="$actioncmd --libtool"
+ else
+ actioncmd="$actioncmd --no-libtool"
fi
actioncmd="$actioncmd --macro-prefix=$macro_prefix"
actioncmd="$actioncmd `echo $specified_modules`"
echo "gl_AVOID([$avoidlist])"
echo "gl_SOURCE_BASE([$sourcebase])"
echo "gl_M4_BASE([$m4base])"
+ echo "gl_DOC_BASE([$docbase])"
echo "gl_TESTS_BASE([$testsbase])"
echo "gl_LIB([$libname])"
test -z "$lgpl" || echo "gl_LGPL"
- test -z "$libtool" || echo "gl_LIBTOOL"
+ if test "$libtool" = true; then
+ echo "gl_LIBTOOL"
+ fi
echo "gl_MACRO_PREFIX([$macro_prefix])"
) > "$tmpfile"
if test -f "$destdir"/$m4base/gnulib-cache.m4; then
echo "# \"Check for header files, types and library functions\"."
echo "AC_DEFUN([${macro_prefix}_INIT],"
echo "["
- if test -z "$libtool"; then
- echo " AM_CONDITIONAL([GL_COND_LIBTOOL], [false])"
- else
+ if test "$libtool" = true; then
echo " AM_CONDITIONAL([GL_COND_LIBTOOL], [true])"
+ else
+ echo " AM_CONDITIONAL([GL_COND_LIBTOOL], [false])"
fi
if test "$auxdir" != "build-aux"; then
sed_replace_build_aux='
| sed -e '/^$/d;' -e 's/^/ /' \
-e 's/AM_GNU_GETTEXT(\[external\])/dnl you must add AM_GNU_GETTEXT([external]) or similar to configure.ac./' \
-e "$sed_replace_build_aux"
- if test "$module" = 'alloca' && test -n "$libtool"; then
+ if test "$module" = 'alloca' && test "$libtool" = true; then
echo 'changequote(,)dnl'
echo 'LTALLOCA=`echo "$ALLOCA" | sed '"'"'s/\.[^.]* /.lo /g;s/\.[^.]*$/.lo/'"'"'`'
echo 'changequote([, ])dnl'
fi
fi
- 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
- # 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
-
echo "Finished."
echo
echo "You may need to add #include directives for the following .h files."
# 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/,"` ;;
*) g="$f" ;;
esac
- ln "$gnulib_dir/$f" "$testdir/$g" 2>/dev/null ||
- if test -z "$symbolic"; then
- cp -p "$gnulib_dir/$f" "$testdir/$g"
+ if test -n "$lookedup_tmp"; then
+ cp -p "$lookedup_file" "$testdir/$g"
else
- ln -s "$gnulib_dir/$f" "$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
done
echo "gl_LOCK"
echo
fi
- if test -z "$libtool"; then
- echo "AM_CONDITIONAL([GL_COND_LIBTOOL], [false])"
- else
+ if test "$libtool" = true; then
echo "AM_CONDITIONAL([GL_COND_LIBTOOL], [true])"
+ else
+ echo "AM_CONDITIONAL([GL_COND_LIBTOOL], [false])"
fi
if test "$auxdir" != "build-aux"; then
sed_replace_build_aux='
echo "gl_LOCK"
echo
fi
- if test -z "$libtool"; then
- echo "AM_CONDITIONAL([GL_COND_LIBTOOL], [false])"
- else
+ if test "$libtool" = true; then
echo "AM_CONDITIONAL([GL_COND_LIBTOOL], [true])"
+ else
+ echo "AM_CONDITIONAL([GL_COND_LIBTOOL], [false])"
fi
if test "$auxdir" != "build-aux"; then
sed_replace_build_aux='
fi
fi
- test -f "$destdir"/Makefile.am \
- || func_fatal_error "cannot find $destdir/Makefile.am"
-
# Analyze configure.ac.
guessed_auxdir="."
- guessed_libtool=
+ guessed_libtool=false
my_sed_traces='
s,#.*$,,
s,^dnl .*$,,
# 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
# 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.)
- aclocal_amflags=`grep '^ACLOCAL_AMFLAGS[ ]*=' "$destdir"/Makefile.am | sed -e 's/^ACLOCAL_AMFLAGS[ ]*=\(.*\)$/\1/'`
m4dirs=
m4dirs_count=0
- 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
- m4dirs="$m4dirs $arg"
- m4dirs_count=`expr $m4dirs_count + 1`
- fi
- ;;
- esac
- else
- if test "X$arg" = "X-I"; then
- m4dir_is_next=yes
+ if test -f "$destdir"/Makefile.am; then
+ aclocal_amflags=`grep '^ACLOCAL_AMFLAGS[ ]*=' "$destdir"/Makefile.am | sed -e 's/^ACLOCAL_AMFLAGS[ ]*=\(.*\)$/\1/'`
+ 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
+ m4dirs="$m4dirs $arg"
+ m4dirs_count=`expr $m4dirs_count + 1`
+ fi
+ ;;
+ esac
else
- m4dir_is_next=
+ 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 | LC_ALL=C uniq`
+ m4dirs_count=`echo "$m4dirs" | wc -l`
fi
- done
+ 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 "$*"
func_fatal_error "unknown operation mode --$mode" ;;
esac
+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
+# 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
+
exit 0