From: Christian Babeux Date: Fri, 3 Aug 2012 20:31:27 +0000 (-0400) Subject: Fix: Libtool fails to find dependent libraries when cross-compiling lttng-tools X-Git-Tag: v2.0.5~6 X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=b5e7bec3024d6af95a172afd776bbd0f782e3dcb;p=lttng-tools.git Fix: Libtool fails to find dependent libraries when cross-compiling lttng-tools This problem arise when cross compiling and linking libraries with indirect libraries dependencies (such as liblttng-ust). This "bug" is caused by an upstream modification in the libtool package on Debian system. The libtool "link_all_deplibs" flag is set to "no" by default on linux targets (AFAIK, other distros set it to "unknown"). The chosen solution is to detect such cases via the configure script and automagically patch the libtool.m4 by forcing the "link_all_deplibs" to "unknown". This fixup can be disabled with the appropriate configure flag: ./configure --disable-libtool-linkdep-fixup Sample configure output on affected systems: checking for occurence(s) of link_all_deplibs = no in ./config/libtool.m4... 3 configure: WARNING: the detected libtool will not link all dependencies, forcing link_all_deplibs = unknown Acked-by: Mathieu Desnoyers Signed-off-by: Christian Babeux Signed-off-by: David Goulet --- diff --git a/configure.ac b/configure.ac index 9ad1135b7..286aa8933 100644 --- a/configure.ac +++ b/configure.ac @@ -14,6 +14,31 @@ AC_DEFINE_UNQUOTED([VERSION_DESCRIPTION], ["$version_description"], "") AC_CONFIG_HEADERS([include/config.h]) +AC_PROG_GREP +# libtool link_all_deplibs fixup. See http://bugs.lttng.org/issues/321. +AC_ARG_ENABLE(libtool-linkdep-fixup, + AS_HELP_STRING([--disable-libtool-linkdep-fixup], + [disable the libtool fixup for linking all dependent libraries (link_all_deplibs)]), + libtool_fixup=$enableval, + libtool_fixup=yes) + +AS_IF([test "x$libtool_fixup" = "xyes"], + [ + libtool_m4="$srcdir/config/libtool.m4" + libtool_flag_pattern=".*link_all_deplibs\s*,\s*\$1\s*)" + AC_MSG_CHECKING([for occurence(s) of link_all_deplibs = no in $libtool_m4]) + libtool_flag_pattern_count=$(grep -c "$libtool_flag_pattern\s*=\s*no" $libtool_m4) + AS_IF([test $libtool_flag_pattern_count -ne 0], + [ + AC_MSG_RESULT([$libtool_flag_pattern_count]) + AC_MSG_WARN([the detected libtool will not link all dependencies, forcing link_all_deplibs = unknown]) + sed -i "s/\($libtool_flag_pattern\)\s*=\s*no/\1=unknown/g" $libtool_m4 + ], + [ + AC_MSG_RESULT([none]) + ]) + ]) + AC_CHECK_HEADERS([ \ sys/types.h unistd.h fcntl.h string.h pthread.h limits.h \ signal.h stdlib.h sys/un.h sys/socket.h stdlib.h stdio.h \