[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: no license on some test modules
From: |
Bruno Haible |
Subject: |
Re: no license on some test modules |
Date: |
Mon, 10 Dec 2007 12:13:58 +0100 |
User-agent: |
KMail/1.9.1 |
Eric Blake wrote:
> That sounds okay to me - by separating the GPL prereqs of the tests into
> their own directory and library, the tests can now be GPL without
> polluting the LGPL nature of the normal library.
OK, this patch implements it.
2007-12-09 Bruno Haible <address@hidden>
Let 'gnulib-tool --import' collect sources needed for the tests in
tests/ rather than in lib/.
* gnulib-tool (func_emit_tests_Makefile_am): Accept use_libtests
argument. If true, add rules to generate libtests.a, and put libtests.a
into $(LDADD). Consider source files in subdirectories and set
uses_subdirs.
(func_emit_initmacro_start, func_emit_initmacro_end,
func_emit_initmacro_done): Pass all arguments explicitly.
(func_import): Determine two module lists main_modules,
testsrelated_modules. Determine use_libtests. Determine two variables
sed_transform_main_lib_file, sed_transform_testsrelated_lib_file
instead of just sed_transform_lib_file. Determine two variables
main_files and testsrelated_files. Compute 'files' as the union of
both. Adjust sed_rewrite_old_files, sed_rewrite_new_files,
func_add_or_update. In the generated gnulib-comp.m4, collect the
object files for tests/ in different variables than those for lib/.
Substitute LIBTESTS_LIBDEPS.
(func_create_testdir): Combine the uses_subdirs results from
func_emit_lib_Makefile_am and from func_emit_tests_Makefile_am.
*** gnulib-tool.bak
--- gnulib-tool
***************
*** 1793,1804 ****
--- 1793,1809 ----
# - local_gnulib_dir from --local-dir
# - modules list of modules, including dependencies
# - libname library name
+ # - auxdir directory relative to destdir where to place build aux
files
# - makefile_name from --makefile-name
# - 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
+ # - 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
+ # Output:
+ # - uses_subdirs nonempty if object files in subdirs exist
func_emit_tests_Makefile_am ()
{
if test "$libtool" = true; then
***************
*** 1822,1845 ****
echo "## Process this file with automake to produce Makefile.in."
func_emit_copyright_notice
echo
! # Generate dependencies here, since it eases the debugging of test failures.
! echo "AUTOMAKE_OPTIONS = 1.5 foreign"
! echo
! echo "ACLOCAL_AMFLAGS = -I ${testsbase_inverse}/${m4base}"
! echo
(
for module in $modules; do
! func_verify_tests_module
if test -n "$module"; then
{
func_get_automake_snippet "$module" |
sed -e 's,lib_LIBRARIES,lib%_LIBRARIES,g' \
-e 's,lib_LTLIBRARIES,lib%_LTLIBRARIES,g' \
-e "$sed_eliminate_LDFLAGS" \
! -e 's,lib_\([A-Z][A-Z]*\),'"${libname}_${libext}"'_\1,g' \
-e 's,lib%_LIBRARIES,lib_LIBRARIES,g' \
-e 's,lib%_LTLIBRARIES,lib_LTLIBRARIES,g' \
-e "$sed_transform_check_PROGRAMS"
} > amsnippet.tmp
# Skip the contents if its entirely empty.
if grep '[^ ]' amsnippet.tmp > /dev/null ; then
--- 1827,1854 ----
echo "## Process this file with automake to produce Makefile.in."
func_emit_copyright_notice
echo
! uses_subdirs=
(
for module in $modules; do
! if $for_test; then
! func_verify_tests_module
! else
! func_verify_module
! fi
if test -n "$module"; then
{
func_get_automake_snippet "$module" |
sed -e 's,lib_LIBRARIES,lib%_LIBRARIES,g' \
-e 's,lib_LTLIBRARIES,lib%_LTLIBRARIES,g' \
-e "$sed_eliminate_LDFLAGS" \
! -e 's,lib_\([A-Z][A-Z]*\),libtests_a_\1,g' \
-e 's,lib%_LIBRARIES,lib_LIBRARIES,g' \
-e 's,lib%_LTLIBRARIES,lib_LTLIBRARIES,g' \
-e "$sed_transform_check_PROGRAMS"
+ if $use_libtests && test "$module" = 'alloca'; then
+ echo "libtests_a_LIBADD += @${perhapsLT}ALLOCA@"
+ echo "libtests_a_DEPENDENCIES += @${perhapsLT}ALLOCA@"
+ fi
} > amsnippet.tmp
# Skip the contents if its entirely empty.
if grep '[^ ]' amsnippet.tmp > /dev/null ; then
***************
*** 1850,1858 ****
--- 1859,1886 ----
echo
fi
rm -f amsnippet.tmp
+ # Test whether there are some source files in subdirectories.
+ for f in `func_get_filelist "$module"`; do
+ case $f in
+ lib/*/*.c | tests/*/*.c) uses_subdirs=yes ;;
+ esac
+ done
fi
done
) > allsnippets.tmp
+ # Generate dependencies here, since it eases the debugging of test failures.
+ # If there are source files in subdirectories, prevent collision of the
+ # object files (example: hash.c and libxml/hash.c).
+ subdir_options=
+ if test -n "$uses_subdirs"; then
+ subdir_options=' subdir-objects'
+ fi
+ echo "AUTOMAKE_OPTIONS = 1.5 foreign${subdir_options}"
+ echo
+ if $for_test; then
+ echo "ACLOCAL_AMFLAGS = -I ${testsbase_inverse}/${m4base}"
+ echo
+ fi
# Nothing is being added to SUBDIRS; nevertheless the existence of this
# variable is needed to avoid an error from automake:
# "AM_GNU_GETTEXT used but SUBDIRS not defined"
***************
*** 1864,1869 ****
--- 1892,1907 ----
echo "check_PROGRAMS ="
fi
echo "noinst_HEADERS ="
+ echo "noinst_LIBRARIES ="
+ if $use_libtests; then
+ if $for_test; then
+ echo "noinst_LIBRARIES += libtests.a"
+ else
+ echo "check_LIBRARIES = libtests.a"
+ fi
+ fi
+ # Automake versions < 1.9b create an empty pkgdatadir at installation time
+ # if you specify pkgdata_DATA to empty. This is a workaround.
if grep '^pkgdata_DATA *+=' allsnippets.tmp > /dev/null; then
echo "pkgdata_DATA ="
fi
***************
*** 1881,1888 ****
echo " -I${testsbase_inverse} -I\$(srcdir)/${testsbase_inverse} \\"
echo " -I${testsbase_inverse}/${sourcebase-lib}
-I\$(srcdir)/${testsbase_inverse}/${sourcebase-lib}"
echo
! echo "LDADD = ${testsbase_inverse}/${sourcebase-lib}/${libname}.${libext}"
echo
cat allsnippets.tmp \
| sed -e 's|\$(top_srcdir)/build-aux/|$(top_srcdir)/'"$auxdir"'/|g'
echo "# Clean up after Solaris cc."
--- 1919,1939 ----
echo " -I${testsbase_inverse} -I\$(srcdir)/${testsbase_inverse} \\"
echo " -I${testsbase_inverse}/${sourcebase-lib}
-I\$(srcdir)/${testsbase_inverse}/${sourcebase-lib}"
echo
! local_ldadd=''
! if $use_libtests; then
! local_ldadd=' libtests.a $(LIBTESTS_LIBDEPS)'
! fi
! echo "LDADD =${local_ldadd}
${testsbase_inverse}/${sourcebase-lib}/${libname}.${libext}"
echo
+ if $use_libtests; then
+ echo "libtests_a_SOURCES ="
+ # Here we use $(LIBOBJS), not @address@hidden The value is the same.
However,
+ # automake during its analyses looks for $(LIBOBJS), not for
@address@hidden
+ echo "libtests_a_LIBADD = \$(${macro_prefix}tests_LIBOBJS)"
+ echo "libtests_a_DEPENDENCIES = \$(${macro_prefix}tests_LIBOBJS)"
+ echo "EXTRA_libtests_a_SOURCES ="
+ echo
+ fi
cat allsnippets.tmp \
| sed -e 's|\$(top_srcdir)/build-aux/|$(top_srcdir)/'"$auxdir"'/|g'
echo "# Clean up after Solaris cc."
***************
*** 1899,1982 ****
rm -f allsnippets.tmp
}
! # func_emit_initmacro_start
# emits the first few statements of the gl_INIT macro to standard output.
# - macro_prefix prefix of gl_EARLY, gl_INIT macros to use
func_emit_initmacro_start ()
{
# Overriding AC_LIBOBJ and AC_REPLACE_FUNCS has the effect of storing
! # platform-dependent object files in ${macro_prefix}_LIBOBJS instead of
# LIBOBJS. The purpose is to allow several gnulib instantiations under
# a single configure.ac file. (AC_CONFIG_LIBOBJ_DIR does not allow this
# flexibility.)
# Furthermore it avoids an automake error like this when a Makefile.am
# that uses pieces of gnulib also uses $(LIBOBJ):
# automatically discovered file `error.c' should not be explicitly
mentioned
! echo " m4_pushdef([AC_LIBOBJ], m4_defn([${macro_prefix}_LIBOBJ]))"
! echo " m4_pushdef([AC_REPLACE_FUNCS],
m4_defn([${macro_prefix}_REPLACE_FUNCS]))"
# Overriding AC_LIBSOURCES has the same purpose of avoiding the automake
# error when a Makefile.am that uses pieces of gnulib also uses $(LIBOBJ):
# automatically discovered file `error.c' should not be explicitly
mentioned
# 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}_LIBSOURCES]))"
}
! # func_emit_initmacro_end
# emits the last few statements of the gl_INIT macro to standard output.
# - macro_prefix prefix of gl_EARLY, gl_INIT macros to use
func_emit_initmacro_end ()
{
echo " m4_popdef([AC_LIBSOURCES])"
echo " m4_popdef([AC_REPLACE_FUNCS])"
echo " m4_popdef([AC_LIBOBJ])"
echo " AC_CONFIG_COMMANDS_PRE(["
! echo " ${macro_prefix}_libobjs="
! echo " ${macro_prefix}_ltlibobjs="
! echo " if test -n \"\$${macro_prefix}_LIBOBJS\"; then"
echo " # Remove the extension."
echo " sed_drop_objext='s/\\.o\$//;s/\\.obj\$//'"
! echo " for i in \`for i in \$${macro_prefix}_LIBOBJS; do echo \"\$i\";
done | sed \"\$sed_drop_objext\" | sort | uniq\`; do"
! echo " ${macro_prefix}_libobjs=\"\$${macro_prefix}_libobjs
\$i.\$ac_objext\""
! echo " ${macro_prefix}_ltlibobjs=\"\$${macro_prefix}_ltlibobjs
\$i.lo\""
echo " done"
echo " fi"
! echo " AC_SUBST([${macro_prefix}_LIBOBJS], [\$${macro_prefix}_libobjs])"
! echo " AC_SUBST([${macro_prefix}_LTLIBOBJS],
[\$${macro_prefix}_ltlibobjs])"
echo " ])"
}
! # 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 " 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 " 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 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 "])"
--- 1950,2037 ----
rm -f allsnippets.tmp
}
! # func_emit_initmacro_start macro_prefix
# emits the first few statements of the gl_INIT macro to standard output.
# - macro_prefix prefix of gl_EARLY, gl_INIT macros to use
func_emit_initmacro_start ()
{
+ macro_prefix_arg="$1"
# Overriding AC_LIBOBJ and AC_REPLACE_FUNCS has the effect of storing
! # platform-dependent object files in ${macro_prefix_arg}_LIBOBJS instead of
# LIBOBJS. The purpose is to allow several gnulib instantiations under
# a single configure.ac file. (AC_CONFIG_LIBOBJ_DIR does not allow this
# flexibility.)
# Furthermore it avoids an automake error like this when a Makefile.am
# that uses pieces of gnulib also uses $(LIBOBJ):
# automatically discovered file `error.c' should not be explicitly
mentioned
! echo " m4_pushdef([AC_LIBOBJ], m4_defn([${macro_prefix_arg}_LIBOBJ]))"
! echo " m4_pushdef([AC_REPLACE_FUNCS],
m4_defn([${macro_prefix_arg}_REPLACE_FUNCS]))"
# Overriding AC_LIBSOURCES has the same purpose of avoiding the automake
# error when a Makefile.am that uses pieces of gnulib also uses $(LIBOBJ):
# automatically discovered file `error.c' should not be explicitly
mentioned
# 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]))"
}
! # func_emit_initmacro_end macro_prefix
# emits the last few statements of the gl_INIT macro to standard output.
# - macro_prefix prefix of gl_EARLY, gl_INIT macros to use
func_emit_initmacro_end ()
{
+ macro_prefix_arg="$1"
echo " m4_popdef([AC_LIBSOURCES])"
echo " m4_popdef([AC_REPLACE_FUNCS])"
echo " m4_popdef([AC_LIBOBJ])"
echo " AC_CONFIG_COMMANDS_PRE(["
! echo " ${macro_prefix_arg}_libobjs="
! echo " ${macro_prefix_arg}_ltlibobjs="
! echo " if test -n \"\$${macro_prefix_arg}_LIBOBJS\"; then"
echo " # Remove the extension."
echo " sed_drop_objext='s/\\.o\$//;s/\\.obj\$//'"
! echo " for i in \`for i in \$${macro_prefix_arg}_LIBOBJS; do echo
\"\$i\"; done | sed \"\$sed_drop_objext\" | sort | uniq\`; do"
! echo " ${macro_prefix_arg}_libobjs=\"\$${macro_prefix_arg}_libobjs
\$i.\$ac_objext\""
! echo "
${macro_prefix_arg}_ltlibobjs=\"\$${macro_prefix_arg}_ltlibobjs \$i.lo\""
echo " done"
echo " fi"
! echo " AC_SUBST([${macro_prefix_arg}_LIBOBJS],
[\$${macro_prefix_arg}_libobjs])"
! echo " AC_SUBST([${macro_prefix_arg}_LTLIBOBJS],
[\$${macro_prefix_arg}_ltlibobjs])"
echo " ])"
}
! # func_emit_initmacro_done macro_prefix sourcebase
# 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 ()
{
+ macro_prefix_arg="$1"
+ sourcebase_arg="$2"
echo
echo "# Like AC_LIBOBJ, except that the module name goes"
! echo "# into ${macro_prefix_arg}_LIBOBJS instead of into LIBOBJS."
! echo "AC_DEFUN([${macro_prefix_arg}_LIBOBJ], ["
! echo " AS_LITERAL_IF([\$1], [${macro_prefix_arg}_LIBSOURCES([\$1.c])])dnl"
! echo " ${macro_prefix_arg}_LIBOBJS=\"\$${macro_prefix_arg}_LIBOBJS
\$1.\$ac_objext\""
echo "])"
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 " m4_foreach_w([gl_NAME], [\$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl"
! echo " AC_CHECK_FUNCS([\$1], , [${macro_prefix_arg}_LIBOBJ(\$ac_func)])"
echo "])"
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_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 " ])"
echo " ])"
echo "])"
***************
*** 2212,2224 ****
echo "Module list with included dependencies:"
echo "$modules" | sed -e 's/^/ /'
fi
! # Add the dummy module if needed.
func_modules_add_dummy
# If --lgpl, verify that the licenses of modules are compatible.
if test -n "$lgpl"; then
! for module in $modules; do
license=`func_get_license $module`
case $license in
'GPLed build tool') ;;
--- 2267,2334 ----
echo "Module list with included dependencies:"
echo "$modules" | sed -e 's/^/ /'
fi
+ final_modules="$modules"
+
+ # Determine main module list and tests-related module list separately.
+ # The main module list is the transitive closure of the specified modules,
+ # ignoring tests modules. Its lib/* sources go into $sourcebase/. If --lgpl
+ # is specified, it will consist only of LGPLed source.
+ # The tests-related module list is the transitive closure of the specified
+ # modules, including tests modules, minus the main module list. Its lib/*
+ # sources (brought in through dependencies of *-tests modules) go into
+ # $testsbase/. It may contain GPLed source, even if --lgpl is specified.
+ # Determine main module list.
+ saved_inctests="$inctests"
+ inctests=""
+ modules="$specified_modules"
+ func_modules_transitive_closure
+ main_modules="$modules"
+ inctests="$saved_inctests"
+ if test $verbose -ge 1; then
+ echo "Main module list:"
+ echo "$main_modules" | sed -e 's/^/ /'
+ 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`
+ if test $verbose -ge 1; then
+ echo "Tests-related module list:"
+ echo "$testsrelated_modules" | sed -e 's/^/ /'
+ fi
! # Add the dummy module to the main module list if needed.
! modules="$main_modules"
func_modules_add_dummy
+ main_modules="$modules"
+
+ # Determine whether a $testsbase/libtests.a is needed.
+ use_libtests=false
+ for module in $testsrelated_modules; do
+ func_verify_nontests_module
+ if test -n "$module"; then
+ all_files=`func_get_filelist $module`
+ lib_files=`for f in $all_files; do \
+ case $f in \
+ lib/*) echo $f ;; \
+ esac; \
+ done | sed -e 's,^lib/,,'`
+ if test -n "$lib_files"; then
+ use_libtests=true
+ break
+ fi
+ fi
+ done
+
+ # Add the dummy module to the tests-related module list if needed.
+ if $use_libtests; then
+ modules="$testsrelated_modules"
+ func_modules_add_dummy
+ testsrelated_modules="$modules"
+ fi
# If --lgpl, verify that the licenses of modules are compatible.
if test -n "$lgpl"; then
! for module in $main_modules; do
license=`func_get_license $module`
case $license in
'GPLed build tool') ;;
***************
*** 2245,2255 ****
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
if test $module = config-h; then
# Assume config.h exists, and that -DHAVE_CONFIG_H is omitted.
sed_transform_lib_file=$sed_transform_lib_file'
--- 2355,2366 ----
fi
# Show banner notice of every module.
+ modules="$main_modules"
func_modules_notice
# Determine script to apply to imported library files.
sed_transform_lib_file=
! for module in $main_modules; do
if test $module = config-h; then
# Assume config.h exists, and that -DHAVE_CONFIG_H is omitted.
sed_transform_lib_file=$sed_transform_lib_file'
***************
*** 2258,2274 ****
break
fi
done
if test -n "$do_copyrights"; then
if test -n "$lgpl"; then
# Update license.
case "$lgpl" in
yes | 3)
! sed_transform_lib_file=$sed_transform_lib_file'
s/GNU General/GNU Lesser General/g
'
;;
2)
! sed_transform_lib_file=$sed_transform_lib_file'
s/GNU General/GNU Lesser General/g
s/version [23]\([ ,]\)/version 2.1\1/g
'
--- 2369,2386 ----
break
fi
done
+ sed_transform_main_lib_file="$sed_transform_lib_file"
if test -n "$do_copyrights"; then
if test -n "$lgpl"; then
# Update license.
case "$lgpl" in
yes | 3)
! sed_transform_main_lib_file=$sed_transform_main_lib_file'
s/GNU General/GNU Lesser General/g
'
;;
2)
! sed_transform_main_lib_file=$sed_transform_main_lib_file'
s/GNU General/GNU Lesser General/g
s/version [23]\([ ,]\)/version 2.1\1/g
'
***************
*** 2277,2283 ****
esac
else
# Update license.
! sed_transform_lib_file=$sed_transform_lib_file'
s/GNU Lesser General/GNU General/g
s/GNU Library General/GNU General/g
s/version \(2\|2\.1\)\([ ,]\)/version 3\2/g
--- 2389,2395 ----
esac
else
# Update license.
! sed_transform_main_lib_file=$sed_transform_main_lib_file'
s/GNU Lesser General/GNU General/g
s/GNU Library General/GNU General/g
s/version \(2\|2\.1\)\([ ,]\)/version 3\2/g
***************
*** 2285,2295 ****
fi
fi
! # Determine final file list.
func_modules_to_filelist
if test $verbose -ge 0; then
echo "File list:"
! echo "$files" | sed -e 's/^/ /'
fi
test -n "$files" \
--- 2397,2433 ----
fi
fi
! # Determine script to apply to library files that go into $testsbase/.
! sed_transform_testsrelated_lib_file="$sed_transform_lib_file"
! if test -n "$do_copyrights"; then
! # Update license.
! sed_transform_testsrelated_lib_file=$sed_transform_testsrelated_lib_file'
! s/GNU Lesser General/GNU General/g
! s/GNU Library General/GNU General/g
! s/version \(2\|2\.1\)\([ ,]\)/version 3\2/g
! '
! fi
!
! # Determine the final file lists.
! # They must be computed separately, because files in lib/* go into
! # $sourcebase/ if they are in the main file list but into $testsbase/
! # if they are in the tests-related file list. Furthermore lib/dummy.c
! # can be in both.
! # Determine final main file list.
! modules="$main_modules"
! func_modules_to_filelist
! main_files="$files"
! # Determine final tests-related file list.
! modules="$testsrelated_modules"
func_modules_to_filelist
+ testsrelated_files=`echo "$files" | sed -e 's,^lib/,tests=lib/,'`
+ # Merge both file lists.
+ sed_remove_empty_lines='/^$/d'
+ files=`{ echo "$main_files"; echo "$testsrelated_files"; } | sed -e
"$sed_remove_empty_lines" | LC_ALL=C sort -u`
if test $verbose -ge 0; then
echo "File list:"
! sed_prettyprint_files='s,^tests=lib/\(.*\)$,lib/\1 -> tests/\1,'
! echo "$files" | sed -e "$sed_prettyprint_files" -e 's/^/ /'
fi
test -n "$files" \
***************
*** 2307,2319 ****
s,^doc/,$cached_docbase/,
s,^lib/,$cached_sourcebase/,
s,^m4/,$cached_m4base/,
! s,^tests/,$cached_testsbase/,"
sed_rewrite_new_files="\
s,^build-aux/,$auxdir/,
s,^doc/,$docbase/,
s,^lib/,$sourcebase/,
s,^m4/,$m4base/,
! s,^tests/,$testsbase/,"
# Create directories.
{ echo "$sourcebase"
--- 2445,2459 ----
s,^doc/,$cached_docbase/,
s,^lib/,$cached_sourcebase/,
s,^m4/,$cached_m4base/,
! s,^tests/,$cached_testsbase/,
! s,^tests=lib/,$cached_testsbase/,"
sed_rewrite_new_files="\
s,^build-aux/,$auxdir/,
s,^doc/,$docbase/,
s,^lib/,$sourcebase/,
s,^m4/,$m4base/,
! s,^tests/,$testsbase/,
! s,^tests=lib/,$testsbase/,"
# Create directories.
{ echo "$sourcebase"
***************
*** 2404,2416 ****
# - already_present nonempty if the file already exists, empty otherwise
func_add_or_update ()
{
func_dest_tmpfilename "$g"
func_lookup_file "$f"
cp "$lookedup_file" "$tmpfile" || func_fatal_error "failed"
! if test -n "$sed_transform_lib_file"; then
! case "$f" in
lib/*)
! sed -e "$sed_transform_lib_file" \
< "$lookedup_file" > "$tmpfile" || func_fatal_error "failed"
;;
esac
--- 2544,2568 ----
# - already_present nonempty if the file already exists, empty otherwise
func_add_or_update ()
{
+ of="$f"
+ case "$f" in
+ tests=lib/*) f=`echo "$f" | sed -e 's,^tests=lib/,lib/,'` ;;
+ esac
func_dest_tmpfilename "$g"
func_lookup_file "$f"
cp "$lookedup_file" "$tmpfile" || func_fatal_error "failed"
! if test -n "$sed_transform_main_lib_file"; then
! case "$of" in
lib/*)
! sed -e "$sed_transform_main_lib_file" \
! < "$lookedup_file" > "$tmpfile" || func_fatal_error "failed"
! ;;
! esac
! fi
! if test -n "$sed_transform_testsrelated_lib_file"; then
! case "$of" in
! tests=lib/*)
! sed -e "$sed_transform_testsrelated_lib_file" \
< "$lookedup_file" > "$tmpfile" || func_fatal_error "failed"
;;
esac
***************
*** 2548,2553 ****
--- 2700,2706 ----
# Create library makefile.
func_dest_tmpfilename $sourcebase/$makefile_am
+ modules="$main_modules"
func_emit_lib_Makefile_am > "$tmpfile"
if test -f "$destdir"/$sourcebase/$makefile_am; then
if cmp "$destdir"/$sourcebase/$makefile_am "$tmpfile" > /dev/null; then
***************
*** 2813,2819 ****
if grep AC_GNU_SOURCE "$destdir"/$m4base/*.m4 >/dev/null 2>/dev/null; then
echo " AC_REQUIRE([AC_GNU_SOURCE])"
fi
! for module in $modules; do
func_verify_module
if test -n "$module"; then
func_get_autoconf_early_snippet "$module"
--- 2966,2972 ----
if grep AC_GNU_SOURCE "$destdir"/$m4base/*.m4 >/dev/null 2>/dev/null; then
echo " AC_REQUIRE([AC_GNU_SOURCE])"
fi
! for module in $final_modules; do
func_verify_module
if test -n "$module"; then
func_get_autoconf_early_snippet "$module"
***************
*** 2826,2832 ****
echo "# \"Check for header files, types and library functions\"."
echo "AC_DEFUN([${macro_prefix}_INIT],"
echo "["
- func_emit_initmacro_start
if test "$libtool" = true; then
echo " AM_CONDITIONAL([GL_COND_LIBTOOL], [true])"
echo " gl_cond_libtool=true"
--- 2979,2984 ----
***************
*** 2836,2842 ****
echo " gl_libdeps="
echo " gl_ltlibdeps="
fi
- echo " gl_source_base='$sourcebase'"
if test "$auxdir" != "build-aux"; then
sed_replace_build_aux='
:a
--- 2988,2993 ----
***************
*** 2847,2853 ****
else
sed_replace_build_aux=
fi
! for module in $modules; do
func_verify_module
if test -n "$module"; then
func_get_autoconf_snippet "$module" \
--- 2998,3006 ----
else
sed_replace_build_aux=
fi
! func_emit_initmacro_start $macro_prefix
! echo " gl_source_base='$sourcebase'"
! for module in $main_modules; do
func_verify_module
if test -n "$module"; then
func_get_autoconf_snippet "$module" \
***************
*** 2862,2867 ****
--- 3015,3038 ----
fi
fi
done
+ func_emit_initmacro_end $macro_prefix
+ echo " gltests_libdeps="
+ echo " gltests_ltlibdeps="
+ func_emit_initmacro_start ${macro_prefix}tests
+ echo " gl_source_base='$testsbase'"
+ for module in $testsrelated_modules; do
+ func_verify_module
+ if test -n "$module"; then
+ func_get_autoconf_snippet "$module" \
+ | 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" \
+ -e 's/\$gl_cond_libtool/false/g' \
+ -e 's/gl_libdeps/gltests_libdeps/g' \
+ -e 's/gl_ltlibdeps/gltests_ltlibdeps/g'
+ fi
+ done
+ func_emit_initmacro_end ${macro_prefix}tests
# _LIBDEPS and _LTLIBDEPS variables are not needed if this library is
# created using libtool, because libtool already handles the dependencies.
if test "$libtool" != true; then
***************
*** 2871,2879 ****
echo " ${libname_upper}_LTLIBDEPS=\"\$gl_ltlibdeps\""
echo " AC_SUBST([${libname_upper}_LTLIBDEPS])"
fi
! func_emit_initmacro_end
echo "])"
! func_emit_initmacro_done
echo
echo "# This macro records the list of files which have been installed by"
echo "# gnulib-tool and may be removed by future gnulib-tool invocations."
--- 3042,3054 ----
echo " ${libname_upper}_LTLIBDEPS=\"\$gl_ltlibdeps\""
echo " AC_SUBST([${libname_upper}_LTLIBDEPS])"
fi
! if $use_libtests; then
! echo " LIBTESTS_LIBDEPS=\"\$gltests_libdeps\""
! echo " AC_SUBST([LIBTESTS_LIBDEPS])"
! fi
echo "])"
! func_emit_initmacro_done $macro_prefix $sourcebase
! func_emit_initmacro_done ${macro_prefix}tests $testsbase
echo
echo "# This macro records the list of files which have been installed by"
echo "# gnulib-tool and may be removed by future gnulib-tool invocations."
***************
*** 2913,2918 ****
--- 3088,3094 ----
if test -n "$inctests"; then
# Create tests makefile.
func_dest_tmpfilename $testsbase/$makefile_am
+ modules="$testsrelated_modules"
func_emit_tests_Makefile_am > "$tmpfile"
if test -f "$destdir"/$testsbase/$makefile_am; then
if cmp "$destdir"/$testsbase/$makefile_am "$tmpfile" > /dev/null; then
***************
*** 3025,3037 ****
echo "Finished."
echo
echo "You may need to add #include directives for the following .h files."
! # Intersect $specified_modules and $modules
! # (since $specified_modules is not necessarily of subset of $modules - some
! # may have been skipped through --avoid, and since the elements of $modules
! # but not in $specified_modules can go away without explicit notice -
through
! # changes in the module dependencies).
echo "$specified_modules" > "$tmp"/modules1 # a sorted list, one module per
line
! echo "$modules" > "$tmp"/modules2 # also a sorted list, one module per line
# First the #include <...> directives without #ifs, sorted for convenience,
# then the #include "..." directives without #ifs, sorted for convenience,
# then the #include directives that are surrounded by #ifs. Not sorted.
--- 3201,3213 ----
echo "Finished."
echo
echo "You may need to add #include directives for the following .h files."
! # Intersect $specified_modules and $main_modules
! # (since $specified_modules is not necessarily of subset of $main_modules
! # - some may have been skipped through --avoid, and since the elements of
! # $main_modules but not in $specified_modules can go away without explicit
! # notice - through changes in the module dependencies).
echo "$specified_modules" > "$tmp"/modules1 # a sorted list, one module per
line
! echo "$main_modules" > "$tmp"/modules2 # also a sorted list, one module per
line
# First the #include <...> directives without #ifs, sorted for convenience,
# then the #include "..." directives without #ifs, sorted for convenience,
# then the #include directives that are surrounded by #ifs. Not sorted.
***************
*** 3054,3060 ****
) | sed -e '/^$/d' -e 's/^/ /'
rm -f "$tmp"/include-angles "$tmp"/include-quotes "$tmp"/include-if
! for module in $modules; do
func_get_link_directive "$module"
done \
| LC_ALL=C sort -u | sed -e '/^$/d' -e 's/^/ /' > "$tmp"/link
--- 3230,3236 ----
) | sed -e '/^$/d' -e 's/^/ /'
rm -f "$tmp"/include-angles "$tmp"/include-quotes "$tmp"/include-if
! for module in $main_modules; do
func_get_link_directive "$module"
done \
| LC_ALL=C sort -u | sed -e '/^$/d' -e 's/^/ /' > "$tmp"/link
***************
*** 3259,3264 ****
--- 3435,3441 ----
# Create $sourcebase/Makefile.am.
mkdir -p "$testdir/$sourcebase"
func_emit_lib_Makefile_am > "$testdir/$sourcebase/Makefile.am"
+ any_uses_subdirs="$uses_subdirs"
# Create $m4base/Makefile.am.
mkdir -p "$testdir/$m4base"
***************
*** 3288,3294 ****
--- 3465,3473 ----
if test -n "$inctests"; then
test -d "$testdir/$testsbase" || mkdir "$testdir/$testsbase"
# Create $testsbase/Makefile.am.
+ use_libtests=false
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])"
***************
*** 3330,3342 ****
# expansion of the required macro before the current point, and only one
# expansion total).
echo "AC_DEFUN([gl_INIT], ["
- func_emit_initmacro_start
sed_replace_build_aux='
:a
/AC_CONFIG_FILES(.*:build-aux\/.*)/{
s|AC_CONFIG_FILES(\(.*\):build-aux/\(.*\))|AC_CONFIG_FILES(\1:../'"$auxdir"'/\2)|
ba
}'
# We don't have explicit ordering constraints between the various
# autoconf snippets. It's cleanest to put those of the library before
# those of the tests.
--- 3509,3521 ----
# expansion of the required macro before the current point, and only one
# expansion total).
echo "AC_DEFUN([gl_INIT], ["
sed_replace_build_aux='
:a
/AC_CONFIG_FILES(.*:build-aux\/.*)/{
s|AC_CONFIG_FILES(\(.*\):build-aux/\(.*\))|AC_CONFIG_FILES(\1:../'"$auxdir"'/\2)|
ba
}'
+ func_emit_initmacro_start $macro_prefix
# We don't have explicit ordering constraints between the various
# autoconf snippets. It's cleanest to put those of the library before
# those of the tests.
***************
*** 3356,3361 ****
--- 3535,3541 ----
| sed -e "$sed_replace_build_aux"
fi
done
+ func_emit_initmacro_end $macro_prefix
# _LIBDEPS and _LTLIBDEPS variables are not needed if this library is
# created using libtool, because libtool already handles the
dependencies.
if test "$libtool" != true; then
***************
*** 3365,3373 ****
echo " ${libname_upper}_LTLIBDEPS=\"\$gl_ltlibdeps\""
echo " AC_SUBST([${libname_upper}_LTLIBDEPS])"
fi
- func_emit_initmacro_end
echo "])"
! func_emit_initmacro_done
echo
echo "gl_INIT"
echo
--- 3545,3552 ----
echo " ${libname_upper}_LTLIBDEPS=\"\$gl_ltlibdeps\""
echo " AC_SUBST([${libname_upper}_LTLIBDEPS])"
fi
echo "])"
! func_emit_initmacro_done $macro_prefix $sourcebase # FIXME use
$sourcebase or $testsbase?
echo
echo "gl_INIT"
echo
***************
*** 3416,3422 ****
echo
echo "AC_PROG_RANLIB"
echo
! if test -n "$uses_subdirs"; then
echo "AM_PROG_CC_C_O"
echo
fi
--- 3595,3601 ----
echo
echo "AC_PROG_RANLIB"
echo
! if test -n "$any_uses_subdirs"; then
echo "AM_PROG_CC_C_O"
echo
fi
***************
*** 3440,3446 ****
echo "gl_libdeps="
echo "gl_ltlibdeps="
fi
- echo "gl_source_base='$sourcebase'"
# Wrap the set of autoconf snippets into an autoconf macro that is then
# invoked. This is needed because autoconf does not support AC_REQUIRE
# at the top level:
--- 3619,3624 ----
***************
*** 3449,3455 ****
# expansion of the required macro before the current point, and only one
# expansion total).
echo "AC_DEFUN([gl_INIT], ["
- func_emit_initmacro_start
if test "$auxdir" != "build-aux"; then
sed_replace_build_aux='
:a
--- 3627,3632 ----
***************
*** 3460,3465 ****
--- 3637,3644 ----
else
sed_replace_build_aux=
fi
+ func_emit_initmacro_start $macro_prefix
+ echo "gl_source_base='$sourcebase'"
for module in $modules; do
func_verify_nontests_module
if test -n "$module"; then
***************
*** 3467,3472 ****
--- 3646,3652 ----
| sed -e "$sed_replace_build_aux"
fi
done
+ func_emit_initmacro_end $macro_prefix
# _LIBDEPS and _LTLIBDEPS variables are not needed if this library is
# created using libtool, because libtool already handles the dependencies.
if test "$libtool" != true; then
***************
*** 3476,3484 ****
echo " ${libname_upper}_LTLIBDEPS=\"\$gl_ltlibdeps\""
echo " AC_SUBST([${libname_upper}_LTLIBDEPS])"
fi
- func_emit_initmacro_end
echo "])"
! func_emit_initmacro_done
echo
echo "gl_INIT"
echo
--- 3656,3663 ----
echo " ${libname_upper}_LTLIBDEPS=\"\$gl_ltlibdeps\""
echo " AC_SUBST([${libname_upper}_LTLIBDEPS])"
fi
echo "])"
! func_emit_initmacro_done $macro_prefix $sourcebase
echo
echo "gl_INIT"
echo
- no license on some test modules, Jim Meyering, 2007/12/05
- Re: no license on some test modules, Bruno Haible, 2007/12/07
- Re: no license on some test modules,
Bruno Haible <=
- Re: no license on some test modules, Jim Meyering, 2007/12/10
- Re: no license on some test modules, Eric Blake, 2007/12/10
- Re: no license on some test modules, Eric Blake, 2007/12/11
- Re: no license on some test modules, Jim Meyering, 2007/12/11
- Re: no license on some test modules, Eric Blake, 2007/12/11
- Re: no license on some test modules, Ralf Wildenhues, 2007/12/12
- Re: no license on some test modules, Eric Blake, 2007/12/12
- Re: no license on some test modules, Eric Blake, 2007/12/12
- Re: no license on some test modules, Bruno Haible, 2007/12/26
- Re: no license on some test modules, Bruno Haible, 2007/12/26