llvm can be built with cmake in a libray with the name libLLVM.so.$version
Tested with both llvm-3.7.0 and llvm-3.8.0svn

v2: check and use llvm build-system feature, update comments

Signed-off-by: Laurent Carlier <lordhea...@gmail.com>
---
 configure.ac | 60 +++++++++++++++++++++++++++++++++++++-----------------------
 1 file changed, 37 insertions(+), 23 deletions(-)

diff --git a/configure.ac b/configure.ac
index 217281f..6101836 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2188,39 +2188,53 @@ dnl by calling llvm-config --libs 
${DRIVER_LLVM_COMPONENTS}, but
 dnl this was causing the same libraries to be appear multiple times
 dnl in LLVM_LIBS.
 
+llvm_cmake_check_libs() {
+    dnl If LLVM was built with CMake, there will be one shared object per
+    dnl component or one shared object.
+    LLVM_SO_NAME=LLVM.$IMP_LIB_EXT.`$LLVM_CONFIG --version`
+    AS_IF([test -f "$LLVM_LIBDIR/lib$LLVM_SO_NAME"], [llvm_have_one_so=yes])
+            
+    if test "x$llvm_have_one_so" = xyes; then
+        dnl LLVM was built with cmake with only one shared versioned object.
+        LLVM_LIBS="-l:lib$LLVM_SO_NAME"
+    else
+        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.])])
+    fi
+}
+
 if test "x$MESA_LLVM" != x0; then
 
     LLVM_LIBS="`$LLVM_CONFIG --libs ${LLVM_COMPONENTS}`"
+    dnl with llvm 3.8 we can try to determine libray name from the buildsystem
+    AS_IF([test "$LLVM_VERSION_INT" -ge "308"], 
[llvm_build_system="`$LLVM_CONFIG --build-system`"])
 
     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"
+        if test "x$llvm_build_system" = xcmake; then
+            llvm_cmake_check_libs
         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.
+            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
+                llvm_cmake_check_libs
+            fi
         fi
     else
         AC_MSG_WARN([Building mesa with statically linked LLVM may cause 
compilation issues])
-- 
2.6.0

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to