configure.ac: factor out detection for old and buggy llvm
authorEmil Velikov <emil.velikov@collabora.com>
Thu, 5 Oct 2017 10:19:04 +0000 (11:19 +0100)
committerEmil Velikov <emil.l.velikov@gmail.com>
Fri, 13 Oct 2017 11:56:12 +0000 (12:56 +0100)
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>
configure.ac

index 898eebf3e0af978c9f183385109dc348d80be985..c25b4e20b7c8bf4c6dbe478dcf9d740d858a0d92 100644 (file)
@@ -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])