libtool-patches
[Top][All Lists]
Advanced

[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: Fri, 16 Nov 2007 08:08:47 +0100
User-agent: Mutt/1.5.13 (2006-08-11)

Hi Eric,

* Eric Blake wrote on Fri, Nov 16, 2007 at 02:14:08AM CET:
> 
> (and dropping autoconf)

Good idea.

> According to Ralf Wildenhues on 11/15/2007 2:30 PM:
> > Another nitty gritty detail: should I leave in the version check >= 2.62
> > in Libtool so that future Autoconf versions will not need to carry
> > around the witness macro baggage?
> 
> Sounds reasonable to me.  Once Libtool does AC_PREREQ([2.62]), the witness
> check is redundant.

Alright.  Applied like this.  Thanks.

Cheers,
Ralf

        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    16 Nov 2007 07:07:42 -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  16 Nov 2007 07:07:43 -0000
@@ -45,16 +45,32 @@
 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], [m4_ifdef([_AC_HAVE_TOP_BUILD_PREFIX],
+                         [${top_build_prefix}],
+                         [${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 +85,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 +113,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 +138,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"




reply via email to

[Prev in Thread] Current Thread [Next in Thread]