X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=configure.ac;h=799f5ebda029242c4f8af1c56e555fd477a197ad;hb=a98f2e53e1c669dee3114badcce261e564748af4;hp=07326e2793efbe1399691a907b212760c91d4c92;hpb=3f42859367cdd66b460bc8af4eab6cf9d0adc086;p=mesa.git diff --git a/configure.ac b/configure.ac index 07326e2793e..799f5ebda02 100644 --- a/configure.ac +++ b/configure.ac @@ -92,6 +92,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 @@ -899,7 +907,11 @@ llvm_add_component() { new_llvm_component=$1 driver_name=$2 - LLVM_COMPONENTS="$LLVM_COMPONENTS $new_llvm_component" + if $LLVM_CONFIG --components | grep -iqw $new_llvm_component ; then + LLVM_COMPONENTS="${LLVM_COMPONENTS} ${new_llvm_component}" + else + AC_MSG_ERROR([LLVM component '$new_llvm_component' not enabled in your LLVM build. Required by $driver_name.]) + fi } llvm_add_default_components() { @@ -970,20 +982,20 @@ 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 - llvm_add_default_components "gallium" - DEFINES="${DEFINES} -DHAVE_LLVM=0x0$LLVM_VERSION_INT -DMESA_LLVM_VERSION_PATCH=$LLVM_VERSION_PATCH" MESA_LLVM=1 else @@ -993,9 +1005,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() { @@ -1005,12 +1049,13 @@ radeon_llvm_check() { amdgpu_llvm_target_name='amdgpu' fi - llvm_check_version_for $2 $3 $4 $1 + llvm_check_version_for $* - llvm_add_target $amdgpu_llvm_target_name $1 + llvm_add_target $amdgpu_llvm_target_name $2 - llvm_add_component "bitreader" $1 - llvm_add_component "ipo" $1 + 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 @@ -1660,13 +1705,14 @@ dnl AC_ARG_ENABLE([glx-tls], [AS_HELP_STRING([--enable-glx-tls], - [enable TLS support in GLX @<:@default=disabled@:>@])], + [enable TLS support in GLX @<:@default=enabled@:>@])], [GLX_USE_TLS="$enableval"], - [GLX_USE_TLS=no]) + [GLX_USE_TLS=yes]) AC_SUBST(GLX_TLS, ${GLX_USE_TLS}) -AS_IF([test "x$GLX_USE_TLS" = xyes -a "x$ax_pthread_ok" = xyes], - [DEFINES="${DEFINES} -DGLX_USE_TLS"]) +if test "x$GLX_USE_TLS" = xyes; then + DEFINES="$DEFINES -DGLX_USE_TLS" +fi dnl Read-only text section on x86 hardened platforms AC_ARG_ENABLE([glx-read-only-text], @@ -1858,7 +1904,7 @@ if test -n "$with_vulkan_drivers"; then ;; xradeon) PKG_CHECK_MODULES([AMDGPU], [libdrm_amdgpu >= $LIBDRM_AMDGPU_REQUIRED]) - radeon_llvm_check "radv" "3" "9" "0" + 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]) @@ -2132,8 +2178,9 @@ 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" llvm_add_component "linker" "opencl" llvm_add_component "instrumentation" "opencl" @@ -2336,7 +2383,7 @@ dnl Gallium helper functions dnl 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 @@ -2361,7 +2408,7 @@ require_basic_egl() { radeon_gallium_llvm_check() { if test "x$enable_gallium_llvm" != "xyes"; then - AC_MSG_ERROR([--enable-gallium-llvm is required when building $1]) + AC_MSG_ERROR([--enable-gallium-llvm is required when building $2]) fi radeon_llvm_check $* } @@ -2435,7 +2482,7 @@ if test -n "$with_gallium_drivers"; then PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED]) require_libdrm "r600" if test "x$enable_opencl" = xyes; then - radeon_gallium_llvm_check "r600" "3" "6" "0" + radeon_gallium_llvm_check $LLVM_REQUIRED_R600 "r600" llvm_add_component "asmparser" "r600" llvm_add_component "bitreader" "r600" @@ -2446,7 +2493,7 @@ if test -n "$with_gallium_drivers"; then PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED]) PKG_CHECK_MODULES([AMDGPU], [libdrm_amdgpu >= $LIBDRM_AMDGPU_REQUIRED]) require_libdrm "radeonsi" - radeon_gallium_llvm_check "radeonsi" "3" "6" "0" + radeon_gallium_llvm_check $LLVM_REQUIRED_RADEONSI "radeonsi" require_basic_egl "radeonsi" ;; xnouveau) @@ -2466,7 +2513,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" \ @@ -2508,6 +2555,11 @@ if test -n "$with_gallium_drivers"; then done fi +if test "x$enable_gallium_llvm" == "xyes"; then + llvm_check_version_for $LLVM_REQUIRED_GALLIUM "gallium" + llvm_add_default_components "gallium" +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