configure: Moved configure's detection of Xinerama to a dedicated macro
[wmaker-crm.git] / m4 / wm_xext_check.m4
blob8ba1f79b72def89f90cdc047048c12bacf6f417e
1 # wm_xext_check.m4 - Macros to check for X extensions support libraries
3 # Copyright (c) 2013 Christophe CURIS
5 # This program is free software; you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation; either version 2 of the License, or
8 # (at your option) any later version.
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 # GNU General Public License for more details.
15 # You should have received a copy of the GNU General Public License along
16 # with this program; if not, write to the Free Software Foundation, Inc.,
17 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 # WM_XEXT_CHECK_XSHAPE
20 # --------------------
22 # Check for the X Shaped Window extension
23 # The check depends on variable 'enable_xshape' being either:
24 #   yes  - detect, fail if not found
25 #   no   - do not detect, disable support
26 #   auto - detect, disable if not found
28 # When found, append appropriate stuff in XLIBS, and append info to
29 # the variable 'supported_xext'
30 # When not found, append info to variable 'unsupported'
31 AC_DEFUN_ONCE([WM_XEXT_CHECK_XSHAPE],
32 [WM_LIB_CHECK([XShape], [-lXext], [XShapeSelectInput], [$XLIBS],
33     [wm_save_CFLAGS="$CFLAGS"
34      AS_IF([wm_fn_lib_try_compile "X11/extensions/shape.h" "Window win;" "XShapeSelectInput(NULL, win, 0)" ""],
35         [],
36         [AC_MSG_ERROR([found $CACHEVAR but cannot compile using XShape header])])
37      CFLAGS="$wm_save_CFLAGS"],
38     [supported_xext], [XLIBS], [enable_shape], [-])dnl
39 ]) dnl AC_DEFUN
42 # WM_XEXT_CHECK_XINERAMA
43 # ----------------------
45 # Check for the Xinerama extension for multiscreen-as-one support
46 # The check depends on variable 'enable_xinerama' being either:
47 #   yes  - detect, fail if not found
48 #   no   - do not detect, disable support
49 #   auto - detect, disable if not found
51 # When found, append appropriate stuff in LIBXINERAMA, and append info to
52 # the variable 'supported_xext'
53 # When not found, append info to variable 'unsupported'
54 AC_DEFUN_ONCE([WM_XEXT_CHECK_XINERAMA],
55 [LIBXINERAMA=""
56 AS_IF([test "x$enable_xinerama" = "xno"],
57     [unsupported="$unsupported Xinerama"],
58     [AC_CACHE_CHECK([for Xinerama support library], [wm_cv_xext_xinerama],
59         [wm_cv_xext_xinerama=no
60          dnl
61          dnl We check that the library is available
62          wm_save_LIBS="$LIBS"
63          for wm_arg in dnl
64 dnl           Lib flag   % Function name        % info
65              "-lXinerama % XineramaQueryScreens" dnl
66              "-lXext     % XineramaGetInfo      % solaris" ; do
67            AS_IF([wm_fn_lib_try_link "`echo "$wm_arg" | dnl
68 sed -e 's,^[[^%]]*% *,,' | sed -e 's, *%.*$,,' `" dnl
69 "$XLFLAGS $XLIBS `echo "$wm_arg" | sed -e 's, *%.*$,,' `"],
70              [wm_cv_xext_xinerama="`echo "$wm_arg" | sed -e 's, *%[[^%]]*, ,' `"
71               break])
72          done
73          LIBS="$wm_save_LIBS"
74          AS_IF([test "x$enable_xinerama$wm_cv_xext_xinerama" = "xyesno"],
75             [AC_MSG_ERROR([explicit Xinerama support requested but no library found])])
76          dnl
77          dnl A library was found, check if header is available and compile
78          wm_save_CFLAGS="$CFLAGS"
79          AS_CASE([`echo "$wm_cv_xext_xinerama" | sed -e 's,^[[^%]]*,,' `],
80              [*solaris*], [wm_header="X11/extensions/xinerama.h" ; wm_fct="XineramaGetInfo(NULL, 0, NULL, NULL, &intval)"],
81              [wm_header="X11/extensions/Xinerama.h" ; wm_fct="XineramaQueryScreens(NULL, &intval)"])
82          AS_IF([wm_fn_lib_try_compile "$wm_header" "int intval;" "$wm_fct" ""],
83              [],
84              [AC_MSG_ERROR([found $wm_cv_xext_xinerama but cannot compile with the header])])
85          AS_UNSET([wm_header])
86          AS_UNSET([wm_fct])
87          CFLAGS="$wm_save_CFLAGS"])
88      AS_IF([test "x$wm_cv_xext_xinerama" = "xno"],
89         [unsupported="$unsupported Xinerama"
90          enable_xinerama="no"],
91         [LIBXINERAMA="`echo "$wm_cv_xext_xinerama" | sed -e 's, *%.*$,,' `"
92          AC_DEFINE([USE_XINERAMA], [1],
93              [defined when usable Xinerama library with header was found])
94          AS_CASE([`echo "$wm_cv_xext_xinerama" | sed -e 's,^[[^%]]*,,' `],
95              [*solaris*], [AC_DEFINE([SOLARIS_XINERAMA], [1],
96                  [defined when the Solaris Xinerama extension was detected])])
97          supported_xext="$supported_xext Xinerama"])
98     ])
99 AC_SUBST(LIBXINERAMA)dnl