#
# Copyright (C) 2002-2007 Free Software Foundation, Inc.
#
-# This program is free software; you can redistribute it and/or modify
+# 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
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# This program is meant for authors or maintainers which want to import
progname=$0
package=gnulib
-cvsdatestamp='$Date: 2007-09-09 11:49:58 $'
+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"
# gnulib-tool generates, since we don't want "sed --posix" to leak
# into makefiles.
if (alias) > /dev/null 2>&1 && echo | sed --posix -e d >/dev/null 2>&1; then
+ # Define sed as an alias.
+ # It is not always possible to use aliases. Aliases are guaranteed to work
+ # if the executing shell is bash and either it is invoked as /bin/sh or
+ # is a version >= 2.0, supporting shopt. This is the common case.
+ # Two other approaches (use of a variable $sed or of a function func_sed
+ # instead of an alias) require massive, fragile code changes.
+ # An other approach (use of function sed) requires `which sed` - but 'which'
+ # is hard to emulate, due to missing "test -x" on some platforms.
+ if test -n "$BASH_VERSION"; then
+ shopt -s expand_aliases >/dev/null 2>&1
+ fi
alias sed='sed --posix'
fi
gnulib-tool --test --dir=directory module1 ... moduleN
gnulib-tool --megatest --dir=directory [module1 ... moduleN]
gnulib-tool --extract-description module
+ gnulib-tool --extract-notice module
gnulib-tool --extract-filelist module
gnulib-tool --extract-dependencies module
gnulib-tool --extract-autoconf-snippet module
--megatest test the given modules one by one and all together
(recommended to use CC=\"gcc -Wall\" here)
--extract-description extract the description
+ --extract-notice extract the notice or banner
--extract-filelist extract the list of files
--extract-dependencies extract the dependencies
--extract-autoconf-snippet extract the snippet for configure.ac
# outputs to stdout the --version message.
func_version ()
{
- year=`echo "$last_checkin_date" | sed -e 's,/.*$,,'`
+ year=`echo "$version" | sed -e 's,-.*$,,'`
echo "\
$progname (GNU $package) $version
Copyright (C) $year Free Software Foundation, Inc.
:a
n
s/^Description:[ ]*$//
+ s/^Notice:[ ]*$//
s/^Files:[ ]*$//
s/^Depends-on:[ ]*$//
s/^configure\.ac-early:[ ]*$//
sed -n -e "/^Description$sed_extract_prog" < "$lookedup_file"
}
+# func_get_notice module
+# Input:
+# - local_gnulib_dir from --local-dir
+func_get_notice ()
+{
+ func_lookup_file "modules/$1"
+ sed -n -e "/^Notice$sed_extract_prog" < "$lookedup_file"
+}
+
# func_get_filelist module
# Input:
# - local_gnulib_dir from --local-dir
case "$1" in
*-tests)
# *-tests module live in tests/, not lib/.
+ # Synthesize an EXTRA_DIST augmentation.
+ all_files=`func_get_filelist $1`
+ tests_files=`for f in $all_files; do \
+ case $f in \
+ tests/*) echo $f ;; \
+ esac; \
+ done | sed -e 's,^tests/,,'`
+ extra_files="$tests_files"
+ if test -n "$extra_files"; then
+ echo "EXTRA_DIST +=" $extra_files
+ echo
+ fi
;;
*)
# Synthesize an EXTRA_DIST augmentation.
fi
}
+# func_modules_notice
+# Input:
+# - local_gnulib_dir from --local-dir
+# - verbose integer, default 0, inc/decremented by --verbose/--quiet
+# - modules list of modules, including dependencies
+func_modules_notice ()
+{
+ if test $verbose -ge -1; then
+ for module in $modules; do
+ func_verify_module
+ if test -n "$module"; then
+ msg=`func_get_notice $module`
+ if test -n "$msg"; then
+ echo "Notice from module $module:"
+ echo "$msg" | sed -e 's/^/ /'
+ fi
+ fi
+ done
+ fi
+}
+
# func_modules_to_filelist
# Input:
# - local_gnulib_dir from --local-dir
files=`for f in $files; do echo $f; done | LC_ALL=C sort -u`
}
-
# func_execute_command command [args...]
# Executes a command.
# Uses also the variables
# func_emit_initmacro_done
# emits a few statements after the gl_INIT macro to standard output.
# - macro_prefix prefix of gl_EARLY, gl_INIT macros to use
+# - sourcebase directory relative to destdir where to place source code
func_emit_initmacro_done ()
{
echo
echo "# Like AC_LIBOBJ, except that the module name goes"
echo "# into ${macro_prefix}_LIBOBJS instead of into LIBOBJS."
- echo "AC_DEFUN([${macro_prefix}_LIBOBJ],"
- echo " [${macro_prefix}_LIBOBJS=\"\$${macro_prefix}_LIBOBJS \$1.\$ac_objext\"])"
+ echo "AC_DEFUN([${macro_prefix}_LIBOBJ], ["
+ echo " AS_LITERAL_IF([\$1], [${macro_prefix}_LIBSOURCES([\$1.c])])dnl"
+ echo " ${macro_prefix}_LIBOBJS=\"\$${macro_prefix}_LIBOBJS \$1.\$ac_objext\""
+ echo "])"
echo
echo "# Like AC_REPLACE_FUNCS, except that the module name goes"
echo "# into ${macro_prefix}_LIBOBJS instead of into LIBOBJS."
- echo "AC_DEFUN([${macro_prefix}_REPLACE_FUNCS],"
- echo " [AC_CHECK_FUNCS([\$1], , [${macro_prefix}_LIBOBJ(\$ac_func)])])"
+ echo "AC_DEFUN([${macro_prefix}_REPLACE_FUNCS], ["
+ echo " m4_foreach_w([gl_NAME], [\$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl"
+ echo " AC_CHECK_FUNCS([\$1], , [${macro_prefix}_LIBOBJ(\$ac_func)])"
+ echo "])"
echo
- echo "# Like AC_LIBSOURCES, except that it does nothing."
- echo "# We rely on EXTRA_lib..._SOURCES instead."
- echo "AC_DEFUN([${macro_prefix}_LIBSOURCES],"
- echo " [])"
+ echo "# Like AC_LIBSOURCES, except the directory where the source file is"
+ echo "# expected is derived from the gnulib-tool parametrization,"
+ 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}_LIBSOURCES], ["
+ echo " m4_foreach([_gl_NAME], [\$1], ["
+ echo " m4_if(_gl_NAME, [alloca.c], [], ["
+ echo " m4_syscmd([test -r $sourcebase/]_gl_NAME[ || test ! -d $sourcebase])dnl"
+ echo " m4_if(m4_sysval, [0], [],"
+ echo " [AC_FATAL([missing $sourcebase/]_gl_NAME)])"
+ echo " ])"
+ echo " ])"
+ echo "])"
}
# func_import modules
done
fi
+ # Show banner notice of every module.
+ func_modules_notice
+
# Determine script to apply to imported library files.
sed_transform_lib_file=
for module in $modules; do
# Add the dummy module if needed.
func_modules_add_dummy
+ # Show banner notice of every module.
+ func_modules_notice
+
# Determine final file list.
func_modules_to_filelist
if test $verbose -ge 0; then
done
;;
+ extract-notice )
+ for module
+ do
+ func_verify_module
+ if test -n "$module"; then
+ func_get_notice "$module"
+ fi
+ done
+ ;;
+
extract-filelist )
for module
do