Fix: Libtool fails to find dependent libraries when cross-compiling lttng-ust
authorChristian Babeux <christian.babeux@efficios.com>
Thu, 2 Aug 2012 22:55:11 +0000 (18:55 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Thu, 2 Aug 2012 22:55:11 +0000 (18:55 -0400)
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

Fixes: #321
Signed-off-by: Christian Babeux <christian.babeux@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
configure.ac

index 4d40f753cb861839bbc05ca74c72f1c6adedb0a1..79c33ff395896101319c4961e5d975f60c747d7e 100644 (file)
@@ -39,6 +39,31 @@ version_description="New type of beer, 100% from Quebec, flavored with sapin bea
 AC_DEFINE_UNQUOTED([VERSION_NAME], ["$version_name"], [UST version name])
 AC_DEFINE_UNQUOTED([VERSION_DESCRIPTION], ["$version_description"], [UST version description])
 
+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])
+                 ])
+           ])
+
 # Checks for programs.
 AC_PROG_CC
 AC_PROG_CXX
This page took 0.028288 seconds and 4 git commands to generate.