Add the ability to enable/disable specific versions of the DRI support.

This is the following two commits from master squashed:
  7bc669dd4b7e3e5978e95e4131d1f9215afbc041
  5a0cb1049c2fa0586708719210a2d2cffa7a4491

Upstream-Status: Backport
Signed-off-by: Ross Burton <ross.burton@intel.com>

diff --git a/configure.ac b/configure.ac
index b3b6e8e..bd654f3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -296,6 +296,21 @@ AC_ARG_ENABLE(dri,
 			     [Disable DRI support [[default=auto]]]),
 	      [DRI=$enableval],
 	      [DRI=auto])
+AC_ARG_ENABLE(dri1,
+	      AS_HELP_STRING([--disable-dri1],
+			     [Disable DRI1 support [[default=yes]]]),
+	      [DRI1=$enableval],
+	      [DRI1=yes])
+AC_ARG_ENABLE(dri2,
+	      AS_HELP_STRING([--disable-dri2],
+			     [Disable DRI2 support [[default=yes]]]),
+	      [DRI2=$enableval],
+	      [DRI2=yes])
+AC_ARG_ENABLE(dri3,
+	      AS_HELP_STRING([--disable-dri3],
+			     [Disable DRI3 support [[default=yes]]]),
+	      [DRI3=$enableval],
+	      [DRI3=yes])
 
 AC_ARG_ENABLE(xvmc, AS_HELP_STRING([--disable-xvmc],
                                   [Disable XvMC support [[default=yes]]]),
@@ -461,15 +476,15 @@ if test "x$UMS" = "xyes"; then
 	AC_DEFINE(UMS,1,[Assume UMS support])
 fi
 
-DRI1=no
+have_dri1=no
 XORG_DRIVER_CHECK_EXT(XF86DRI, xf86driproto)
-if test "x$_EXT_CHECK" != "xno" -a "x$DRI" != "xno" -a "x$UMS" = "xyes"; then
-	PKG_CHECK_MODULES(DRI1, [xf86driproto], [DRI1=$DRI], [DRI1=no])
+if test "x$_EXT_CHECK" != "xno" -a "x$DRI" != "xno" -a "x$DRI1" != "xno" -a "x$UMS" = "xyes"; then
+	PKG_CHECK_MODULES(DRI1, [xf86driproto], [have_dri1=$DRI], [have_dri1=no])
         save_CFLAGS="$CFLAGS"
         save_CPPFLAGS="$CPPFLAGS"
         CFLAGS="$CFLAGS $XORG_CFLAGS $DRI1_CFLAGS $DRM_CFLAGS"
         CPPFLAGS="$CPPFLAGS $XORG_CFLAGS $DRI1_CFLAGS $DRM_CFLAGS"
-        AC_CHECK_HEADERS([dri.h sarea.h dristruct.h], [], [DRI1=no],
+        AC_CHECK_HEADERS([dri.h sarea.h dristruct.h], [], [have_dri1=no],
                 [/* for dri.h */
                  #include <xf86str.h>
                  /* for dristruct.h */
@@ -486,49 +501,55 @@ if test "x$_EXT_CHECK" != "xno" -a "x$DRI" != "xno" -a "x$UMS" = "xyes"; then
 fi
 
 AC_MSG_CHECKING([whether to include DRI1 support])
-AC_MSG_RESULT([$DRI1])
+AC_MSG_RESULT([$have_dri1])
 
-AM_CONDITIONAL(DRI1, test "x$DRI1" != "xno")
-if test "x$DRI1" != "xno"; then
+AM_CONDITIONAL(DRI1, test "x$have_dri1" != "xno")
+if test "x$have_dri1" != "xno"; then
         AC_DEFINE(HAVE_DRI1,1,[Enable DRI1 driver support])
 	dri_msg="$dri_msg DRI1"
 else
         DRI1_CFLAGS=""
         DRI1_LIBS=""
 
-        if test "x$DRI" = "xyes" -a "x$UMS" = "xyes"; then
+        if test "x$DRI" = "xyes" -a "x$UMS" = "xyes" -a "x$DRI1" != "xno"; then
                 AC_MSG_ERROR([DRI1 requested but prerequisites not found])
         fi
 fi
 
-DRI2=no
-DRI3=no
+have_dri2=no
+have_dri3=no
 if test "x$DRI" != "xno"; then
-	PKG_CHECK_MODULES(DRI2, [dri2proto >= 2.6], [DRI2=$DRI], [DRI2=no])
-	dridriverdir=`$PKG_CONFIG --variable=dridriverdir dri`
-	if test "x$dridriverdir" = "x"; then
-		dridriverdir="$libdir/dri"
-	fi
-	AC_DEFINE_DIR(DRI_DRIVER_PATH, dridriverdir, [Default DRI2 driver path])
 	if test "x$DRI2" != "xno"; then
+		PKG_CHECK_MODULES(DRI2, [dri2proto >= 2.6], [have_dri2=$DRI], [have_dri2=no])
+	fi
+	if test "x$have_dri2" != "xno"; then
 		save_CFLAGS=$CFLAGS
 		CFLAGS="$XORG_CFLAGS $DRM_CFLAGS $DRI1_CFLAGS $DRI2_CFLAGS"
-		AC_CHECK_HEADERS([dri2.h], [], [DRI2=no], [
+		AC_CHECK_HEADERS([dri2.h], [], [have_dri2=no], [
 #include <dixstruct.h>
 #include <drm.h>
 ])
 		CFLAGS=$save_CFLAGS
 	fi
-
-	XORG_DRIVER_CHECK_EXT(DRI3, dri3proto)
-	if test "x$_EXT_CHECK" != "xno"; then
-		PKG_CHECK_MODULES(DRI3, [dri3proto], [DRI3=$DRI], [])
+	if test "x$have_dri2" != "xno"; then
+		dridriverdir=`$PKG_CONFIG --variable=dridriverdir dri`
+		if test "x$dridriverdir" = "x"; then
+			dridriverdir="$libdir/dri"
+		fi
+		AC_DEFINE_DIR(DRI_DRIVER_PATH, dridriverdir, [Default have_dri2 driver path])
 	fi
+
 	if test "x$DRI3" != "xno"; then
+		XORG_DRIVER_CHECK_EXT(DRI3, dri3proto)
+		if test "x$_EXT_CHECK" != "xno"; then
+			PKG_CHECK_MODULES(DRI3, [dri3proto], [have_dri3=$DRI], [])
+		fi
+	fi
+	if test "x$have_dri3" != "xno"; then
 		save_CFLAGS=$CFLAGS
 		CFLAGS="$XORG_CFLAGS $DRI3_CFLAGS"
-		AC_CHECK_DECL(DRI3, [], [DRI3=no], [#include <xorg-server.h>])
-		AC_CHECK_HEADERS([misyncstr.h misyncshm.h], [], [DRI3=no], [
+		AC_CHECK_DECL(DRI3, [], [have_dri3=no], [#include <xorg-server.h>])
+		AC_CHECK_HEADERS([misyncstr.h misyncshm.h], [], [have_dri3=no], [
 #include <xorg-server.h>
 #include <xf86str.h>
 #include <misync.h>
@@ -538,13 +559,13 @@ if test "x$DRI" != "xno"; then
 fi
 
 AC_MSG_CHECKING([whether to include DRI2 support])
-AM_CONDITIONAL(DRI2, test "x$DRI2" != "xno")
-AC_MSG_RESULT([$DRI2])
-if test "x$DRI2" != "xno"; then
+AM_CONDITIONAL(DRI2, test "x$have_dri2" != "xno")
+AC_MSG_RESULT([$have_dri2])
+if test "x$have_dri2" != "xno"; then
         AC_DEFINE(HAVE_DRI2,1,[Enable DRI2 driver support])
 	dri_msg="$dri_msg DRI2"
 else
-	if test "x$DRI" = "xyes" -a "x$KMS" = "xyes"; then
+	if test "x$DRI" = "xyes" -a "x$DRI2" != "xno" -a "x$KMS" = "xyes"; then
 		AC_MSG_ERROR([DRI2 requested but prerequisites not found])
 	fi
 
@@ -553,13 +574,13 @@ else
 fi
 
 AC_MSG_CHECKING([whether to include DRI3 support])
-AM_CONDITIONAL(DRI3, test "x$DRI3" != "xno")
-AC_MSG_RESULT([$DRI3])
-if test "x$DRI3" != "xno"; then
+AM_CONDITIONAL(DRI3, test "x$have_dri3" != "xno")
+AC_MSG_RESULT([$have_dri3])
+if test "x$have_dri3" != "xno"; then
         AC_DEFINE(HAVE_DRI3,1,[Enable DRI3 driver support])
 	dri_msg="$dri_msg DRI3"
 else
-	if test "x$DRI" = "xyes" -a "x$KMS" = "xyes"; then
+	if test "x$DRI" = "xyes" -a "x$DRI3" != "xno" -a "x$KMS" = "xyes"; then
 		AC_MSG_ERROR([DRI3 requested but prerequisites not found])
 	fi
 fi
