[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: New substitution: top_build_prefix
From: |
Ralf Wildenhues |
Subject: |
Re: New substitution: top_build_prefix |
Date: |
Sat, 10 Nov 2007 12:00:22 +0100 |
User-agent: |
Mutt/1.5.13 (2006-08-11) |
* 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 <address@hidden>
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
address@hidden in your makefile so that @code{LIBLTDL} and
address@hidden are expanded properly.
+using automake, you will need to define @code{top_build_prefix},
address@hidden, and @code{top_srcdir} in your makefile so that
address@hidden 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
address@hidden in your makefile so that @code{LIBLTDL} and
address@hidden are expanded properly.
+using automake, you will need to define @code{top_build_prefix},
address@hidden and @code{top_srcdir} in your makefile so that
address@hidden 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 @address@hidden@}/} and @address@hidden@}/} respectively.
+with @address@hidden@}} if available, otherwise with
address@hidden@address@hidden/}, and @address@hidden@}/} respectively.
If you request an installed version of libltdl and one is
address@hidden@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 @address@hidden@}/}, will be stored in
+starting with @address@hidden@}} if available, otherwise
address@hidden@address@hidden/}, 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"