Consolidate the required LLVM versions at the top where the other versions for dependencies are listed.
This also tries to get the patch version from the LLVM headers. It defaults to 0 if it does not find it. This is good enough since the patch version is in the header since 3.6.0 and the only driver that need this require >=3.6.0. Signed-off-by: Tobias Droste <tdro...@gmx.de> --- configure.ac | 72 +++++++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 57 insertions(+), 15 deletions(-) diff --git a/configure.ac b/configure.ac index 9e7130ad..770db66 100644 --- a/configure.ac +++ b/configure.ac @@ -93,6 +93,14 @@ XVMC_REQUIRED=1.0.6 PYTHON_MAKO_REQUIRED=0.8.0 LIBSENSORS_REQUIRED=4.0.0 +dnl LLVM versions +LLVM_REQUIRED_GALLIUM=3.3.0 +LLVM_REQUIRED_OPENCL=3.6.0 +LLVM_REQUIRED_R600=3.6.0 +LLVM_REQUIRED_RADEONSI=3.6.0 +LLVM_REQUIRED_RADV=3.9.0 +LLVM_REQUIRED_SWR=3.6.0 + dnl Check for progs AC_PROG_CPP AC_PROG_CC @@ -972,16 +980,18 @@ llvm_set_environment_variables() { [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"]) AC_COMPUTE_INT([LLVM_VERSION_MINOR], [LLVM_VERSION_MINOR], [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"]) + AC_COMPUTE_INT([LLVM_VERSION_PATCH], [LLVM_VERSION_PATCH], + [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"]) - LLVM_VERSION_PATCH=`echo $LLVM_VERSION | cut -d. -f3 | egrep -o '^[[0-9]]+'` + # Only needed for LLVM < 3.6.0 if test -z "$LLVM_VERSION_PATCH"; then LLVM_VERSION_PATCH=0 fi - if test -n "${LLVM_VERSION_MAJOR}"; then + if test "$LLVM_VERSION_MINOR" -lt 10; then LLVM_VERSION_INT="${LLVM_VERSION_MAJOR}0${LLVM_VERSION_MINOR}" else - LLVM_VERSION_INT=`echo $LLVM_VERSION | sed -e 's/\([[0-9]]\)\.\([[0-9]]\)/\10\2/g'` + LLVM_VERSION_INT="${LLVM_VERSION_MAJOR}${LLVM_VERSION_MINOR}" fi DEFINES="${DEFINES} -DHAVE_LLVM=0x0$LLVM_VERSION_INT -DMESA_LLVM_VERSION_PATCH=$LLVM_VERSION_PATCH" @@ -993,9 +1003,41 @@ llvm_set_environment_variables() { } llvm_check_version_for() { - if test "${LLVM_VERSION_INT}${LLVM_VERSION_PATCH}" -lt "${1}0${2}${3}"; then - AC_MSG_ERROR([LLVM $1.$2.$3 or newer is required for $4]) + if test "x$MESA_LLVM" = x0; then + AC_MSG_ERROR([LLVM $1 or newer is required for $2]) + return + fi + + llvm_target_version_major=`echo $1 | cut -d. -f1 | egrep -o '^[[0-9]]+'` + llvm_target_version_minor=`echo $1 | cut -d. -f2 | egrep -o '^[[0-9]]+'` + llvm_target_version_patch=`echo $1 | cut -d. -f3 | egrep -o '^[[0-9]]+'` + + if test "$LLVM_VERSION_MAJOR" -gt "$llvm_target_version_major"; then + # major > required major + # --> OK + return + fi + + if test "$LLVM_VERSION_MAJOR" -eq "$llvm_target_version_major"; then + if test "$LLVM_VERSION_MINOR" -gt "$llvm_target_version_minor"; then + # major = required major and + # minor > required minor + # --> OK + return + else + if test "$LLVM_VERSION_MINOR" -eq "$llvm_target_version_minor"; then + if test "$LLVM_VERSION_PATCH" -ge "$llvm_target_version_patch"; then + # major = required major and + # minor = required minor and + # patch >= required patch + # --> OK + return + fi + fi + fi fi + + AC_MSG_ERROR([LLVM $1 or newer is required for $2]) } radeon_llvm_check() { @@ -1007,11 +1049,11 @@ radeon_llvm_check() { llvm_check_version_for $* - llvm_add_target $amdgpu_llvm_target_name $4 + llvm_add_target $amdgpu_llvm_target_name $2 - llvm_add_default_components $4 - llvm_add_component "bitreader" $4 - llvm_add_component "ipo" $4 + llvm_add_default_components $2 + llvm_add_component "bitreader" $2 + llvm_add_component "ipo" $2 NEED_RADEON_LLVM=yes if test "x$have_libelf" != xyes; then @@ -1887,7 +1929,7 @@ if test -n "$with_vulkan_drivers"; then ;; xradeon) PKG_CHECK_MODULES([AMDGPU], [libdrm_amdgpu >= $LIBDRM_AMDGPU_REQUIRED]) - radeon_llvm_check "3" "9" "0" "radv" + radeon_llvm_check $LLVM_REQUIRED_RADV "radv" HAVE_RADEON_VULKAN=yes; if test "x$with_sha1" == "x"; then AC_MSG_ERROR([radv vulkan driver requires SHA1]) @@ -2176,7 +2218,7 @@ if test "x$enable_opencl" = xyes; then AC_MSG_ERROR([Clover requires libelf]) fi - llvm_check_version_for "3" "6" "0" "opencl" + llvm_check_version_for $LLVM_REQUIRED_OPENCL "opencl" llvm_add_default_components "opencl" llvm_add_component "all-targets" "opencl" @@ -2396,7 +2438,7 @@ gallium_require_drm() { gallium_require_llvm() { if test "x$enable_gallium_llvm" == "xyes"; then - llvm_check_version_for "3" "3" "0" "gallium" + llvm_check_version_for $LLVM_REQUIRED_GALLIUM "gallium" else AC_MSG_ERROR([--enable-gallium-llvm is required when building $1]) fi @@ -2507,7 +2549,7 @@ if test -n "$with_gallium_drivers"; then gallium_require_drm "r600" gallium_require_drm_loader if test "x$enable_opencl" = xyes; then - radeon_gallium_llvm_check "3" "6" "0" "r600" + radeon_gallium_llvm_check $LLVM_REQUIRED_R600 "r600" llvm_add_component "asmparser" "r600" llvm_add_component "bitreader" "r600" @@ -2519,7 +2561,7 @@ if test -n "$with_gallium_drivers"; then PKG_CHECK_MODULES([AMDGPU], [libdrm_amdgpu >= $LIBDRM_AMDGPU_REQUIRED]) gallium_require_drm "radeonsi" gallium_require_drm_loader - radeon_gallium_llvm_check "3" "6" "0" "radeonsi" + radeon_gallium_llvm_check $LLVM_REQUIRED_RADEONSI "radeonsi" require_egl_drm "radeonsi" ;; xnouveau) @@ -2541,7 +2583,7 @@ if test -n "$with_gallium_drivers"; then fi ;; xswr) - llvm_check_version_for "3" "6" "0" "swr" + llvm_check_version_for $LLVM_REQUIRED_SWR "swr" gallium_require_llvm "swr" swr_require_cxx_feature_flags "C++11" "__cplusplus >= 201103L" \ -- 2.10.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev