From: Christophe CURIS <[email protected]>

The original check was not compliant with autoconf's syntax, did not have
a very good behaviour for user and was not easy to make evolve.

The new macro:
 - uses as much as possible autoconf macros for portability and code
consistency;
 - checks also for header usability with the compiler;
 - provides a consistent behaviour on yes/no/auto (if user explicitly
enables support, do not silently disable if not found; if library is found
but not the header, complain to let user install it or explicitly disable
support)

Signed-off-by: Christophe CURIS <[email protected]>
---
 configure.ac        | 21 +++++++--------------
 m4/wm_xext_check.m4 | 24 ++++++++++++++++++++++++
 2 files changed, 31 insertions(+), 14 deletions(-)

diff --git a/configure.ac b/configure.ac
index 4f9cf6a..e463ece 100644
--- a/configure.ac
+++ b/configure.ac
@@ -511,19 +511,13 @@ WM_XEXT_CHECK_XINERAMA
 
 dnl XRandR support
 dnl ==============
-xrandr=no
-AC_ARG_ENABLE(xrandr, AS_HELP_STRING([--enable-xrandr], [enable XRandR window 
extension support (NOT recommended, buggy)]),
-               xrandr=$enableval, xrandr=no)
-added_xext=no
-
-LIBXRANDR=
-if test "$xrandr" = yes; then
-       AC_CHECK_LIB(Xrandr, XRRQueryExtension, [LIBXRANDR=-lXrandr
-               added_xext=yes
-               AC_DEFINE(USE_XRANDR, 1, [define if you want support for XRandR 
(set by configure)])],
-               xrandr=no, $XLFLAGS $XLIBS)
-fi
-AC_SUBST(LIBXRANDR)
+AC_ARG_ENABLE([xrandr],
+    [AS_HELP_STRING([--enable-xrandr], [enable XRandR extension support (NOT 
recommended, buggy)])],
+    [AS_CASE(["$enableval"],
+        [yes|no], [],
+        [AC_MSG_ERROR([bad value $enableval for --enable-xrandr]) ]) ],
+    [enable_xrandr=no])
+WM_XEXT_CHECK_XRANDR
 
 dnl
 dnl libWINGS uses math functions, check whether usage requires linking
@@ -830,7 +824,6 @@ echo "Supported X extensions:             :$supported_xext"
 echo "Supported graphic format libraries  :$supported_gfx"
 echo "Unsupported features                :$unsupported"
 echo "Antialiased text support in WINGs   : $xft"
-echo "XRandR extension support            : $xrandr"
 echo "Translated message files to install : $mof"
 dnl echo "Supported languages beside English  : $languages"
 if test "x$MOFILES" != "x"; then
diff --git a/m4/wm_xext_check.m4 b/m4/wm_xext_check.m4
index 8ba1f79..a8c45f4 100644
--- a/m4/wm_xext_check.m4
+++ b/m4/wm_xext_check.m4
@@ -98,3 +98,27 @@ sed -e 's,^[[^%]]*% *,,' | sed -e 's, *%.*$,,' `" dnl
     ])
 AC_SUBST(LIBXINERAMA)dnl
 ])
+
+
+# WM_XEXT_CHECK_XRANDR
+# --------------------
+#
+# Check for the X RandR (Resize-and-Rotate) extension
+# The check depends on variable 'enable_xrandr' being either:
+#   yes  - detect, fail if not found
+#   no   - do not detect, disable support
+#   auto - detect, disable if not found
+#
+# When found, append appropriate stuff in LIBXRANDR, and append info to
+# the variable 'supported_xext'
+# When not found, append info to variable 'unsupported'
+AC_DEFUN_ONCE([WM_XEXT_CHECK_XRANDR],
+[WM_LIB_CHECK([XRandR], [-lXrandr], [XRRQueryExtension], [$XLIBS],
+    [wm_save_CFLAGS="$CFLAGS"
+     AS_IF([wm_fn_lib_try_compile "X11/extensions/Xrandr.h" "Display *dpy;" 
"XRRQueryExtension(dpy, NULL, NULL)" ""],
+        [],
+        [AC_MSG_ERROR([found $CACHEVAR but cannot compile using XRandR 
header])])
+     CFLAGS="$wm_save_CFLAGS"],
+    [supported_xext], [LIBXRANDR], [], [-])dnl
+AC_SUBST([LIBXRANDR])dnl
+]) dnl AC_DEFUN
-- 
1.8.4.rc3


-- 
To unsubscribe, send mail to [email protected].

Reply via email to