[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [bug-gnulib] gnulib taking over libobjs?
From: |
Bruno Haible |
Subject: |
Re: [bug-gnulib] gnulib taking over libobjs? |
Date: |
Thu, 12 Oct 2006 14:30:56 +0200 |
User-agent: |
KMail/1.9.1 |
Simon Josefsson wrote:
> The last patch wasn't working, but this is somewhat better.
This appears to work reasonably well, and I need it also for gettext,
so I committed it.
Simon, compared to your proposed patch, I
- applied the same change to func_create_testdir as well,
- made the backslashing in sed_drop_objext unambiguous,
- removed the $(top_builddir)/${sourcebase}/ construct - the variable
$(${macro_prefix}_LIBOBJS) is only accessed from the $sourcebase directory
and does therefore not need this pathname prefix.
Attention: coreutils needs the following patch, because it mixes AC_LIBOBJs
from outside the gnulib-tool generated file list with gnulib-tool gl_LIBOBJs
in the same library.
*** coreutils/lib/Makefile.am 23 Aug 2006 18:37:27 -0000 1.252
--- coreutils/lib/Makefile.am 12 Oct 2006 12:29:41 -0000
***************
*** 29,34 ****
--- 29,37 ----
xmemcoll.c xmemcoll.h \
xmemxfrm.c xmemxfrm.h
+ libcoreutils_a_LIBADD += $(LIBOBJS)
+ libcoreutils_a_DEPENDENCIES += $(LIBOBJS)
+
check: unit-test
.PHONY: unit-test
2006-10-11 Simon Josefsson <address@hidden>
Bruno Haible <address@hidden>
Add support for multiple gnulib-tool invocations in the scope of a
single configure.ac file.
* gnulib-tool (func_emit_lib_Makefile_am): In the _LIBADD variable,
use a private [LT]LIBOBJS variant. Define a _DEPENDENCIES variable
with the same contents as the _LIBADD variable.
(func_emit_initmacro_start, func_emit_initmacro_end,
func_emit_initmacro_done): New functions.
(func_import, func_create_testdir): Invoke them. Allow the identifiers
gl_LIBOBJS and gl_LTLIBOBJS.
*** gnulib-tool.bak 2006-10-12 04:02:26.000000000 +0200
--- gnulib-tool 2006-10-12 04:19:48.000000000 +0200
***************
*** 1078,1083 ****
--- 1078,1084 ----
# - libname library name
# - makefile_name from --makefile-name
# - 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
func_emit_lib_Makefile_am ()
{
***************
*** 1122,1127 ****
--- 1123,1129 ----
-e 's,lib%_LTLIBRARIES,lib_LTLIBRARIES,g'
if test "$module" = 'alloca'; then
echo "${libname}_${libext}_LIBADD += @${perhapsLT}ALLOCA@"
+ echo "${libname}_${libext}_DEPENDENCIES += @${perhapsLT}ALLOCA@"
fi
} > amsnippet.tmp
# Skip the contents if its entirely empty.
***************
*** 1148,1154 ****
echo "${libname}_${libext}_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 "${libname}_${libext}_LIBADD = \$(${perhapsLT}LIBOBJS)"
if test "$libtool" = true; then
echo "${libname}_${libext}_LDFLAGS = \$(AM_LDFLAGS)"
fi
--- 1150,1157 ----
echo "${libname}_${libext}_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 "${libname}_${libext}_LIBADD = \$(${macro_prefix}_${perhapsLT}LIBOBJS)"
! echo "${libname}_${libext}_DEPENDENCIES =
\$(${macro_prefix}_${perhapsLT}LIBOBJS)"
if test "$libtool" = true; then
echo "${libname}_${libext}_LDFLAGS = \$(AM_LDFLAGS)"
fi
***************
*** 1288,1293 ****
--- 1291,1346 ----
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 ()
+ {
+ echo " m4_pushdef([AC_LIBOBJ], m4_defn([${macro_prefix}_LIBOBJ]))"
+ echo " m4_pushdef([AC_REPLACE_FUNCS],
m4_defn([${macro_prefix}_REPLACE_FUNCS]))"
+ }
+
+ # 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_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 " for i in \$${macro_prefix}_LIBOBJS; do"
+ echo " # Remove the extension."
+ echo " sed_drop_objext='s/\\.o\$//;s/\\.obj\$//'"
+ echo " i=\`echo \"\$i\" | sed \"\$sed_drop_objext\"\`"
+ 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
+ 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
+ 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)])])"
+ }
+
# func_import modules
# Uses also the variables
# - destdir target directory
***************
*** 1874,1880 ****
echo "AC_DEFUN([${macro_prefix}_EARLY],"
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 " AC_REQUIRE([AC_PROG_RANLIB])"
if grep AC_GNU_SOURCE "$destdir"/$m4base/*.m4 >/dev/null 2>/dev/null; then
echo " AC_REQUIRE([AC_GNU_SOURCE])"
--- 1927,1935 ----
echo "AC_DEFUN([${macro_prefix}_EARLY],"
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"
! echo " m4_pattern_allow([^gl_LTLIBOBJS\$])dnl a variable"
echo " AC_REQUIRE([AC_PROG_RANLIB])"
if grep AC_GNU_SOURCE "$destdir"/$m4base/*.m4 >/dev/null 2>/dev/null; then
echo " AC_REQUIRE([AC_GNU_SOURCE])"
***************
*** 1891,1896 ****
--- 1946,1952 ----
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"
***************
*** 1936,1942 ****
--- 1992,2000 ----
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."
***************
*** 2079,2084 ****
--- 2137,2143 ----
m4base=glm4
docbase=gldoc
testsbase=gltests
+ macro_prefix=gl
# Determine final module list.
func_modules_transitive_closure
***************
*** 2212,2217 ****
--- 2271,2277 ----
# 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
***************
*** 2249,2255 ****
--- 2309,2318 ----
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
# Usually $testsbase/config.h will be a superset of config.h. Verify this
***************
*** 2287,2293 ****
echo "AC_PROG_MAKE_SET"
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
echo "AC_PROG_RANLIB"
echo
--- 2350,2358 ----
echo "AC_PROG_MAKE_SET"
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"
! echo "m4_pattern_allow([^gl_LTLIBOBJS\$])dnl a variable"
echo
echo "AC_PROG_RANLIB"
echo
***************
*** 2321,2326 ****
--- 2386,2392 ----
# 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
***************
*** 2348,2354 ****
--- 2414,2423 ----
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
if test -n "$subdirs_with_configure_ac"; then
- Re: gnulib taking over libobjs?, James Youngman, 2006/10/05
- Re: [bug-gnulib] gnulib taking over libobjs?, Bruno Haible, 2006/10/05
- Re: [bug-gnulib] gnulib taking over libobjs?, Simon Josefsson, 2006/10/05
- Re: gnulib taking over libobjs?, Simon Josefsson, 2006/10/05
- Re: [bug-gnulib] gnulib taking over libobjs?, Bruno Haible, 2006/10/05
- Re: gnulib taking over libobjs?, Simon Josefsson, 2006/10/10
- Re: gnulib taking over libobjs?, Simon Josefsson, 2006/10/10
- Re: gnulib taking over libobjs?, Ralf Wildenhues, 2006/10/10
- Re: gnulib taking over libobjs?, Simon Josefsson, 2006/10/10
- Re: [bug-gnulib] gnulib taking over libobjs?, Bruno Haible, 2006/10/12
- Re: [bug-gnulib] gnulib taking over libobjs?,
Bruno Haible <=
- Re: gnulib taking over libobjs?, Jim Meyering, 2006/10/12
- Re: gnulib taking over libobjs?, Bruno Haible, 2006/10/12
- Re: gnulib taking over libobjs?, Jim Meyering, 2006/10/12
- Re: gnulib taking over libobjs?, Jim Meyering, 2006/10/12
- Re: gnulib taking over libobjs?, Bruno Haible, 2006/10/12
- Re: gnulib taking over libobjs?, Jim Meyering, 2006/10/12
- Re: gnulib taking over libobjs?, Eric Blake, 2006/10/12
- Re: gnulib taking over libobjs?, Jim Meyering, 2006/10/12
- Re: [bug-gnulib] gnulib taking over libobjs?, Bruno Haible, 2006/10/13
- Re: gnulib taking over libobjs?, Jim Meyering, 2006/10/13