[Xcb] [PATCH libxcb 1/2] config: default option for enable-dri3 is not implemented

Gaetan Nadon memsize at videotron.ca
Sun Feb 23 11:24:17 PST 2014


The first symptom is the help text:

  --enable-dri3     Build XCB DRI3 Extension (default: "$sendfds")

The implementation variable $sendfds leaked into the user interface.
Testing the various user inputs:
  <nothing>                DRI3 is enabled     PASS
  --enable-dri3		   DRI3 is enabled     PASS
  --enable-dri3=yes        DRI3 is enabled     PASS
  --enable-dri3=no         DRI3 is disabled    PASS
  --disable-dri3           DRI3 is disabled    PASS
  --enable-dri3=$sendfds   DRI3 is disabled    FAIL

This patch implements the usual idiom for features that are enabled by
default if the various conditions are met (sendfds is available).
New help text:

  --enable-dri3     Build XCB DRI3 Extension (default: auto)

With the additional user input:

  --enable-dri3=auto

which is equivalent to providing no input at all.

Note that this patch does not change the following behaviours:

  Except for DRI3, any user input other than yes or no is undefined
  For DRI3, if user input is yes but sendfds says no, DRI3 is disabled
  and the user is not informed.

Signed-off-by: Gaetan Nadon <memsize at videotron.ca>
---
 configure.ac |   52 ++++++++++++++++++++++++++--------------------------
 m4/xcb.m4    |   18 +++++++++++++++---
 2 files changed, 41 insertions(+), 29 deletions(-)

diff --git a/configure.ac b/configure.ac
index 68c3b2f..61941d7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -212,32 +212,32 @@ case $host_os in
         ;;
 esac
 
-XCB_EXTENSION(Composite, "yes")
-XCB_EXTENSION(Damage, "yes")
-XCB_EXTENSION(DPMS, "yes")
-XCB_EXTENSION(DRI2, "yes")
-XCB_EXTENSION(DRI3, "$sendfds")
-XCB_EXTENSION(GLX, "yes")
-XCB_EXTENSION(Present, "yes")
-XCB_EXTENSION(RandR, "yes")
-XCB_EXTENSION(Record, "yes")
-XCB_EXTENSION(Render, "yes")
-XCB_EXTENSION(Resource, "yes")
-XCB_EXTENSION(Screensaver, "yes")
-XCB_EXTENSION(Shape, "yes")
-XCB_EXTENSION(Shm, "yes")
-XCB_EXTENSION(Sync, "yes")
-XCB_EXTENSION(Xevie, "yes")
-XCB_EXTENSION(XFixes, "yes")
-XCB_EXTENSION(XFree86-DRI, "yes")
-XCB_EXTENSION(Xinerama, "yes")
-XCB_EXTENSION(XInput, "no")
-XCB_EXTENSION(XKB, "yes")
-XCB_EXTENSION(Xprint, "yes")
-XCB_EXTENSION(SELinux, "no")
-XCB_EXTENSION(XTest, "yes")
-XCB_EXTENSION(Xv, "yes")
-XCB_EXTENSION(XvMC, "yes")
+XCB_EXTENSION(Composite, yes)
+XCB_EXTENSION(Damage, yes)
+XCB_EXTENSION(DPMS, yes)
+XCB_EXTENSION(DRI2, yes)
+XCB_EXTENSION(DRI3, $sendfds)
+XCB_EXTENSION(GLX, yes)
+XCB_EXTENSION(Present, yes)
+XCB_EXTENSION(RandR, yes)
+XCB_EXTENSION(Record, yes)
+XCB_EXTENSION(Render, yes)
+XCB_EXTENSION(Resource, yes)
+XCB_EXTENSION(Screensaver, yes)
+XCB_EXTENSION(Shape, yes)
+XCB_EXTENSION(Shm, yes)
+XCB_EXTENSION(Sync, yes)
+XCB_EXTENSION(Xevie, yes)
+XCB_EXTENSION(XFixes, yes)
+XCB_EXTENSION(XFree86-DRI, yes)
+XCB_EXTENSION(Xinerama, yes)
+XCB_EXTENSION(XInput, no)
+XCB_EXTENSION(XKB, yes)
+XCB_EXTENSION(Xprint, yes)
+XCB_EXTENSION(SELinux, no)
+XCB_EXTENSION(XTest, yes)
+XCB_EXTENSION(Xv, yes)
+XCB_EXTENSION(XvMC, yes)
 
 AC_ARG_WITH(launchd, AS_HELP_STRING([--with-launchd], [Build with support for Apple's launchd (default: auto)]), [LAUNCHD=$withval], [LAUNCHD=auto])
 if test "x$LAUNCHD" = xauto; then
diff --git a/m4/xcb.m4 b/m4/xcb.m4
index 32e852d..cf525c0 100644
--- a/m4/xcb.m4
+++ b/m4/xcb.m4
@@ -38,15 +38,27 @@ dnl XCB_EXTENSION(name, default)
 dnl set the X extension
 dnl
 AC_DEFUN([XCB_EXTENSION],
-[
+[dnl
 pushdef([UP], translit([$1], [-a-z], [_A-Z]))dnl
 pushdef([DOWN], translit([$1], [A-Z], [a-z]))dnl
+dnl
+m4_if([$2], [yes], [m4_define([xcb_defopt], [yes])],
+      [$2], [no],  [m4_define([xcb_defopt], [no])],
+      m4_define([xcb_defopt], [auto]))dnl
 
 AC_ARG_ENABLE(DOWN,
-    [AS_HELP_STRING([--enable-[]DOWN], [Build XCB $1 Extension (default: $2)])],
+    [AS_HELP_STRING([--enable-[]DOWN],
+                    [Build XCB $1 Extension (default: ]xcb_defopt[)])],
     [BUILD_[]UP=$enableval],
-    [BUILD_[]UP=$2])
+    [BUILD_[]UP=xcb_defopt])
+dnl
+m4_if(xcb_defopt, [auto], [
+# This extension has a default value of "auto" and depends on the value of $2
+if test "x$BUILD_[]UP" = "xauto" ; then
+    BUILD_[]UP=$2
+fi])
 
+m4_undefine([xcb_defopt])dnl
 AM_CONDITIONAL(BUILD_[]UP, [test "x$BUILD_[]UP" = "xyes"])
 ])
 
-- 
1.7.9.5



More information about the Xcb mailing list