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
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() {
[#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
}
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() {
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
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],
;;
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])
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"
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
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 $*
}
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"
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)
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" \
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