Make setting LLVM_LIBS a function, put it to the other LLVM related functions and call it if LLVM is used.
Signed-off-by: Tobias Droste <[email protected]> --- configure.ac | 109 +++++++++++++++++++++++++++++------------------------------ 1 file changed, 54 insertions(+), 55 deletions(-) diff --git a/configure.ac b/configure.ac index d11f6cebc7..6e12ac8912 100644 --- a/configure.ac +++ b/configure.ac @@ -1005,6 +1005,58 @@ llvm_set_environment_variables() { fi } +dnl Set LLVM_LIBS - This is done after the driver configuration so +dnl that drivers can add additional components to LLVM_COMPONENTS. +dnl Previously, gallium drivers were updating LLVM_LIBS directly +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_set_llvm_libs() { + if ! $LLVM_CONFIG --libs ${LLVM_COMPONENTS} >/dev/null; then + AC_MSG_ERROR([Calling ${LLVM_CONFIG} failed]) + 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. + 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`" + fi + fi +} + llvm_require_version() { USE_LLVM=yes @@ -2564,64 +2616,11 @@ if test "x$enable_gallium_llvm" == "xyes"; then DEFINES="${DEFINES} -DHAVE_GALLIUM_LLVM" fi -dnl Set HAVE_LLVM compiler define if LLVM is used. - +dnl Define HAVE_LLVM and set LLVM_LIBS if test "x$USE_LLVM" == xyes; then DEFINES="${DEFINES} -DHAVE_LLVM=0x0$LLVM_VERSION_INT -DMESA_LLVM_VERSION_PATCH=$LLVM_VERSION_PATCH" -fi -dnl Set LLVM_LIBS - This is done after the driver configuration so -dnl that drivers can add additional components to LLVM_COMPONENTS. -dnl Previously, gallium drivers were updating LLVM_LIBS directly -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. - -if test "x$USE_LLVM" == xyes; then - - if ! $LLVM_CONFIG --libs ${LLVM_COMPONENTS} >/dev/null; then - AC_MSG_ERROR([Calling ${LLVM_CONFIG} failed]) - 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. - 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`" - fi - fi + llvm_set_llvm_libs fi AM_CONDITIONAL(HAVE_GALLIUM_SVGA, test "x$HAVE_GALLIUM_SVGA" = xyes) -- 2.11.0 _______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
