#! /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"
'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=' '`"$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"
(exit $1); exit $1
}
+# func_gnulib_dir
+# locates the directory where the gnulib repository lives
+# Sets variables
+# - self_abspathname absolute pathname of gnulib-tool
+# - gnulib_dir absolute pathname of gnulib repository
+func_gnulib_dir ()
+{
+ 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_tmpdir
# creates a temporary directory.
# Sets variable
# 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
}
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
}
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=$?
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
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
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 " -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
- # local_ldadd must be listed first, since it often depends on non-test
- # modules; it must also be listed last, since it can include modules
- # such as progname that satisfy dependencies of non-test modules.
- echo "LDADD =${local_ldadd} ${testsbase_inverse}/${sourcebase-lib}/${libname}.${libext}${local_ldadd}"
+ 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 ]${macro_prefix_arg}_LIBSOURCES_DIR[ ||"
+ echo " for gl_file in ]${macro_prefix_arg}_LIBSOURCES_LIST[ ; do"
+ echo " if test ! -r ]${macro_prefix_arg}_LIBSOURCES_DIR[/\$gl_file ; then"
+ echo " echo \"missing file ]${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 " ${macro_prefix_arg}_LIBOBJS=\"\$${macro_prefix_arg}_LIBOBJS \$1.\$ac_objext\""
echo "])"
echo
- echo "# m4_foreach_w is provided by autoconf-2.59c and later."
- echo "# This definition is to accommodate developers using versions"
- echo "# of autoconf older than that."
- echo "m4_ifndef([m4_foreach_w],"
- echo " [m4_define([m4_foreach_w],"
- echo " [m4_foreach([\$1], m4_split(m4_normalize([\$2]), [ ]), [\$3])])])"
- echo
echo "# Like AC_REPLACE_FUNCS, except that the module name goes"
echo "# into ${macro_prefix_arg}_LIBOBJS instead of into LIBOBJS."
echo "AC_DEFUN([${macro_prefix_arg}_REPLACE_FUNCS], ["
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
}
/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`
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
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.
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
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
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,'
+ } | 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 $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"
+ 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' | 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
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 \
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
func_emit_tests_Makefile_am > "$testdir/$testsbase/Makefile.am"
# 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
# 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