progname=$0
package=gnulib
-cvsdatestamp='$Date: 2007-01-02 20:59:11 $'
+cvsdatestamp='$Date: 2007-01-27 13:53:54 $'
last_checkin_date=`echo "$cvsdatestamp" | sed -e 's,^\$[D]ate: ,,'`
version=`echo "$last_checkin_date" | sed -e 's/ .*$//' -e 's,/,-,g'`
nl='
# However, do this only for gnulib-tool itself, not for the code that
# gnulib-tool generates, since we don't want "sed --posix" to leak
# into makefiles.
-if (alias) > /dev/null 2>&1 && echo | sed --posix d >/dev/null 2>&1; then
+if (alias) > /dev/null 2>&1 && echo | sed --posix -e d >/dev/null 2>&1; then
alias sed='sed --posix'
fi
if test -n "$prereqs"; then
autoconf_minversion=`
for version in $prereqs; do echo $version; done |
- LC_ALL=C sort -nu | sed 1q
+ LC_ALL=C sort -nru | sed 1q
`
fi
fi
# Filter out unit test modules; they can be retrieved through
# --extract-tests-module if desired.
{
- (cd "$gnulib_dir/modules" && ls -1)
+ (cd "$gnulib_dir" && find modules -type f -print | sed -e 's,^modules/,,')
if test -n "$local_gnulib_dir" && test -d "$local_gnulib_dir/modules"; then
- (cd "$local_gnulib_dir/modules" && ls -1 | sed -e 's,\.diff$,,')
+ (cd "$local_gnulib_dir" && find modules -type f -print | sed -e 's,^modules/,,' -e 's,\.diff$,,')
fi
} \
- | sed -e '/^CVS$/d' -e '/^ChangeLog$/d' -e '/^COPYING$/d' -e '/^README$/d' -e '/^TEMPLATE$/d' -e '/^TEMPLATE-TESTS$/d' -e '/~$/d' \
+ | sed -e '/^CVS\//d' -e '/\/CVS\//d' \
+ -e '/^ChangeLog$/d' -e '/\/ChangeLog$/d' \
+ -e '/^COPYING$/d' -e '/\/COPYING$/d' \
+ -e '/^README$/d' -e '/\/README$/d' \
+ -e '/^TEMPLATE$/d' \
+ -e '/^TEMPLATE-TESTS$/d' \
+ -e '/^\..*/d' \
+ -e '/~$/d' \
| sed -e '/-tests$/d' \
| LC_ALL=C sort -u
}
{
func_lookup_file "modules/$1"
sed -n -e "/^Files$sed_extract_prog" < "$lookedup_file"
+ echo m4/gnulib-common.m4
case "$autoconf_minversion" in
2.59)
#echo m4/onceonly.m4
{
func_lookup_file "modules/$1"
sed -n -e "/^configure\.ac$sed_extract_prog" < "$lookedup_file"
- # Define a C macro indicating the presence of the given module.
- echo " AC_DEFINE([GNULIB_"`echo "$1" | LC_ALL=C tr 'a-z' 'A-Z' | sed -e 's,[-./],_,g'`"], [1],"
- echo " [Define to 1 when using the gnulib module $1.])"
}
# func_get_automake_snippet module
func_get_license ()
{
func_lookup_file "modules/$1"
- sed -n -e "/^License$sed_extract_prog" < "$lookedup_file"
+ { sed -n -e "/^License$sed_extract_prog" < "$lookedup_file"
+ # The default is GPL.
+ echo "GPL"
+ } | sed -e 's,^ *$,,' | sed -e 1q
}
# func_get_maintainer module
# - libtool true if libtool will be used, false or blank otherwise
# - macro_prefix prefix of gl_LIBOBJS macros to use
# - actioncmd (optional) command that will reproduce this invocation
+# - for_test true if creating a package for testing, false otherwise
# Output:
# - uses_subdirs nonempty if object files in subdirs exist
func_emit_lib_Makefile_am ()
perhapsLT=
sed_eliminate_LDFLAGS='/^lib_LDFLAGS[ ]*+=/d'
fi
+ if $for_test; then
+ # When creating a package for testing: Attempt to provoke failures,
+ # especially link errors, already during "make" rather than during
+ # "make check", because "make check" is not possible in a cross-compiling
+ # situation. Turn check_PROGRAMS into noinst_PROGRAMS.
+ sed_transform_check_PROGRAMS='s,check_PROGRAMS,noinst_PROGRAMS,g'
+ else
+ sed_transform_check_PROGRAMS=
+ fi
echo "## DO NOT EDIT! GENERATED AUTOMATICALLY!"
echo "## Process this file with automake to produce Makefile.in."
func_emit_copyright_notice
sed -e "$sed_eliminate_LDFLAGS" |
sed -e 's,lib_\([A-Z][A-Z]*\),'"${libname}_${libext}"'_\1,g' |
sed -e 's,lib%_LIBRARIES,lib_LIBRARIES,g' \
- -e 's,lib%_LTLIBRARIES,lib_LTLIBRARIES,g'
+ -e 's,lib%_LTLIBRARIES,lib_LTLIBRARIES,g' |
+ sed -e "$sed_transform_check_PROGRAMS"
if test "$module" = 'alloca'; then
echo "${libname}_${libext}_LIBADD += @${perhapsLT}ALLOCA@"
echo "${libname}_${libext}_DEPENDENCIES += @${perhapsLT}ALLOCA@"
# - sourcebase relative directory containing lib source code
# - m4base relative directory containing autoconf macros
# - testsbase relative directory containing unit test code
+# - for_test true if creating a package for testing, false otherwise
func_emit_tests_Makefile_am ()
{
if test "$libtool" = true; then
libext=a
sed_eliminate_LDFLAGS='/^lib_LDFLAGS[ ]*+=/d'
fi
+ if $for_test; then
+ # When creating a package for testing: Attempt to provoke failures,
+ # especially link errors, already during "make" rather than during
+ # "make check", because "make check" is not possible in a cross-compiling
+ # situation. Turn check_PROGRAMS into noinst_PROGRAMS.
+ sed_transform_check_PROGRAMS='s,check_PROGRAMS,noinst_PROGRAMS,g'
+ else
+ sed_transform_check_PROGRAMS=
+ fi
testsbase_inverse=`echo "$testsbase" | sed -e 's,/$,,' | sed -e 's,[^/][^/]*,..,g'`
echo "## DO NOT EDIT! GENERATED AUTOMATICALLY!"
echo "## Process this file with automake to produce Makefile.in."
sed -e "$sed_eliminate_LDFLAGS" |
sed -e 's,lib_\([A-Z][A-Z]*\),'"${libname}_${libext}"'_\1,g' |
sed -e 's,lib%_LIBRARIES,lib_LIBRARIES,g' \
- -e 's,lib%_LTLIBRARIES,lib_LTLIBRARIES,g'
+ -e 's,lib%_LTLIBRARIES,lib_LTLIBRARIES,g' |
+ sed -e "$sed_transform_check_PROGRAMS"
} > amsnippet.tmp
# Skip the contents if its entirely empty.
if grep '[^ ]' amsnippet.tmp > /dev/null ; then
echo "TESTS ="
echo "TESTS_ENVIRONMENT ="
echo "noinst_PROGRAMS ="
- echo "check_PROGRAMS ="
+ if ! $for_test; then
+ echo "check_PROGRAMS ="
+ fi
echo "noinst_HEADERS ="
if grep '^pkgdata_DATA *+=' allsnippets.tmp > /dev/null; then
echo "pkgdata_DATA ="
makefile_am=Makefile.am
fi
+ # Create normal Makefile.ams.
+ for_test=false
+
# Create library makefile.
func_dest_tmpfilename $sourcebase/$makefile_am
func_emit_lib_Makefile_am > "$tmpfile"
# Check that the license of every module is consistent with the license of
# its dependencies.
saved_modules="$modules"
+ saved_inctests="$inctests"
+ # When computing transitive closures, don't consider $module to depend on
+ # $module-tests. Need this becauses tests are implicitly GPL and may depend
+ # on GPL modules - therefore we don't want a warning in this case.
+ inctests=""
for requested_module in $saved_modules; do
requested_license=`func_get_license "$requested_module"`
if test "$requested_license" != GPL; then
fi
done
modules="$saved_modules"
+ inctests="$saved_inctests"
# Subdirectory names.
sourcebase=gllib
exec 0<&5 5<&-
}
+ # Create Makefile.ams that are for testing.
+ for_test=true
+
# Create $sourcebase/Makefile.am.
mkdir -p "$testdir/$sourcebase"
func_emit_lib_Makefile_am > "$testdir/$sourcebase/Makefile.am"
echo "AC_PROG_INSTALL"
echo "AC_PROG_MAKE_SET"
echo
+ echo "# For autobuild."
+ echo "AC_CANONICAL_BUILD"
+ echo "AC_CANONICAL_HOST"
+ echo
echo "m4_pattern_forbid([^gl_[A-Z]])dnl the gnulib macro namespace"
echo "m4_pattern_allow([^gl_ES\$])dnl a valid locale name"
echo "m4_pattern_allow([^gl_LIBOBJS\$])dnl a variable"
${AUTOMAKE} --add-missing --copy || func_exit 1
) || func_exit 1
fi
- if grep '^BUILT_SOURCES *+=' "$testdir/$sourcebase/Makefile.am" > /dev/null; then
+ # Need to run configure and make once, to create built files that are to be
+ # distributed (such as getdate.c).
+ # Extract the value of "CLEANFILES += ...".
+ cleaned_files=`sed -e "$sed_remove_backslash_newline" < "$testdir/$sourcebase/Makefile.am" \
+ | sed -n -e 's,^CLEANFILES[ ]*+=\([^#]*\).*$,\1,p'`
+ cleaned_files=" "`for file in $cleaned_files; do echo "$file"; done`" "
+ # Extract the value of "BUILT_SOURCES += ...". Remove variable references
+ # such $(FOO_H) because they don't refer to distributed files.
+ sed_remove_make_variables='s,[$]([A-Za-z0-9_]*),,g'
+ built_sources=`sed -e "$sed_remove_backslash_newline" < "$testdir/$sourcebase/Makefile.am" \
+ | sed -n -e 's,^BUILT_SOURCES[ ]*+=\([^#]*\).*$,\1,p' \
+ | sed -e "$sed_remove_make_variables"`
+ distributed_built_sources=`for file in $built_sources; do
+ case "$cleaned_files" in
+ *" "$file" "*) ;;
+ *) echo $file ;;
+ esac;
+ done`
+ if test -n "$distributed_built_sources"; then
(cd "$testdir"
./configure || func_exit 1
cd "$sourcebase"