[Mesa-dev] [PATCH 3/7] configure.ac: rework llvm libs handling for 3.9+
Tobias Droste
tdroste at gmx.de
Thu Oct 5 17:47:17 UTC 2017
Am Donnerstag, 5. Oktober 2017, 12:19:05 CEST schrieb Emil Velikov:
> From: Emil Velikov <emil.velikov at collabora.com>
>
> Earlier versions need different quirks, but as of LLVM 3.9 llvm-config
> provides --link-shared/link-static toggles.
>
> The output of which seems to be reliable - looking at LLVM 3.9, 4.0 and
> 5.0.
>
> Note that there are earlier code will be used for pre LLVM 3.9 and is
> unchanged.
>
> This effectively fixes LLVM static linking, while providing a clearer
> and more robust solution for future versions.
>
> Mildly interesting side notes:
>
> - build-mode (introduced with 3.8) was buggy with 3.8
> It shows "static" when build with -DLLVM_LINK_LLVM_DYLIB=ON, yet it was
> consistent with --libs. The latter shows the static libraries.
>
> - libnames and libfiles are broken with LVM 3.9
> The library prefix and extension is printed twice liblibLLVM-3.9.so.so
>
> Cc: mesa-stable at lists.freedesktop.org
> Cc: Dieter Nützel <Dieter at nuetzel-hh.de>
> Cc: Michel Dänzer <michel.daenzer at amd.com>
> Signed-off-by: Emil Velikov <emil.velikov at collabora.com>
> ---
> configure.ac | 29 +++++++++++++++++++----------
> 1 file changed, 19 insertions(+), 10 deletions(-)
>
> diff --git a/configure.ac b/configure.ac
> index 308938a5a88..dbaa6569e4e 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -2684,18 +2684,27 @@ if test "x$enable_llvm" = xyes; then
> dnl this was causing the same libraries to be appear multiple times
> dnl in LLVM_LIBS.
>
> - LLVM_LIBS="`$LLVM_CONFIG --libs ${LLVM_COMPONENTS}`"
> -
> - if test "x$enable_llvm_shared_libs" = xyes; then
> - if test $LLVM_VERSION_MAJOR -lt 4 -o "`$LLVM_CONFIG --shared-mode ${LLVM_COMPONENTS}`" = static; then
> - detect_old_buggy_llvm
> + if test $LLVM_VERSION_MAJOR -ge 4 -o $LLVM_VERSION_MAJOR -eq 3 -a $LLVM_VERSION_MINOR -ge 9; then
> + if test "x$enable_llvm_shared_libs" = xyes; then
> + LLVM_LIBS="`$LLVM_CONFIG --link-shared --libs ${LLVM_COMPONENTS}`"
> + else
> + LLVM_LIBS="`$LLVM_CONFIG --link-static --libs ${LLVM_COMPONENTS} --system-libs`"
> + dnl llvm-config lists the system libs on a separate line. While
> + dnl invoking --system-libs without --link-static assumes shared link.
> + dnl Everybody now, say - Thank you LLVM developers
> + LLVM_LIBS="`echo $LLVM_LIBS | $SED 's/\n//g'`"
Split this into two calls?
LLVM_LIBS="`$LLVM_CONFIG --link-static --libs ${LLVM_COMPONENTS}`"
dnl We need to link to llvm system libs when using static libs
LLVM_LIBS="$LLVM_LIBS `$LLVM_CONFIG --link-static --system-libs`"
Either way:
Reviewed-by: Tobias Droste <tdroste at gmx.de>
> fi
> else
> - AC_MSG_WARN([Building mesa with statically linked LLVM may cause compilation issues])
> - dnl We need to link to llvm system libs when using static libs
> - dnl However, only llvm 3.5+ provides --system-libs
> - if test $LLVM_VERSION_MAJOR -ge 4 -o $LLVM_VERSION_MAJOR -eq 3 -a $LLVM_VERSION_MINOR -ge 5; then
> - LLVM_LIBS="$LLVM_LIBS `$LLVM_CONFIG --system-libs`"
> + LLVM_LIBS="`$LLVM_CONFIG --libs ${LLVM_COMPONENTS}`"
> + if test "x$enable_llvm_shared_libs" = xyes; then
> + detect_old_buggy_llvm
> + else
> + AC_MSG_WARN([Building mesa with statically linked LLVM may cause compilation issues])
> + dnl We need to link to llvm system libs when using static libs
> + dnl However, only llvm 3.5+ provides --system-libs
> + if test $LLVM_VERSION_MAJOR -ge 4 -o $LLVM_VERSION_MAJOR -eq 3 -a $LLVM_VERSION_MINOR -ge 5; then
> + LLVM_LIBS="$LLVM_LIBS `$LLVM_CONFIG --system-libs`"
> + fi
> fi
> fi
> fi
>
More information about the mesa-dev
mailing list