[Mesa-dev] [PATCH] configure: Trust LLVM >= 4.0 llvm-config --libs for shared libraries

Marek Olšák maraeo at gmail.com
Tue Aug 8 17:27:45 UTC 2017


Acked-by: Marek Olšák <marek.olsak at amd.com>

Marek

On Tue, Aug 8, 2017 at 9:23 AM, Michel Dänzer <michel at daenzer.net> wrote:
> From: Michel Dänzer <michel.daenzer at amd.com>
>
> No need to manually look for the library files anymore with current
> LLVM. This sidesteps the manual method failing when LLVM was built with
> -DLLVM_APPEND_VC_REV=ON.
>
> (This might already work with older versions of LLVM)
>
> Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>
> ---
>  configure.ac | 58 ++++++++++++++++++++++++++++++----------------------------
>  1 file changed, 30 insertions(+), 28 deletions(-)
>
> diff --git a/configure.ac b/configure.ac
> index 5b12dd8506..4992e9538f 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -2623,35 +2623,37 @@ if test "x$enable_llvm" = xyes; then
>      fi
>      LLVM_LIBS="`$LLVM_CONFIG --libs ${LLVM_COMPONENTS}`"
>
> -    dnl llvm-config may not give the right answer when llvm is a built as a
> -    dnl single shared library, so we must work the library name out for
> -    dnl ourselves.
> -    dnl (See https://llvm.org/bugs/show_bug.cgi?id=6823)
>      if test "x$enable_llvm_shared_libs" = xyes; then
> -        dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
> -        LLVM_SO_NAME=LLVM-`$LLVM_CONFIG --version`
> -        AS_IF([test -f "$LLVM_LIBDIR/lib$LLVM_SO_NAME.$IMP_LIB_EXT"], [llvm_have_one_so=yes])
> -
> -        if test "x$llvm_have_one_so" = xyes; then
> -            dnl LLVM was built using auto*, so there is only one shared object.
> -            LLVM_LIBS="-l$LLVM_SO_NAME"
> -        else
> -            dnl If LLVM was built with CMake, there will be one shared object per
> -            dnl component.
> -            AS_IF([test ! -f "$LLVM_LIBDIR/libLLVMTarget.$IMP_LIB_EXT"],
> -                    [AC_MSG_ERROR([Could not find llvm shared libraries:
> -       Please make sure you have built llvm with the --enable-shared option
> -       and that your llvm libraries are installed in $LLVM_LIBDIR
> -       If you have installed your llvm libraries to a different directory you
> -       can use the --with-llvm-prefix= configure flag to specify this directory.
> -       NOTE: Mesa is attempting to use llvm shared libraries by default.
> -       If you do not want to build with llvm shared libraries and instead want to
> -       use llvm static libraries then add --disable-llvm-shared-libs to your configure
> -       invocation and rebuild.])])
> -
> -           dnl We don't need to update LLVM_LIBS in this case because the LLVM
> -           dnl install uses a shared object for each component and we have
> -           dnl already added all of these objects to LLVM_LIBS.
> +        if test $LLVM_VERSION_MAJOR -lt 4; then
> +            dnl llvm-config may not give the right answer when llvm is a built as a
> +            dnl single shared library, so we must work the library name out for
> +            dnl ourselves.
> +            dnl (See https://llvm.org/bugs/show_bug.cgi?id=6823)
> +            dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
> +            LLVM_SO_NAME=LLVM-`$LLVM_CONFIG --version`
> +            AS_IF([test -f "$LLVM_LIBDIR/lib$LLVM_SO_NAME.$IMP_LIB_EXT"], [llvm_have_one_so=yes])
> +
> +            if test "x$llvm_have_one_so" = xyes; then
> +               dnl LLVM was built using auto*, so there is only one shared object.
> +               LLVM_LIBS="-l$LLVM_SO_NAME"
> +            else
> +                dnl If LLVM was built with CMake, there will be one shared object per
> +                dnl component.
> +                AS_IF([test ! -f "$LLVM_LIBDIR/libLLVMTarget.$IMP_LIB_EXT"],
> +                      [AC_MSG_ERROR([Could not find llvm shared libraries:
> +                       Please make sure you have built llvm with the --enable-shared option
> +                       and that your llvm libraries are installed in $LLVM_LIBDIR
> +                       If you have installed your llvm libraries to a different directory you
> +                       can use the --with-llvm-prefix= configure flag to specify this directory.
> +                       NOTE: Mesa is attempting to use llvm shared libraries by default.
> +                       If you do not want to build with llvm shared libraries and instead want to
> +                       use llvm static libraries then add --disable-llvm-shared-libs to your configure
> +                       invocation and rebuild.])])
> +
> +                dnl We don't need to update LLVM_LIBS in this case because the LLVM
> +                dnl install uses a shared object for each component and we have
> +                dnl already added all of these objects to LLVM_LIBS.
> +            fi
>          fi
>      else
>          AC_MSG_WARN([Building mesa with statically linked LLVM may cause compilation issues])
> --
> 2.13.3
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list