#! /bin/sh
#
-# Copyright (C) 2002-2007 Free Software Foundation, Inc.
+# Copyright (C) 2002-2008 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
progname=$0
package=gnulib
-cvsdatestamp='$Date: 2007-09-17 10:26:33 $'
-last_checkin_date=`echo "$cvsdatestamp" | sed -e 's,^\$[D]ate: ,,'`
-# Sometimes last_checkin_date is "YYYY/MM/DD ...", sometimes "YYYY-MM-DD ...".
-version=`echo "$last_checkin_date" | sed -e 's/ .*$//' -e 's,/,-,g'`
-# version is in YYYY-MM-DD format.
nl='
'
IFS=" "" $nl"
alias sed='sed --posix'
fi
+# sed_noop is a sed expression that does nothing.
+# An empty expression does not work with the native 'sed' on AIX 6.1.
+sed_noop='s,x,x,'
+
# func_usage
# outputs to stdout the --help usage message.
func_usage ()
'gl_INIT'. Default is 'gl'.
--po-domain=NAME Specify the prefix of the i18n domain. Usually use
the package name. A suffix '-gnulib' is appended.
- --no-changelog don't update or create ChangeLog files
+ --vc-files Update version control related files.
+ --no-vc-files Don't update version control related files
+ (.gitignore and/or .cvsignore).
+ --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.
# outputs to stdout the --version message.
func_version ()
{
- year=`echo "$version" | sed -e 's,-.*$,,'`
+ func_gnulib_dir
+ if test -d "$gnulib_dir"/.git \
+ && (git --version) >/dev/null 2>/dev/null \
+ && (date --version) >/dev/null 2>/dev/null; then
+ # gnulib checked out from git.
+ sed_extract_first_date='/^Date/{
+s/^Date:[ ]*//p
+q
+}'
+ date=`cd "$gnulib_dir" && git log ChangeLog | sed -n -e "$sed_extract_first_date"`
+ # Turn "Fri Mar 21 07:16:51 2008 -0600" into "Mar 21 2008 07:16:51 -0600".
+ sed_year_before_time='s/^[^ ]* \([^ ]*\) \([0-9]*\) \([0-9:]*\) \([0-9]*\) /\1 \2 \4 \3 /'
+ date=`echo "$date" | sed -e "$sed_year_before_time"`
+ # Use GNU date to compute the time in GMT.
+ date=`date -d "$date" -u +"%Y-%m-%d %H:%M:%S"`
+ version=' '`cd "$gnulib_dir" && ./build-aux/git-version-gen /dev/null | sed -e 's/-dirty/-modified/'`
+ else
+ if test -d "$gnulib_dir"/CVS \
+ && (cvs --version) >/dev/null 2>/dev/null; then
+ # gnulib checked out from CVS.
+ sed_extract_first_date='/^date: /{
+s/^date: \([0-9][0-9][0-9][0-9]\).\([0-9][0-9]\).\([0-9][0-9]\) \([0-9][0-9]:[0-9][0-9]:[0-9][0-9]\).*/\1-\2-\3 \4/p
+q
+}'
+ date=`cd "$gnulib_dir" && cvs log -N ChangeLog 2>/dev/null | sed -n -e "$sed_extract_first_date"`
+ else
+ # gnulib copy without versioning information.
+ date=`sed -e 's/ .*//;q' "$gnulib_dir"/ChangeLog`
+ fi
+ version=
+ fi
+ year=`"$gnulib_dir"/build-aux/mdate-sh "$self_abspathname" | sed 's,^.* ,,'`
echo "\
-$progname (GNU $package) $version
+gnulib-tool (GNU $package $date)$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.
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+
Written by" "Bruno Haible" "and" "Simon Josefsson"
}
# outputs to stdout a header for a generated file.
func_emit_copyright_notice ()
{
- echo "# Copyright (C) 2004-2007 Free Software Foundation, Inc."
+ sed -n '/Copyright/ {
+ p
+ q
+ }' < "$self_abspathname"
echo "#"
echo "# This file is free software, distributed under the terms of the GNU"
echo "# General Public License. As a special exception to the GNU General"
}
# func_exit STATUS
-# exit with status
+# exits with a given status.
+# This function needs to be used, rather than 'exit', when a 'trap' handler is
+# in effect that refers to $?.
func_exit ()
{
(exit $1); exit $1
}
+# func_gnulib_dir
+# locates the directory where the gnulib repository lives
+# Input:
+# - progname name of this program
+# Sets variables
+# - self_abspathname absolute pathname of gnulib-tool
+# - gnulib_dir absolute pathname of gnulib repository
+func_gnulib_dir ()
+{
+ case "$progname" in
+ /*) self_abspathname="$progname" ;;
+ */*) self_abspathname=`pwd`/"$progname" ;;
+ *)
+ # Look in $PATH.
+ # Iterate through the elements of $PATH.
+ # We use IFS=: instead of
+ # for d in `echo ":$PATH:" | sed -e 's/:::*/:.:/g' | sed -e 's/:/ /g'`
+ # because the latter does not work when some PATH element contains spaces.
+ # We use a canonicalized $pathx instead of $PATH, because empty PATH
+ # elements are by definition equivalent to '.', however field splitting
+ # according to IFS=: loses empty fields in many shells:
+ # - /bin/sh on OSF/1 and Solaris loses all empty fields (at the
+ # beginning, at the end, and in the middle),
+ # - /bin/sh on IRIX and /bin/ksh on IRIX and OSF/1 lose empty fields
+ # at the beginning and at the end,
+ # - GNU bash, /bin/sh on AIX and HP-UX, and /bin/ksh on AIX, HP-UX,
+ # Solaris lose empty fields at the end.
+ # The 'case' statement is an optimization, to avoid evaluating the
+ # 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"
+ fi
+ if test "$PATH_SEPARATOR" = ";"; then
+ # On Windows, programs are searched in "." before $PATH.
+ pathx=".;$PATH"
+ else
+ # On Unix, we have to convert empty PATH elements to ".".
+ pathx="$PATH"
+ case :$PATH: in
+ *::*)
+ pathx=`echo ":$PATH:" | sed -e 's/:::*/:.:/g' -e 's/^://' -e 's/:\$//'`
+ ;;
+ esac
+ fi
+ save_IFS="$IFS"
+ IFS="$PATH_SEPARATOR"
+ for d in $pathx; do
+ IFS="$save_IFS"
+ test -z "$d" && d=.
+ if test -x "$d/$progname" && test ! -d "$d/$progname"; then
+ self_abspathname="$d/$progname"
+ break
+ fi
+ done
+ IFS="$save_IFS"
+ if test -z "$self_abspathname"; then
+ func_fatal_error "could not locate the gnulib-tool program - how did you invoke it?"
+ fi
+ ;;
+ esac
+ while test -h "$self_abspathname"; do
+ # Resolve symbolic link.
+ linkval=`func_readlink "$self_abspathname"`
+ test -n "$linkval" || break
+ case "$linkval" in
+ /* ) self_abspathname="$linkval" ;;
+ * ) self_abspathname=`echo "$self_abspathname" | sed -e 's,/[^/]*$,,'`/"$linkval" ;;
+ esac
+ done
+ gnulib_dir=`echo "$self_abspathname" | sed -e 's,/[^/]*$,,'`
+}
+
# func_tmpdir
# creates a temporary directory.
+# Input:
+# - progname name of this program
# Sets variable
# - tmp pathname of freshly created temporary directory
func_tmpdir ()
(umask 077 && mkdir "$tmp")
} ||
{
- echo "$0: cannot create a temporary directory in $TMPDIR" >&2
+ echo "$progname: cannot create a temporary directory in $TMPDIR" >&2
func_exit 1
}
}
# func_fatal_error message
# outputs to stderr a fatal error message, and terminates the program.
+# Input:
+# - progname name of this program
func_fatal_error ()
{
- echo "gnulib-tool: *** $1" 1>&2
- echo "gnulib-tool: *** Stop." 1>&2
+ echo "$progname: *** $1" 1>&2
+ echo "$progname: *** Stop." 1>&2
func_exit 1
}
fi
}
+# func_reset_sigpipe
+# Resets SIGPIPE to its default behaviour. SIGPIPE is signalled when a process
+# writes into a pipe with no readers, i.e. a pipe where all readers have
+# already closed their file descriptor that read from it or exited entirely.
+# The default behaviour is to terminate the current process without an error
+# message.
+# When "trap '' SIGPIPE" is in effect, the behaviour (at least with bash) is to
+# terminate the current process with an error message.
+# This function should be called at the beginning of a command that only
+# produces output to stdout (i.e. no side effects!), when the command that
+# will read from this pipe might prematurely exit or close its standard input
+# descriptor.
+if test -n "$BASH_VERSION"; then
+ # The problem has only been reported with bash.
+ # Note that Solaris sh does not understand "trap - SIGPIPE".
+ func_reset_sigpipe ()
+ {
+ trap - SIGPIPE
+ }
+else
+ func_reset_sigpipe ()
+ {
+ :
+ }
+fi
+
# Ensure an 'echo' command that does not interpret backslashes.
# Test cases:
# echo '\n' | wc -l prints 1 when OK, 2 when KO
# given, blank otherwise
# - macro_prefix from --macro-prefix
# - po_domain from --po-domain
+# - vc_files true if --vc-files was given, false if --no-vc-files was
+# given, blank otherwise
# - 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
libtool=
macro_prefix=
po_domain=
+ vc_files=
do_changelog=:
doit=:
symbolic=
--po-domain=* )
po_domain=`echo "X$1" | sed -e 's/^X--po-domain=//'`
shift ;;
+ --vc-files )
+ vc_files=true
+ shift ;;
+ --no-vc-files )
+ vc_files=false
+ shift ;;
--no-changelog | --no-changelo | --no-changel | --no-change | --no-chang | --no-chan | --no-cha | --no-ch | --no-c )
do_changelog=false
shift ;;
|| test -n "$docbase" || test -n "$testsbase" || test -n "$auxdir" \
|| test -n "$inctests" || test -n "$avoidlist" || test -n "$lgpl" \
|| test -n "$makefile_name" || test -n "$macro_prefix" \
- || test -n "$po_domain"; then
+ || test -n "$po_domain" || test -n "$vc_files"; then
echo "gnulib-tool: invalid options for 'update' mode" 1>&2
echo "Try 'gnulib-tool --help' for more information." 1>&2
echo "If you really want to modify the gnulib configuration of your project," 1>&2
esac
}
-case "$0" in
- /*) self_abspathname="$0" ;;
- */*) self_abspathname=`pwd`/"$0" ;;
- *)
- # Look in $PATH.
- # Iterate through the elements of $PATH.
- # We use IFS=: instead of
- # for d in `echo ":$PATH:" | sed -e 's/:::*/:.:/g' | sed -e 's/:/ /g'`
- # because the latter does not work when some PATH element contains spaces.
- # We use a canonicalized $pathx instead of $PATH, because empty PATH
- # elements are by definition equivalent to '.', however field splitting
- # according to IFS=: loses empty fields in many shells:
- # - /bin/sh on OSF/1 and Solaris loses all empty fields (at the
- # beginning, at the end, and in the middle),
- # - /bin/sh on IRIX and /bin/ksh on IRIX and OSF/1 lose empty fields
- # at the beginning and at the end,
- # - GNU bash, /bin/sh on AIX and HP-UX, and /bin/ksh on AIX, HP-UX,
- # Solaris lose empty fields at the end.
- # The 'case' statement is an optimization, to avoid evaluating the
- # 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"
- fi
- if test "$PATH_SEPARATOR" = ";"; then
- # On Windows, programs are searched in "." before $PATH.
- pathx=".;$PATH"
- else
- # On Unix, we have to convert empty PATH elements to ".".
- pathx="$PATH"
- case :$PATH: in
- *::*)
- pathx=`echo ":$PATH:" | sed -e 's/:::*/:.:/g' -e 's/^://' -e 's/:\$//'`
- ;;
- esac
- fi
- save_IFS="$IFS"
- IFS="$PATH_SEPARATOR"
- for d in $pathx; do
- IFS="$save_IFS"
- test -z "$d" && d=.
- if test -x "$d/$0" && test ! -d "$d/$0"; then
- self_abspathname="$d/$0"
- break
- fi
- done
- IFS="$save_IFS"
- if test -z "$self_abspathname"; then
- func_fatal_error "could not locate the gnulib-tool program - how did you invoke it?"
- fi
- ;;
-esac
-while test -h "$self_abspathname"; do
- # Resolve symbolic link.
- linkval=`func_readlink "$self_abspathname"`
- test -n "$linkval" || break
- case "$linkval" in
- /* ) self_abspathname="$linkval" ;;
- * ) self_abspathname=`echo "$self_abspathname" | sed -e 's,/[^/]*$,,'`/"$linkval" ;;
- esac
-done
-gnulib_dir=`echo "$self_abspathname" | sed -e 's,/[^/]*$,,'`
-
+func_gnulib_dir
func_tmpdir
trap 'exit_status=$?
if test "$signal" != 0; then
echo m4/gnulib-common.m4
case "$autoconf_minversion" in
2.59)
- #echo m4/onceonly.m4
- echo m4/onceonly_2_57.m4
+ echo m4/onceonly.m4
;;
esac
}
done | sed -e 's,^lib/,,'`
# Remove $already_mentioned_files from $lib_files.
echo "$lib_files" | LC_ALL=C sort -u > "$tmp"/lib-files
- extra_files=`for f in $already_mentioned_files; do echo $f; done \
+ extra_files=`func_reset_sigpipe; \
+ for f in $already_mentioned_files; do echo $f; done \
| LC_ALL=C sort -u | LC_ALL=C join -v 2 - "$tmp"/lib-files`
if test -n "$extra_files"; then
echo "EXTRA_DIST +=" $extra_files
echo "EXTRA_DIST += "`echo "$buildaux_files" | sed -e "$sed_prepend_auxdir"`
echo
fi
+ # Synthesize an EXTRA_DIST augmentation also for the files from top/.
+ top_files=`for f in $all_files; do \
+ case $f in \
+ top/*) echo $f ;; \
+ esac; \
+ done | sed -e 's,^top/,,'`
+ if test -n "$top_files"; then
+ sed_prepend_topdir='s,^,$(top_srcdir)/,'
+ echo "EXTRA_DIST += "`echo "$top_files" | sed -e "$sed_prepend_topdir"`
+ echo
+ fi
;;
esac
}
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`
+ inmodules=`func_reset_sigpipe; 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
echo "executing $*"
"$@"
else
- # Commands like automake produce output to stderr even when the succeed.
+ # Commands like automake produce output to stderr even when they succeed.
# Turn this output off if the command succeeds.
"$@" > "$tmp"/cmdout 2>&1
cmdret=$?
# - po_domain prefix of i18n domain to use (without -gnulib suffix)
# - actioncmd (optional) command that will reproduce this invocation
# - for_test true if creating a package for testing, false otherwise
+# - destfile filename relative to destdir of makefile being generated
+# Input/Output:
+# - makefile_am_edits and makefile_am_edit${edit}_{dir,var,val}
+# list of edits to be done to Makefile.am variables
# Output:
# - uses_subdirs nonempty if object files in subdirs exist
func_emit_lib_Makefile_am ()
if test "$libtool" = true; then
libext=la
perhapsLT=LT
- sed_eliminate_LDFLAGS=
+ sed_eliminate_LDFLAGS="$sed_noop"
else
libext=a
perhapsLT=
# situation. Turn check_PROGRAMS into noinst_PROGRAMS.
sed_transform_check_PROGRAMS='s,check_PROGRAMS,noinst_PROGRAMS,g'
else
- sed_transform_check_PROGRAMS=
+ sed_transform_check_PROGRAMS="$sed_noop"
fi
echo "## DO NOT EDIT! GENERATED AUTOMATICALLY!"
echo "## Process this file with automake to produce Makefile.in."
echo "${libname}_${libext}_DEPENDENCIES += @${perhapsLT}ALLOCA@"
fi
} > amsnippet.tmp
- # Skip the contents if its entirely empty.
+ # Skip the contents if it's entirely empty.
if grep '[^ ]' amsnippet.tmp > /dev/null ; then
echo "## begin gnulib module $module"
echo
fi
echo
if test -z "$makefile_name"; then
+ echo "SUBDIRS ="
echo "noinst_HEADERS ="
echo "noinst_LIBRARIES ="
echo "noinst_LTLIBRARIES ="
echo "CLEANFILES ="
echo "DISTCLEANFILES ="
echo "MAINTAINERCLEANFILES ="
+ fi
+ # Execute edits that apply to the Makefile.am being generated.
+ edit=0
+ while test $edit != $makefile_am_edits; do
+ edit=`expr $edit + 1`
+ eval dir=\"\$makefile_am_edit${edit}_dir\"
+ eval var=\"\$makefile_am_edit${edit}_var\"
+ eval val=\"\$makefile_am_edit${edit}_val\"
+ if test -n "$var"; then
+ if test "${dir}Makefile.am" = "$destfile" || test "./${dir}Makefile.am" = "$destfile"; then
+ echo "${var} += ${val}"
+ eval "makefile_am_edit${edit}_var="
+ fi
+ fi
+ done
+ if test -z "$makefile_name"; then
echo
echo "AM_CPPFLAGS ="
fi
echo
- if LC_ALL=C grep "^[a-zA-Z0-9_]*_${perhapsLT}LIBRARIES *= *$libname\\.$libext\$" allsnippets.tmp > /dev/null; then
+ if LC_ALL=C grep "^[a-zA-Z0-9_]*_${perhapsLT}LIBRARIES *+\{0,1\}= *$libname\\.$libext\$" allsnippets.tmp > /dev/null; then
# One of the snippets already specifies an installation location for the
# library. Don't confuse automake by saying it should not be installed.
:
echo
echo "${libname}_${libext}_SOURCES ="
# Here we use $(LIBOBJS), not @LIBOBJS@. The value is the same. However,
- # automake during its analyses looks for $(LIBOBJS), not for @LIBOBJS@.
+ # automake during its analysis looks for $(LIBOBJS), not for @LIBOBJS@.
echo "${libname}_${libext}_LIBADD = \$(${macro_prefix}_${perhapsLT}LIBOBJS)"
echo "${libname}_${libext}_DEPENDENCIES = \$(${macro_prefix}_${perhapsLT}LIBOBJS)"
echo "EXTRA_${libname}_${libext}_SOURCES ="
}
# func_emit_po_Makevars
-# emits the contents of po/ makefile parametrization to standard output.
+# emits the contents of po/ makefile parameterization to standard output.
# Input:
# - local_gnulib_dir from --local-dir
# - sourcebase directory relative to destdir where to place source code
# - macro_prefix prefix of gl_LIBOBJS macros to use
# - for_test true if creating a package for testing, false otherwise
# - use_libtests true if a libtests.a should be built, false otherwise
+# - destfile filename relative to destdir of makefile being generated
+# Input/Output:
+# - makefile_am_edits and makefile_am_edit${edit}_{dir,var,val}
+# list of edits to be done to Makefile.am variables
# Output:
# - uses_subdirs nonempty if object files in subdirs exist
func_emit_tests_Makefile_am ()
{
if test "$libtool" = true; then
libext=la
- sed_eliminate_LDFLAGS=
+ sed_eliminate_LDFLAGS="$sed_noop"
else
libext=a
sed_eliminate_LDFLAGS='/^lib_LDFLAGS[ ]*+=/d'
# situation. Turn check_PROGRAMS into noinst_PROGRAMS.
sed_transform_check_PROGRAMS='s,check_PROGRAMS,noinst_PROGRAMS,g'
else
- sed_transform_check_PROGRAMS=
+ sed_transform_check_PROGRAMS="$sed_noop"
fi
testsbase_inverse=`echo "$testsbase" | sed -e 's,/$,,' | sed -e 's,[^/][^/]*,..,g'`
echo "## DO NOT EDIT! GENERATED AUTOMATICALLY!"
echo "libtests_a_DEPENDENCIES += @${perhapsLT}ALLOCA@"
fi
} > amsnippet.tmp
- # Skip the contents if its entirely empty.
+ # Skip the contents if it's entirely empty.
if grep '[^ ]' amsnippet.tmp > /dev/null ; then
echo "## begin gnulib module $module"
echo
echo "CLEANFILES ="
echo "DISTCLEANFILES ="
echo "MAINTAINERCLEANFILES ="
+ # Execute edits that apply to the Makefile.am being generated.
+ edit=0
+ while test $edit != $makefile_am_edits; do
+ edit=`expr $edit + 1`
+ eval dir=\"\$makefile_am_edit${edit}_dir\"
+ eval var=\"\$makefile_am_edit${edit}_var\"
+ eval val=\"\$makefile_am_edit${edit}_val\"
+ if test -n "$var"; then
+ if test "${dir}Makefile.am" = "$destfile" || test "./${dir}Makefile.am" = "$destfile"; then
+ echo "${var} += ${val}"
+ eval "makefile_am_edit${edit}_var="
+ fi
+ fi
+ done
echo
echo "AM_CPPFLAGS = \\"
echo " -I. -I\$(srcdir) \\"
echo " -I${testsbase_inverse} -I\$(srcdir)/${testsbase_inverse} \\"
echo " -I${testsbase_inverse}/${sourcebase-lib} -I\$(srcdir)/${testsbase_inverse}/${sourcebase-lib}"
echo
- local_ldadd=''
+ local_ldadd_before=''
+ local_ldadd_after=''
if $use_libtests; then
- local_ldadd=' libtests.a $(LIBTESTS_LIBDEPS)'
+ # All test programs need to be linked with libtests.a.
+ # It needs to be passed to the linker before ${libname}.${libext}, since
+ # the tests-related modules depend on the main modules.
+ # It also needs to be passed to the linker after ${libname}.${libext}
+ # because the latter might contain incomplete modules (such as the 'error'
+ # module whose dependency to 'progname' is voluntarily omitted).
+ # The LIBTESTS_LIBDEPS can be passed to the linker once or twice, it does
+ # not matter.
+ local_ldadd_before=' libtests.a'
+ local_ldadd_after=' libtests.a $(LIBTESTS_LIBDEPS)'
fi
- echo "LDADD =${local_ldadd} ${testsbase_inverse}/${sourcebase-lib}/${libname}.${libext}"
+ echo "LDADD =${local_ldadd_before} ${testsbase_inverse}/${sourcebase-lib}/${libname}.${libext}${local_ldadd_after}"
echo
if $use_libtests; then
echo "libtests_a_SOURCES ="
# Here we use $(LIBOBJS), not @LIBOBJS@. The value is the same. However,
- # automake during its analyses looks for $(LIBOBJS), not for @LIBOBJS@.
+ # automake during its analysis looks for $(LIBOBJS), not for @LIBOBJS@.
echo "libtests_a_LIBADD = \$(${macro_prefix}tests_LIBOBJS)"
echo "libtests_a_DEPENDENCIES = \$(${macro_prefix}tests_LIBOBJS)"
echo "EXTRA_libtests_a_SOURCES ="
+ # The circular dependency in LDADD requires this.
+ echo "AM_LIBTOOLFLAGS = --preserve-dup-deps"
echo
fi
cat allsnippets.tmp \
# We let automake know about the files to be distributed through the
# EXTRA_lib_SOURCES variable.
echo " m4_pushdef([AC_LIBSOURCES], m4_defn([${macro_prefix_arg}_LIBSOURCES]))"
+ # Create data variables for checking the presence of files that are mentioned
+ # as AC_LIBSOURCES arguments. These are m4 variables, not shell variables,
+ # because we want the check to happen when the configure file is created,
+ # not when it is run. ${macro_prefix_arg}_LIBSOURCES_LIST is the list of
+ # files to check for. ${macro_prefix_arg}_LIBSOURCES_DIR is the subdirectory
+ # in which to expect them.
+ echo " m4_pushdef([${macro_prefix_arg}_LIBSOURCES_LIST], [])"
+ echo " m4_pushdef([${macro_prefix_arg}_LIBSOURCES_DIR], [])"
+ echo " gl_COMMON"
}
# func_emit_initmacro_end macro_prefix
func_emit_initmacro_end ()
{
macro_prefix_arg="$1"
+ # Check the presence of files that are mentioned as AC_LIBSOURCES arguments.
+ # The check is performed only when autoconf is run from the directory where
+ # the configure.ac resides; if it is run from a different directory, the
+ # check is skipped.
+ echo " m4_ifval(${macro_prefix_arg}_LIBSOURCES_LIST, ["
+ echo " m4_syscmd([test ! -d ]m4_defn([${macro_prefix_arg}_LIBSOURCES_DIR])[ ||"
+ echo " for gl_file in ]${macro_prefix_arg}_LIBSOURCES_LIST[ ; do"
+ echo " if test ! -r ]m4_defn([${macro_prefix_arg}_LIBSOURCES_DIR])[/\$gl_file ; then"
+ echo " echo \"missing file ]m4_defn([${macro_prefix_arg}_LIBSOURCES_DIR])[/\$gl_file\" >&2"
+ echo " exit 1"
+ echo " fi"
+ echo " done])dnl"
+ echo " m4_if(m4_sysval, [0], [],"
+ echo " [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])])"
+ echo " ])"
+ echo " m4_popdef([${macro_prefix_arg}_LIBSOURCES_DIR])"
+ echo " m4_popdef([${macro_prefix_arg}_LIBSOURCES_LIST])"
echo " m4_popdef([AC_LIBSOURCES])"
echo " m4_popdef([AC_REPLACE_FUNCS])"
echo " m4_popdef([AC_LIBOBJ])"
echo "])"
echo
echo "# Like AC_LIBSOURCES, except the directory where the source file is"
- echo "# expected is derived from the gnulib-tool parametrization,"
+ echo "# expected is derived from the gnulib-tool parameterization,"
echo "# and alloca is special cased (for the alloca-opt module)."
echo "# We could also entirely rely on EXTRA_lib..._SOURCES."
echo "AC_DEFUN([${macro_prefix_arg}_LIBSOURCES], ["
echo " m4_foreach([_gl_NAME], [\$1], ["
echo " m4_if(_gl_NAME, [alloca.c], [], ["
- echo " m4_syscmd([test -r $sourcebase_arg/]_gl_NAME[ || test ! -d $sourcebase_arg])dnl"
- echo " m4_if(m4_sysval, [0], [],"
- echo " [AC_FATAL([missing $sourcebase_arg/]_gl_NAME)])"
+ echo " m4_define([${macro_prefix_arg}_LIBSOURCES_DIR], [$sourcebase_arg])"
+ echo " m4_append([${macro_prefix_arg}_LIBSOURCES_LIST], _gl_NAME, [ ])"
echo " ])"
echo " ])"
echo "])"
# - guessed_libtool true if the configure.ac file uses libtool, false otherwise
# - macro_prefix prefix of gl_EARLY, gl_INIT macros to use
# - po_domain prefix of i18n domain to use (without -gnulib suffix)
+# - vc_files true if --vc-files was given, false if --no-vc-files was
+# given, blank otherwise
# - 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
cached_libtool=
cached_macro_prefix=
cached_po_domain=
+ cached_vc_files=
cached_files=
if test -f "$destdir"/$m4base/gnulib-cache.m4; then
cached_libtool=false
s,^.*gl_LOCAL_DIR([[ ]*\([^])]*\).*$,cached_local_gnulib_dir="\1",p
}
/gl_MODULES(/ {
+ ta
+ :a
+ s/)/)/
+ tb
+ N
+ ba
+ :b
s,^.*gl_MODULES([[ ]*\([^])]*\).*$,cached_specified_modules="\1",p
}
/gl_AVOID(/ {
}
/gl_PO_DOMAIN(/ {
s,^.*gl_PO_DOMAIN([[ ]*\([^])]*\).*$,cached_po_domain="\1",p
+ }
+ /gl_VC_FILES(/ {
+ s,^.*gl_VC_FILES([[ ]*\([^])]*\).*$,cached_vc_files="\1",p
}'
eval `sed -n -e "$my_sed_traces" < "$destdir"/$m4base/gnulib-cache.m4`
if test -f "$destdir"/$m4base/gnulib-comp.m4; then
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
# Canonicalize the list of specified modules.
specified_modules=`for m in $specified_modules; do echo $m; done | LC_ALL=C sort -u`
fi
# Determine tests-related module list.
echo "$final_modules" | LC_ALL=C sort -u > "$tmp"/final-modules
- testsrelated_modules=`echo "$main_modules" | LC_ALL=C sort -u | LC_ALL=C join -v 2 - "$tmp"/final-modules`
+ testsrelated_modules=`func_reset_sigpipe; echo "$main_modules" | LC_ALL=C sort -u | LC_ALL=C join -v 2 - "$tmp"/final-modules`
if test $verbose -ge 1; then
echo "Tests-related module list:"
echo "$testsrelated_modules" | sed -e 's/^/ /'
# If --lgpl, verify that the licenses of modules are compatible.
if test -n "$lgpl"; then
+ license_incompatibilities=
for module in $main_modules; do
license=`func_get_license $module`
case $license in
yes | 3)
case $license in
LGPL | LGPLv2+) ;;
- *) func_fatal_error "incompatible license on module $module: $license" ;;
+ *) func_append license_incompatibilities "$module $license$nl" ;;
esac
;;
2)
case $license in
LGPLv2+) ;;
- *) func_fatal_error "incompatible license on module $module: $license" ;;
+ *) func_append license_incompatibilities "$module $license$nl" ;;
esac
;;
*) func_fatal_error "invalid value lgpl=$lgpl" ;;
;;
esac
done
+ if test -n "$license_incompatibilities"; then
+ # Format the license incompatibilities as a table.
+ sed_expand_column1_width50_indent17='s,^\([^ ]*\) ,\1 ,
+s,^\(.................................................[^ ]*\) *, \1 ,'
+ license_incompatibilities=`echo "$license_incompatibilities" | sed -e "$sed_expand_column1_width50_indent17"`
+ func_fatal_error "incompatible license on modules:$nl$license_incompatibilities"
+ fi
fi
# Show banner notice of every module.
s,^lib/,$cached_sourcebase/,
s,^m4/,$cached_m4base/,
s,^tests/,$cached_testsbase/,
- s,^tests=lib/,$cached_testsbase/,"
+ s,^tests=lib/,$cached_testsbase/,
+ s,^top/,,"
sed_rewrite_new_files="\
s,^build-aux/,$auxdir/,
s,^doc/,$docbase/,
s,^lib/,$sourcebase/,
s,^m4/,$m4base/,
s,^tests/,$testsbase/,
- s,^tests=lib/,$testsbase/,"
+ s,^tests=lib/,$testsbase/,
+ s,^top/,,"
# Create directories.
{ echo "$sourcebase"
if test -n "$already_present"; then
echo "Updating file $g (backup in ${g}~)"
else
- echo "Replacing file $g (non-gnulib code backuped in ${g}~) !!"
+ echo "Replacing file $g (non-gnulib code backed up in ${g}~) !!"
fi
mv -f "$destdir/$g" "$destdir/${g}~" || func_fatal_error "failed"
if { test -n "$symbolic" \
if test -n "$already_present"; then
echo "Update file $g (backup in ${g}~)"
else
- echo "Replace file $g (non-gnulib code backuped in ${g}~) !!"
+ echo "Replace file $g (non-gnulib code backed up in ${g}~) !!"
fi
fi
fi
func_append actioncmd " --po-base=$pobase"
fi
func_append actioncmd " --doc-base=$docbase"
+ func_append actioncmd " --tests-base=$testsbase"
func_append actioncmd " --aux-dir=$auxdir"
if test -n "$inctests"; then
func_append actioncmd " --with-tests"
if test -n "$po_domain"; then
func_append actioncmd " --po-domain=$po_domain"
fi
+ if test -n "$vc_files"; then
+ if test "$vc_files" = true; then
+ func_append actioncmd " --vc-files"
+ else
+ func_append actioncmd " --no-vc-files"
+ fi
+ fi
func_append actioncmd " `echo $specified_modules`"
# Default the makefile name to Makefile.am.
# Create normal Makefile.ams.
for_test=false
+ # Setup list of Makefile.am edits that are to be performed afterwards.
+ # Some of these edits apply to files that we will generate; others are
+ # under the responsibility of the developer.
+ makefile_am_edits=0
+ # func_note_Makefile_am_edit dir var value
+ # remembers that ${dir}Makefile.am needs to be edited to that ${var} mentions
+ # ${value}.
+ func_note_Makefile_am_edit ()
+ {
+ makefile_am_edits=`expr $makefile_am_edits + 1`
+ eval makefile_am_edit${makefile_am_edits}_dir=\"\$1\"
+ eval makefile_am_edit${makefile_am_edits}_var=\"\$2\"
+ eval makefile_am_edit${makefile_am_edits}_val=\"\$3\"
+ }
+ if test "$makefile_am" = Makefile.am; then
+ sourcebase_dir=`echo "$sourcebase" | sed -n -e 's,/[^/]*$,/,p'`
+ sourcebase_base=`basename "$sourcebase"`
+ func_note_Makefile_am_edit "$sourcebase_dir" SUBDIRS "$sourcebase_base"
+ fi
+ if test -n "$pobase"; then
+ pobase_dir=`echo "$pobase" | sed -n -e 's,/[^/]*$,/,p'`
+ pobase_base=`basename "$pobase"`
+ func_note_Makefile_am_edit "$pobase_dir" SUBDIRS "$pobase_base"
+ fi
+ if test -n "$inctests"; then
+ if test "$makefile_am" = Makefile.am; then
+ testsbase_dir=`echo "$testsbase" | sed -n -e 's,/[^/]*$,/,p'`
+ testsbase_base=`basename "$testsbase"`
+ func_note_Makefile_am_edit "$testsbase_dir" SUBDIRS "$testsbase_base"
+ fi
+ fi
+ func_note_Makefile_am_edit "" ACLOCAL_AMFLAGS "-I ${m4base}"
+ {
+ # Find the first parent directory of $m4base that contains or will contain
+ # a Makefile.am.
+ sed_last='s,^.*/\([^/][^/]*\)//*$,\1/,
+s,//*$,/,'
+ sed_butlast='s,[^/][^/]*//*$,,'
+ dir1="${m4base}/"; dir2=""
+ while test -n "$dir1" \
+ && ! { test -f "${destdir}/${dir1}Makefile.am" \
+ || test "${dir1}Makefile.am" = "$sourcebase/$makefile_am" \
+ || test "./${dir1}Makefile.am" = "$sourcebase/$makefile_am" \
+ || { test -n "$inctests" \
+ && { test "${dir1}Makefile.am" = "$testsbase/$makefile_am" \
+ || test "./${dir1}Makefile.am" = "$testsbase/$makefile_am"; }; }; }; do
+ dir2=`echo "$dir1" | sed -e "$sed_last"`"$dir2"
+ dir1=`echo "$dir1" | sed -e "$sed_butlast"`
+ done
+ func_note_Makefile_am_edit "$dir1" EXTRA_DIST "${dir2}gnulib-cache.m4"
+ }
+
# Create library makefile.
func_dest_tmpfilename $sourcebase/$makefile_am
+ destfile="$sourcebase/$makefile_am"
modules="$main_modules"
func_emit_lib_Makefile_am > "$tmpfile"
if test -f "$destdir"/$sourcebase/$makefile_am; then
func_append added_files "$pobase/$file$nl"
fi
done
- # Create po makefile parametrization, part 1.
+ # Create po makefile parameterization, part 1.
func_dest_tmpfilename $pobase/Makevars
func_emit_po_Makevars > "$tmpfile"
if test -f "$destdir"/$pobase/Makevars; then
fi
func_append added_files "$pobase/Makevars$nl"
fi
- # Create po makefile parametrization, part 2.
+ # Create po makefile parameterization, part 2.
func_dest_tmpfilename $pobase/POTFILES.in
func_emit_po_POTFILES_in > "$tmpfile"
if test -f "$destdir"/$pobase/POTFILES.in; then
esac ;;
esac
echo "gl_LOCAL_DIR([$relative_local_gnulib_dir])"
- echo "gl_MODULES(["`echo $specified_modules`"])"
+ echo "gl_MODULES(["
+ echo "$specified_modules" | sed 's/^/ /g'
+ echo "])"
echo "gl_AVOID([$avoidlist])"
echo "gl_SOURCE_BASE([$sourcebase])"
echo "gl_M4_BASE([$m4base])"
fi
echo "gl_MACRO_PREFIX([$macro_prefix])"
echo "gl_PO_DOMAIN([$po_domain])"
+ if test -n "$vc_files"; then
+ echo "gl_VC_FILES([$vc_files])"
+ fi
) > "$tmpfile"
if test -f "$destdir"/$m4base/gnulib-cache.m4; then
if cmp "$destdir"/$m4base/gnulib-cache.m4 "$tmpfile" > /dev/null; then
ba
}'
else
- sed_replace_build_aux=
+ sed_replace_build_aux="$sed_noop"
fi
func_emit_initmacro_start $macro_prefix
echo " gl_source_base='$sourcebase'"
if test -n "$inctests"; then
# Create tests makefile.
func_dest_tmpfilename $testsbase/$makefile_am
+ destfile="$testsbase/$makefile_am"
modules="$testsrelated_modules"
func_emit_tests_Makefile_am > "$tmpfile"
if test -f "$destdir"/$testsbase/$makefile_am; then
fi
fi
- # Update the .cvsignore and .gitignore files.
- { echo "$added_files" | sed -e '/^$/d' -e 's,\([^/]*\)$,|A|\1,'
- echo "$removed_files" | sed -e '/^$/d' -e 's,\([^/]*\)$,|R|\1,'
- } | LC_ALL=C sort -t'|' -k1,1 > "$tmp"/fileset-changes
- { # Rearrange file descriptors. Needed because "while ... done < ..."
- # constructs are executed in a subshell e.g. by Solaris 10 /bin/sh.
- exec 5<&0 < "$tmp"/fileset-changes
- func_update_ignorelist ()
- {
- ignore="$1"
- if test -f "$destdir/$dir$ignore"; then
- if test -n "$dir_added" || test -n "$dir_removed"; then
- LC_ALL=C sort "$destdir/$dir$ignore" > "$tmp"/ignore
- echo "$dir_added" | sed -e '/^$/d' | LC_ALL=C sort -u \
- | LC_ALL=C join -v 2 "$tmp"/ignore - > "$tmp"/ignore-added
- echo "$dir_removed" | sed -e '/^$/d' | LC_ALL=C sort -u \
- | LC_ALL=C join -v 2 "$tmp"/ignore - > "$tmp"/ignore-removed
- if test -s "$tmp"/ignore-added || test -s "$tmp"/ignore-removed; then
+ if test "$vc_files" != false; then
+ # Update the .cvsignore and .gitignore files.
+ { echo "$added_files" | sed -e '/^$/d' -e 's,\([^/]*\)$,|A|\1,'
+ echo "$removed_files" | sed -e '/^$/d' -e 's,\([^/]*\)$,|R|\1,'
+ # Treat gnulib-comp.m4 like an added file, even if it already existed.
+ echo "$m4base/|A|gnulib-comp.m4"
+ } | LC_ALL=C sort -t'|' -k1,1 > "$tmp"/fileset-changes
+ { # Rearrange file descriptors. Needed because "while ... done < ..."
+ # constructs are executed in a subshell e.g. by Solaris 10 /bin/sh.
+ exec 5<&0 < "$tmp"/fileset-changes
+ func_update_ignorelist ()
+ {
+ ignore="$1"
+ if test "$ignore" = .gitignore; then
+ # In a .gitignore file, "foo" applies to the current directory and all
+ # subdirectories, whereas "/foo" applies to the current directory only.
+ anchor='/'
+ escaped_anchor='\/'
+ doubly_escaped_anchor='\\/'
+ else
+ anchor=''
+ escaped_anchor=''
+ doubly_escaped_anchor=''
+ fi
+ if test -f "$destdir/$dir$ignore"; then
+ if test -n "$dir_added" || test -n "$dir_removed"; then
+ sed -e "s|^$anchor||" < "$destdir/$dir$ignore" | LC_ALL=C sort > "$tmp"/ignore
+ (func_reset_sigpipe
+ echo "$dir_added" | sed -e '/^$/d' | LC_ALL=C sort -u \
+ | LC_ALL=C join -v 2 "$tmp"/ignore - > "$tmp"/ignore-added
+ echo "$dir_removed" | sed -e '/^$/d' | LC_ALL=C sort -u \
+ | LC_ALL=C join -v 2 "$tmp"/ignore - > "$tmp"/ignore-removed
+ )
+ if test -s "$tmp"/ignore-added || test -s "$tmp"/ignore-removed; then
+ if $doit; then
+ echo "Updating $destdir/$dir$ignore (backup in $destdir/$dir${ignore}~)"
+ mv -f "$destdir/$dir$ignore" "$destdir/$dir$ignore"~
+ { sed -e 's,^,/^,' -e 's,$,\$/d,' < "$tmp"/ignore-removed
+ if test -n "$anchor"; then sed -e "s,^,/^${doubly_escaped_anchor}," -e 's,$,\$/d,' < "$tmp"/ignore-removed; fi
+ } > "$tmp"/sed-ignore-removed
+ { cat "$destdir/$dir$ignore"~
+ sed -e "s|^|$anchor|" < "$tmp"/ignore-added
+ } | sed -f "$tmp"/sed-ignore-removed \
+ > "$destdir/$dir$ignore"
+ else
+ echo "Update $destdir/$dir$ignore (backup in $destdir/$dir${ignore}~)"
+ fi
+ fi
+ fi
+ else
+ if test -n "$dir_added"; then
if $doit; then
- echo "Updating $destdir/$dir$ignore (backup in $destdir/$dir${ignore}~)"
- mv -f "$destdir/$dir$ignore" "$destdir/$dir$ignore"~
- sed -e 's,^,/^,' -e 's,$,\$/d,' < "$tmp"/ignore-removed > "$tmp"/sed-ignore-removed
- cat "$destdir/$dir$ignore"~ "$tmp"/ignore-added \
- | sed -f "$tmp"/sed-ignore-removed \
- > "$destdir/$dir$ignore"
+ echo "Creating $destdir/$dir$ignore"
+ {
+ if test "$ignore" = .cvsignore; then
+ echo ".deps"
+ # Automake generates Makefile rules that create .dirstamp files.
+ echo ".dirstamp"
+ fi
+ echo "$dir_added" | sed -e '/^$/d' -e "s|^|$anchor|" | LC_ALL=C sort -u
+ } > "$destdir/$dir$ignore"
else
- echo "Update $destdir/$dir$ignore (backup in $destdir/$dir${ignore}~)"
+ echo "Create $destdir/$dir$ignore"
fi
fi
fi
- else
- if test -n "$dir_added"; then
- if $doit; then
- echo "Creating $destdir/$dir$ignore"
- {
- if test "$ignore" = .cvsignore; then
- echo ".deps"
- # Automake generates Makefile rules that create .dirstamp files.
- echo ".dirstamp"
- fi
- echo "$dir_added" | sed -e '/^$/d' | LC_ALL=C sort -u
- } > "$destdir/$dir$ignore"
- else
- echo "Create $destdir/$dir$ignore"
- fi
+ }
+ func_done_dir ()
+ {
+ dir="$1"
+ dir_added="$2"
+ dir_removed="$3"
+ if test -d "$destdir/CVS" || test -d "$destdir/${dir}CVS" || test -f "$destdir/${dir}.cvsignore"; then
+ func_update_ignorelist .cvsignore
fi
- fi
- }
- func_done_dir ()
- {
- dir="$1"
- dir_added="$2"
- dir_removed="$3"
- if test -d "$destdir/CVS" || test -d "$destdir/${dir}CVS" || test -f "$destdir/${dir}.cvsignore"; then
- func_update_ignorelist .cvsignore
- fi
- if test -d "$destdir/.git" || test -f "$destdir/${dir}.gitignore"; then
- func_update_ignorelist .gitignore
- fi
+ if test -d "$destdir/.git" || test -f "$destdir/${dir}.gitignore"; then
+ func_update_ignorelist .gitignore
+ fi
+ }
+ last_dir=
+ last_dir_added=
+ last_dir_removed=
+ while read line; do
+ # Why not ''read next_dir op file'' ? Because the dir column can be empty.
+ next_dir=`echo "$line" | sed -e 's,|.*,,'`
+ op=`echo "$line" | sed -e 's,^[^|]*|\([^|]*\)|.*$,\1,'`
+ file=`echo "$line" | sed -e 's,^[^|]*|[^|]*|,,'`
+ if test "$next_dir" != "$last_dir"; then
+ func_done_dir "$last_dir" "$last_dir_added" "$last_dir_removed"
+ last_dir="$next_dir"
+ last_dir_added=
+ last_dir_removed=
+ fi
+ case $op in
+ A) func_append last_dir_added "$file$nl";;
+ R) func_append last_dir_removed "$file$nl";;
+ esac
+ done
+ func_done_dir "$last_dir" "$last_dir_added" "$last_dir_removed"
+ exec 0<&5 5<&-
}
- last_dir=
- last_dir_added=
- last_dir_removed=
- while read line; do
- # Why not ''read next_dir op file'' ? Because the dir column can be empty.
- next_dir=`echo "$line" | sed -e 's,|.*,,'`
- op=`echo "$line" | sed -e 's,^[^|]*|\([^|]*\)|.*$,\1,'`
- file=`echo "$line" | sed -e 's,^[^|]*|[^|]*|,,'`
- if test "$next_dir" != "$last_dir"; then
- func_done_dir "$last_dir" "$last_dir_added" "$last_dir_removed"
- last_dir="$next_dir"
- last_dir_added=
- last_dir_removed=
- fi
- case $op in
- A) func_append last_dir_added "$file$nl";;
- R) func_append last_dir_removed "$file$nl";;
- esac
- done
- func_done_dir "$last_dir" "$last_dir_added" "$last_dir_removed"
- exec 0<&5 5<&-
- }
+ fi
echo "Finished."
echo
echo " - \"include $makefile_name\" from within \"$testsbase/Makefile.am\","
fi
fi
- if test "$makefile_am" = Makefile.am; then
- sourcebase_dir=`echo "$sourcebase" | sed -n -e 's,/[^/]*$,/,p'`
- sourcebase_base=`basename "$sourcebase"`
- echo " - mention \"${sourcebase_base}\" in SUBDIRS in ${sourcebase_dir}Makefile.am,"
- fi
- if test -n "$pobase"; then
- pobase_dir=`echo "$pobase" | sed -n -e 's,/[^/]*$,/,p'`
- pobase_base=`basename "$pobase"`
- echo " - mention \"${pobase_base}\" in SUBDIRS in ${pobase_dir}Makefile.am,"
- fi
- if test -n "$inctests"; then
- if test "$makefile_am" = Makefile.am; then
- testsbase_dir=`echo "$testsbase" | sed -n -e 's,/[^/]*$,/,p'`
- testsbase_base=`basename "$testsbase"`
- echo " - mention \"${testsbase_base}\" in SUBDIRS in ${testsbase_dir}Makefile.am,"
+ edit=0
+ while test $edit != $makefile_am_edits; do
+ edit=`expr $edit + 1`
+ eval dir=\"\$makefile_am_edit${edit}_dir\"
+ eval var=\"\$makefile_am_edit${edit}_var\"
+ eval val=\"\$makefile_am_edit${edit}_val\"
+ if test -n "$var"; then
+ echo " - mention \"${val}\" in ${var} in ${dir}Makefile.am,"
fi
- fi
- echo " - mention \"-I ${m4base}\" in ACLOCAL_AMFLAGS in Makefile.am,"
+ done
echo " - invoke ${macro_prefix}_EARLY in $configure_ac, right after AC_PROG_CC,"
echo " - invoke ${macro_prefix}_INIT in $configure_ac."
}
testsbase=gltests
macro_prefix=gl
po_domain=
+ vc_files=
# Determine final module list.
func_modules_transitive_closure
s,^doc/,$docbase/,
s,^lib/,$sourcebase/,
s,^m4/,$m4base/,
- s,^tests/,$testsbase/,"
+ s,^tests/,$testsbase/,
+ s,^top/,,"
# Create directories.
for f in $files; do echo $f; done \
# Create Makefile.ams that are for testing.
for_test=true
+ # No special edits are needed.
+ makefile_am_edits=0
+
# Create $sourcebase/Makefile.am.
mkdir -p "$testdir/$sourcebase"
+ destfile="$sourcebase/Makefile.am"
func_emit_lib_Makefile_am > "$testdir/$sourcebase/Makefile.am"
any_uses_subdirs="$uses_subdirs"
if test -n "$inctests"; then
test -d "$testdir/$testsbase" || mkdir "$testdir/$testsbase"
+ # Viewed from the $testsbase subdirectory, $auxdir is different.
+ saved_auxdir="$auxdir"
+ auxdir=`echo "$testsbase/"|sed 's%[^/][^/]*//*%../%g'`"$auxdir"
# Create $testsbase/Makefile.am.
use_libtests=false
+ destfile="$testsbase/Makefile.am"
func_emit_tests_Makefile_am > "$testdir/$testsbase/Makefile.am"
any_uses_subdirs="$any_uses_subdirs$uses_subdirs"
# Create $testsbase/configure.ac.
(echo "# Process this file with autoconf to produce a configure script."
echo "AC_INIT([dummy], [0])"
- echo "AC_CONFIG_AUX_DIR([../$auxdir])"
+ echo "AC_CONFIG_AUX_DIR([$auxdir])"
echo "AM_INIT_AUTOMAKE"
echo
echo "AM_CONFIG_HEADER([config.h])"
sed_replace_build_aux='
:a
/AC_CONFIG_FILES(.*:build-aux\/.*)/{
- s|AC_CONFIG_FILES(\(.*\):build-aux/\(.*\))|AC_CONFIG_FILES(\1:../'"$auxdir"'/\2)|
+ s|AC_CONFIG_FILES(\(.*\):build-aux/\(.*\))|AC_CONFIG_FILES(\1:'"$auxdir"'/\2)|
ba
}'
func_emit_initmacro_start $macro_prefix
echo
echo "AC_OUTPUT([Makefile])"
) > "$testdir/$testsbase/configure.ac"
+ auxdir="$saved_auxdir"
func_append subdirs " $testsbase"
subdirs_with_configure_ac="$subdirs_with_configure_ac $testsbase"
fi
ba
}'
else
- sed_replace_build_aux=
+ sed_replace_build_aux="$sed_noop"
fi
func_emit_initmacro_start $macro_prefix
echo "gl_source_base='$sourcebase'"
# such as
# local_gnulib_dir, avoidlist, sourcebase, m4base, pobase,
# docbase, testsbase, inctests, libname, lgpl, makefile_name,
- # libtool, macro_prefix, po_domain
+ # libtool, macro_prefix, po_domain, vc_files
# don't propagate from one directory to another.
(func_import) || func_exit 1
done