Re: [Mesa-dev] [PATCH v4 18/18] configure.ac: Add required LLVM versions to the top

2016-10-19 Thread Emil Velikov
On 16 October 2016 at 01:20, Tobias Droste  wrote:

> -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}"
Since this hunk does two distinctly separate things from the rest of
the patch, can you please split it out to a patch on top.

-Emil
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH v4 18/18] configure.ac: Add required LLVM versions to the top

2016-10-15 Thread Tobias Droste
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 
---
 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
-