With this patch, gnulib-tool supports source files in subdirectories of lib/.
2006-11-12 Bruno Haible <[EMAIL PROTECTED]> Finish support for source files in subdirectories. * gnulib-tool (func_emit_lib_Makefile_am): If some of the source files are in subdirectories, set uses_subdirs and add 'subdir-objects' to AUTOMAKE_OPTIONS. (func_import, func_create_testdir): Invoke AM_PROG_CC_C_O in this case. *** gnulib-20061108/gnulib-tool.bak 2006-11-12 20:44:34.000000000 +0100 --- gnulib-20061108/gnulib-tool 2006-11-12 21:16:19.000000000 +0100 *************** *** 1131,1136 **** --- 1131,1138 ---- # - 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 + # Output: + # - uses_subdirs nonempty if object files in subdirs exist func_emit_lib_Makefile_am () { # When creating an includable Makefile.am snippet, augment variables with *************** *** 1156,1166 **** echo "# Reproduce by: $actioncmd" fi echo ! if test -z "$makefile_name"; then ! echo "AUTOMAKE_OPTIONS = 1.5 gnits" ! fi ! echo ! ( for module in $modules; do func_verify_nontests_module if test -n "$module"; then --- 1158,1165 ---- echo "# Reproduce by: $actioncmd" fi echo ! uses_subdirs= ! { for module in $modules; do func_verify_nontests_module if test -n "$module"; then *************** *** 1186,1194 **** echo fi rm -f amsnippet.tmp fi done ! ) > allsnippets.tmp if grep "^[a-zA-Z0-9_]*_${perhapsLT}LIBRARIES *= *$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. --- 1185,1209 ---- 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) uses_subdirs=yes ;; + esac + done fi done ! } > allsnippets.tmp ! if test -z "$makefile_name"; then ! # 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 gnits${subdir_options}" ! fi ! echo if grep "^[a-zA-Z0-9_]*_${perhapsLT}LIBRARIES *= *$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. *************** *** 1966,1971 **** --- 1981,1989 ---- echo " m4_pattern_allow([^gl_LIBOBJS\$])dnl a variable" echo " m4_pattern_allow([^gl_LTLIBOBJS\$])dnl a variable" echo " AC_REQUIRE([AC_PROG_RANLIB])" + if test -n "$uses_subdirs"; then + echo " AC_REQUIRE([AM_PROG_CC_C_O])" + fi if grep AC_GNU_SOURCE "$destdir"/$m4base/*.m4 >/dev/null 2>/dev/null; then echo " AC_REQUIRE([AC_GNU_SOURCE])" fi *************** *** 2396,2401 **** --- 2414,2423 ---- echo echo "AC_PROG_RANLIB" echo + if test -n "$uses_subdirs"; then + echo "AM_PROG_CC_C_O" + echo + fi if grep AC_GNU_SOURCE "$testdir/$m4base"/*.m4 >/dev/null 2>/dev/null; then echo "AC_GNU_SOURCE" echo