summaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
authorEmil Velikov <emil.velikov@collabora.com>2017-10-05 11:19:04 +0100
committerEmil Velikov <emil.l.velikov@gmail.com>2017-10-13 12:56:12 +0100
commit98fdff7247b6877d028d33284f9cc63189ee204e (patch)
tree0be62da86dfc291fb0228b399abde437e30a5628 /configure.ac
parent9032e2cdcc5e356bb343bbc64f5e8889827fbe28 (diff)
configure.ac: factor out detection for old and buggy llvm
As of LLVM 3.9 one could use consistent ways to handle the component. Factor out the current handling, as it will be used for older versions. Cc: mesa-stable@lists.freedesktop.org Cc: Michel Dänzer <michel.daenzer@amd.com> Signed-off-by: Emil Velikov <emil.velikov@collabora.com> Reviewed-by: Tobias Droste <tdroste@gmx.de>
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac63
1 files changed, 34 insertions, 29 deletions
diff --git a/configure.ac b/configure.ac
index 898eebf3e0..c25b4e20b7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2642,6 +2642,39 @@ if test "x$HAVE_GALLIUM_VC4" != xyes -a "x$HAVE_GALLIUM_PL111" = xyes ; then
AC_MSG_ERROR([Building with pl111 requires vc4])
fi
+
+detect_old_buggy_llvm() {
+ 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
+}
+
dnl
dnl Set defines and buildtime variables only when using LLVM.
dnl
@@ -2663,35 +2696,7 @@ if test "x$enable_llvm" = xyes; then
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
- 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
+ detect_old_buggy_llvm
fi
else
AC_MSG_WARN([Building mesa with statically linked LLVM may cause compilation issues])