* Ralf Wildenhues wrote on Thu, Nov 08, 2007 at 09:05:24PM CET: > > LIBLTDL = ${top_builddir}/ltdl/libltdl.la [...] > New config files output variable `top_build_prefix'.
Thanks to Paul and Benoit for reviewing my Autoconf patch. Here's what I could think of for Libtool. It's a bit ugly in that it depends on the Autoconf version, and thus will fix the issue for AIX make only once Autoconf 2.62 is used. Hmm, do you think I could make the version comparison be against `2.61a.265'? Do you see a more straightforward way to find out whether Autoconf substitutes top_build_prefix, i.e., can I access `autom4te --trace' results from within macro files? I could define a helper macro in Autoconf, but that wouldn't feel much nicer either. I'll wait for comments a couple of days before applying. Thanks, Ralf 2007-11-10 Ralf Wildenhues <[EMAIL PROTECTED]> Use `${top_build_prefix}' for better compatibility with non-GNU make. * libltdl/m4/ltdl.m4 (_LT_BUILD_PREFIX): New macro. If the Autoconf version used is >= 2.62, then expand to `${top_build_prefix}', otherwise to `${top_builddir}/'. (LTDL_CONVENIENCE, LTDL_INSTALLABLE): Use it for defining LIBLTDL. Fixes a build failure with AIX make in a package using convenience libltdl in nonrecursive mode. * doc/libtool.texi (Distributing libltdl): Document requirements to define `top_build_prefix' if Automake is not used. Report by Bob Friesenhahn. Index: doc/libtool.texi =================================================================== RCS file: /cvsroot/libtool/libtool/doc/libtool.texi,v retrieving revision 1.231 diff -u -r1.231 libtool.texi --- doc/libtool.texi 4 Sep 2007 18:01:32 -0000 1.231 +++ doc/libtool.texi 10 Nov 2007 10:59:49 -0000 @@ -4526,9 +4526,9 @@ By default, this macro will pass options to the @file{configure} script in the subdirectory named by @code{LT_CONFIG_LTDL_DIR} in order to cause it to be built as an installable library. If you're not -using automake, you will need to define @code{top_builddir} and [EMAIL PROTECTED] in your makefile so that @code{LIBLTDL} and [EMAIL PROTECTED] are expanded properly. +using automake, you will need to define @code{top_build_prefix}, [EMAIL PROTECTED], and @code{top_srcdir} in your makefile so that [EMAIL PROTECTED] and @code{LTDLINCL} are expanded properly. If used in conjunction with @code{LT_WITH_LTDL}, this macro must appear @strong{before} the call to @code{LT_WITH_LTDL}. If you are @@ -4549,9 +4549,9 @@ By default, this macro will pass options to the @file{configure} script in the subdirectory named by @code{LT_CONFIG_LTDL_DIR} in order to cause it to be built as a convenience library. If you're not -using automake, you will need to define @code{top_builddir} and [EMAIL PROTECTED] in your makefile so that @code{LIBLTDL} and [EMAIL PROTECTED] are expanded properly. +using automake, you will need to define @code{top_build_prefix}, [EMAIL PROTECTED] and @code{top_srcdir} in your makefile so that [EMAIL PROTECTED] and @code{LTDLINCL} are expanded properly. @code{AC_LIBLTDL_CONVENIENCE} is a deprecated alias for @code{LTDL_CONVENIENCE}. @@ -4594,7 +4594,8 @@ If you're using the convenience libltdl, @var{LIBLTDL} will be the pathname for the convenience version of libltdl and @var{LTDLINCL} will be @option{-I} followed by the directory that contains libltdl, starting -with @[EMAIL PROTECTED]@}/} and @[EMAIL PROTECTED]@}/} respectively. +with @[EMAIL PROTECTED]@}} if available, otherwise with [EMAIL PROTECTED]@[EMAIL PROTECTED]/}, and @[EMAIL PROTECTED]@}/} respectively. If you request an installed version of libltdl and one is [EMAIL PROTECTED]@c @@ -4608,7 +4609,8 @@ be empty (this is just a blind assumption that @file{ltdl.h} is somewhere in the include path if libltdl is in the library path). If an installable version of libltdl must be built, its pathname, -starting with @[EMAIL PROTECTED]@}/}, will be stored in +starting with @[EMAIL PROTECTED]@}} if available, otherwise [EMAIL PROTECTED]@[EMAIL PROTECTED]/}, will be stored in @var{LIBLTDL}, and @var{LTDLINCL} will be set just like in the case of convenience library. So, when you want to link a program with libltdl, be it a convenience, installed or installable library, just Index: libltdl/m4/ltdl.m4 =================================================================== RCS file: /cvsroot/libtool/libtool/libltdl/m4/ltdl.m4,v retrieving revision 1.33 diff -u -r1.33 ltdl.m4 --- libltdl/m4/ltdl.m4 25 Mar 2007 12:12:43 -0000 1.33 +++ libltdl/m4/ltdl.m4 10 Nov 2007 10:59:54 -0000 @@ -45,16 +45,30 @@ m4_define([_LTDL_MODE], []) +# _LT_BUILD_PREFIX +# ---------------- +# If Autoconf is new enough, expand to `${top_build_prefix}', otherwise +# to `${top_builddir}/'. +m4_define([_LT_BUILD_PREFIX], +[m4_ifdef([AC_AUTOCONF_VERSION], + [m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.62]), + [-1], [${top_builddir}/], + [${top_build_prefix}])], + [${top_builddir}/])[]dnl +]) + + # LTDL_CONVENIENCE # ---------------- # sets LIBLTDL to the link flags for the libltdl convenience library and # LTDLINCL to the include flags for the libltdl header and adds # --enable-ltdl-convenience to the configure arguments. Note that # AC_CONFIG_SUBDIRS is not called here. LIBLTDL will be prefixed with -# '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/' -# (note the single quotes!). If your package is not flat and you're not -# using automake, define top_builddir and top_srcdir appropriately in -# your Makefiles. +# '${top_build_prefix}' if available, otherwise with '${top_builddir}/', +# and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single +# quotes!). If your package is not flat and you're not using automake, +# define top_build_prefix, top_builddir, and top_srcdir appropriately +# in your Makefiles. AC_DEFUN([LTDL_CONVENIENCE], [AC_BEFORE([$0], [LT_WITH_LTDL])dnl dnl Although the argument is deprecated and no longer documented, @@ -69,7 +83,8 @@ "") enable_ltdl_convenience=yes ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; esac -LIBLTDL='${top_builddir}'"${lt_ltdl_dir+/$lt_ltdl_dir}/libltdlc.la" + +LIBLTDL='_LT_BUILD_PREFIX'"${lt_ltdl_dir+$lt_ltdl_dir/}libltdlc.la" LTDLINCL='-I${top_srcdir}'"${lt_ltdl_dir+/$lt_ltdl_dir}" AC_SUBST([LIBLTDL]) @@ -96,10 +111,11 @@ # and LTDLINCL to the include flags for the libltdl header and adds # --enable-ltdl-install to the configure arguments. Note that # AC_CONFIG_SUBDIRS is not called from here. If an installed libltdl -# is not found, LIBLTDL will be prefixed with '${top_builddir}/' -# and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single -# quotes!). If your package is not flat and you're not using automake, -# define top_builddir and top_srcdir appropriately in your Makefiles. +# is not found, LIBLTDL will be prefixed with '${top_build_prefix}' if +# available, otherwise with '${top_builddir}/', and LTDLINCL will be +# prefixed with '${top_srcdir}/' (note the single quotes!). If your +# package is not flat and you're not using automake, define top_build_prefix, +# top_builddir, and top_srcdir appropriately in your Makefiles. # In the future, this macro may have to be called after LT_INIT. AC_DEFUN([LTDL_INSTALLABLE], [AC_BEFORE([$0], [LT_WITH_LTDL])dnl @@ -120,7 +136,7 @@ ]) if test x"$enable_ltdl_install" = x"yes"; then ac_configure_args="$ac_configure_args --enable-ltdl-install" - LIBLTDL='${top_builddir}'"${lt_ltdl_dir+/$lt_ltdl_dir}/libltdl.la" + LIBLTDL='_LT_BUILD_PREFIX'"${lt_ltdl_dir+$lt_ltdl_dir/}libltdl.la" LTDLINCL='-I${top_srcdir}'"${lt_ltdl_dir+/$lt_ltdl_dir}" else ac_configure_args="$ac_configure_args --enable-ltdl-install=no" _______________________________________________ Bug-libtool mailing list Bug-libtool@gnu.org http://lists.gnu.org/mailman/listinfo/bug-libtool