* Christian Babeux ([email protected]) wrote:
> 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
> 
> Signed-off-by: Christian Babeux <[email protected]>

Acked-by: Mathieu Desnoyers <[email protected]>

> ---
>  configure.ac | 25 +++++++++++++++++++++++++
>  1 file changed, 25 insertions(+)
> 
> diff --git a/configure.ac b/configure.ac
> index 17e6b67..3a023cd 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 \
> -- 
> 1.7.11.3
> 
> 
> _______________________________________________
> lttng-dev mailing list
> [email protected]
> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

-- 
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com

_______________________________________________
lttng-dev mailing list
[email protected]
http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

Reply via email to