configure.ac revision 7204935c
11c7386f4Smrgdnl Process this file with autoconf to produce a configure script.
2602e473dSmrg
321298544Smrg# Initialize Autoconf
41016ad83SmrgAC_PREREQ([2.60])
57204935cSmrgAC_INIT([libxcb],[1.12],
61c7386f4Smrg        [https://bugs.freedesktop.org/enter_bug.cgi?product=xcb],
71c7386f4Smrg        [libxcb])
81016ad83SmrgAC_CONFIG_AUX_DIR([build-aux])
91016ad83SmrgAC_CONFIG_MACRO_DIR([m4])
10602e473dSmrgAC_CONFIG_SRCDIR([xcb.pc.in])
111c7386f4SmrgAC_CONFIG_HEADERS([src/config.h])
1221298544Smrg
1321298544Smrg# Initialize Automake
14602e473dSmrgAM_INIT_AUTOMAKE([foreign dist-bzip2])
151c7386f4SmrgAM_PATH_PYTHON([2.6])
16602e473dSmrg
171016ad83Smrg# Set common system defines for POSIX extensions, such as _GNU_SOURCE
181016ad83Smrg# Must be called before any macros that run the compiler (like AC_PROG_LIBTOOL)
191016ad83Smrg# to avoid autoconf errors.
201016ad83SmrgAC_USE_SYSTEM_EXTENSIONS
211016ad83Smrg
221c7386f4Smrg# Initialize libtool
231c7386f4SmrgLT_PREREQ([2.2])
241c7386f4SmrgLT_INIT([win32-dll])
251c7386f4Smrg
261c7386f4Smrg# Require xorg-macros minimum of 1.18 - Initial version
271c7386f4Smrgm4_ifndef([XORG_MACROS_VERSION],
281c7386f4Smrg          [m4_fatal([must install xorg-macros 1.18 or later before running autoconf/autogen])])
291c7386f4SmrgXORG_MACROS_VERSION(1.18)
301c7386f4SmrgXORG_DEFAULT_OPTIONS
311c7386f4SmrgXORG_ENABLE_DEVEL_DOCS
321c7386f4SmrgXORG_WITH_DOXYGEN
331c7386f4Smrg
341c7386f4Smrg# The dot drawing tool is checked by XORG_WITH_DOXYGEN, needed for xcb manual
351c7386f4Smrgif test x"$HAVE_DOT" = xno; then
361c7386f4Smrg    AC_MSG_WARN([dot not found - doxygen targets will be skipped])
371c7386f4Smrgfi
38602e473dSmrg
39602e473dSmrgPKG_CHECK_MODULES(CHECK, [check >= 0.9.4], [HAVE_CHECK=yes], [HAVE_CHECK=no])
40602e473dSmrgAM_CONDITIONAL(HAVE_CHECK, test x$HAVE_CHECK = xyes)
41602e473dSmrg
421016ad83SmrgXSLTPROC=no
431016ad83SmrgHTML_CHECK_RESULT=no
44602e473dSmrgif test x"$HAVE_CHECK" = xyes; then
451c7386f4Smrg        AC_PATH_PROG(XSLTPROC, xsltproc, no)
461c7386f4Smrg        if test x"$XSLTPROC" != xno; then
471c7386f4Smrg                HTML_CHECK_RESULT=yes
481c7386f4Smrg        fi
49602e473dSmrgfi
50602e473dSmrgAC_SUBST(HTML_CHECK_RESULT)
51602e473dSmrg
52602e473dSmrg# Checks for pkg-config packages
537204935cSmrgPKG_CHECK_MODULES(XCBPROTO, xcb-proto >= 1.12)
54602e473dSmrgNEEDED="pthread-stubs xau >= 0.99.2"
55602e473dSmrgPKG_CHECK_MODULES(NEEDED, $NEEDED)
56602e473dSmrg
57602e473dSmrghave_xdmcp="no"
58602e473dSmrgPKG_CHECK_MODULES(XDMCP, xdmcp,
591c7386f4Smrg        AC_CHECK_LIB(Xdmcp, XdmcpWrap,
601c7386f4Smrg                [
611c7386f4Smrg                AC_DEFINE(HASXDMAUTH,1,[Has Wraphelp.c needed for XDM AUTH protocols])
621c7386f4Smrg                NEEDED="$NEEDED xdmcp"
631c7386f4Smrg                have_xdmcp="yes"
641c7386f4Smrg                ],
651c7386f4Smrg                [
661c7386f4Smrg                XDMCP_CFLAGS=
671c7386f4Smrg                XDMCP_LIBS=
681c7386f4Smrg                ], [$XDMCP_LIBS]),
691c7386f4Smrg        [AC_MSG_RESULT(no)])
70602e473dSmrg
71602e473dSmrgAC_SUBST(NEEDED)
72602e473dSmrg
73602e473dSmrg# Find the xcb-proto protocol descriptions
74602e473dSmrgAC_MSG_CHECKING(XCBPROTO_XCBINCLUDEDIR)
75602e473dSmrgXCBPROTO_XCBINCLUDEDIR=`$PKG_CONFIG --variable=xcbincludedir xcb-proto`
76602e473dSmrgAC_MSG_RESULT($XCBPROTO_XCBINCLUDEDIR)
77602e473dSmrgAC_SUBST(XCBPROTO_XCBINCLUDEDIR)
78602e473dSmrg
79602e473dSmrg# Find the xcb-proto version
80602e473dSmrgXCBPROTO_VERSION=`$PKG_CONFIG --modversion xcb-proto`
81602e473dSmrgAC_SUBST(XCBPROTO_VERSION)
82602e473dSmrg
83602e473dSmrg# Find the xcbgen Python package
84602e473dSmrgAC_MSG_CHECKING(XCBPROTO_XCBPYTHONDIR)
85602e473dSmrgXCBPROTO_XCBPYTHONDIR=`$PKG_CONFIG --variable=pythondir xcb-proto`
86602e473dSmrgAC_MSG_RESULT($XCBPROTO_XCBPYTHONDIR)
87602e473dSmrgAC_SUBST(XCBPROTO_XCBPYTHONDIR)
88602e473dSmrg
89602e473dSmrgAC_HEADER_STDC
90602e473dSmrgAC_SEARCH_LIBS(getaddrinfo, socket)
91602e473dSmrgAC_SEARCH_LIBS(connect, socket)
92602e473dSmrg
937204935cSmrg# Find support for sending a message from a socket
947204935cSmrgAC_SEARCH_LIBS(sendmsg, socket, [have_sendmsg="yes"], [have_sendmsg="no"])
951016ad83Smrg
961016ad83Smrg# XPG4v2/UNIX95 added msg_control - check to see if we need to define
971016ad83Smrg# _XOPEN_SOURCE to get it (such as on Solaris)
981016ad83SmrgAC_CHECK_MEMBER([struct msghdr.msg_control], [], [],
991016ad83Smrg                 [
1001016ad83SmrgAC_INCLUDES_DEFAULT
1011016ad83Smrg#include <sys/socket.h>
1021016ad83Smrg                 ])
1031016ad83Smrg# First try for Solaris in C99 compliant mode, which requires XPG6/UNIX03
1041016ad83Smrgif test "x$ac_cv_member_struct_msghdr_msg_control" = xno; then
1051016ad83Smrg    unset ac_cv_member_struct_msghdr_msg_control
1061016ad83Smrg    AC_MSG_NOTICE([trying again with _XOPEN_SOURCE=600])
1071016ad83Smrg    AC_CHECK_MEMBER([struct msghdr.msg_control],
1081016ad83Smrg                    [AC_DEFINE([_XOPEN_SOURCE], [600],
1091016ad83Smrg                       [Defined if needed to expose struct msghdr.msg_control])
1101016ad83Smrg                    ], [], [
1111016ad83Smrg#define _XOPEN_SOURCE 600
1121016ad83SmrgAC_INCLUDES_DEFAULT
1131016ad83Smrg#include <sys/socket.h>
1141016ad83Smrg                     ])
1151016ad83Smrgfi
1161016ad83Smrg# If that didn't work, fall back to XPG5/UNIX98 with C89
1171016ad83Smrgif test "x$ac_cv_member_struct_msghdr_msg_control" = xno; then
1181016ad83Smrg    unset ac_cv_member_struct_msghdr_msg_control
1191016ad83Smrg    AC_MSG_NOTICE([trying again with _XOPEN_SOURCE=500])
1201016ad83Smrg    AC_CHECK_MEMBER([struct msghdr.msg_control],
1211016ad83Smrg                    [AC_DEFINE([_XOPEN_SOURCE], [500],
1221016ad83Smrg                       [Defined if needed to expose struct msghdr.msg_control])
1237204935cSmrg                    ], [have_sendmsg="no"], [
1241016ad83Smrg#define _XOPEN_SOURCE 500
1251016ad83SmrgAC_INCLUDES_DEFAULT
1261016ad83Smrg#include <sys/socket.h>
1271016ad83Smrg                     ])
1281016ad83Smrgfi
1291016ad83Smrg
1307204935cSmrgcase x$have_sendmsg in
1311016ad83Smrgxyes)
1321016ad83Smrg        AC_DEFINE([HAVE_SENDMSG],1,[Define if your platform supports sendmsg])
1331016ad83Smrg        ;;
1341016ad83Smrgesac
1351016ad83Smrg
13621298544Smrghave_win32="no"
13721298544Smrglt_enable_auto_import=""
138602e473dSmrgcase $host_os in
13921298544Smrgmingw*)
1401c7386f4Smrg        have_win32="yes"
1411c7386f4Smrg        lt_enable_auto_import="-Wl,--enable-auto-import"
1421c7386f4Smrg        ;;
143602e473dSmrglinux*)
1441c7386f4Smrg        AC_DEFINE([HAVE_ABSTRACT_SOCKETS], 1, [Define if your platform supports abstract sockets])
1451c7386f4Smrg        ;;
146602e473dSmrgesac
147602e473dSmrg
14821298544SmrgAC_SUBST(lt_enable_auto_import)
14921298544SmrgAM_CONDITIONAL([XCB_HAVE_WIN32], [test "x${have_win32}" = "xyes"])
15021298544Smrg
151602e473dSmrgdnl define buffer queue size
152602e473dSmrgAC_ARG_WITH([queue-size],
1531c7386f4Smrg            AS_HELP_STRING([--with-queue-size=SIZE],
154602e473dSmrg            [Set the XCB buffer queue size (default is 16384)]),
155602e473dSmrg            [xcb_queue_buffer_size="$withval"],
156602e473dSmrg            [xcb_queue_buffer_size=16384])
157602e473dSmrgAC_DEFINE_UNQUOTED(XCB_QUEUE_BUFFER_SIZE, [$xcb_queue_buffer_size],
158602e473dSmrg                   [XCB buffer queue size])
159602e473dSmrg
160602e473dSmrgdnl check for the sockaddr_un.sun_len member
161602e473dSmrgAC_CHECK_MEMBER([struct sockaddr_un.sun_len],
1621c7386f4Smrg                [AC_DEFINE(HAVE_SOCKADDR_SUN_LEN,1,[Have the sockaddr_un.sun_len member.])],
1631c7386f4Smrg                [],
1641c7386f4Smrg                [ #include <sys/types.h>
1651c7386f4Smrg                  #include <sys/un.h>
1661c7386f4Smrg                ])
167602e473dSmrg
16821298544Smrgdnl check for support for Solaris Trusted Extensions
16921298544SmrgAC_CHECK_HEADERS([tsol/label.h])
17021298544SmrgAC_CHECK_FUNCS([is_system_labeled])
17121298544Smrg
17221298544Smrgdnl check for IOV_MAX, and fall back to UIO_MAXIOV on BSDish systems
17321298544SmrgAC_CHECK_DECL([IOV_MAX], [],
1741c7386f4Smrg              [AC_CHECK_DECL([UIO_MAXIOV], [AC_DEFINE([IOV_MAX], [UIO_MAXIOV])],
1751c7386f4Smrg                                           [AC_DEFINE([IOV_MAX], [16], [Define if not provided by <limits.h>])],
1761c7386f4Smrg                                           [[#include <sys/uio.h>]])],
1771c7386f4Smrg              [[#include <limits.h>]])
17821298544Smrg
179602e473dSmrgxcbincludedir='${includedir}/xcb'
180602e473dSmrgAC_SUBST(xcbincludedir)
181602e473dSmrg
182602e473dSmrgXCB_CHECK_VISIBILITY()
183602e473dSmrg
18421298544SmrgAC_CHECK_FUNC(getaddrinfo, [AC_DEFINE(HAVE_GETADDRINFO, 1, [getaddrinfo() function is available])], )
18521298544Smrg
186602e473dSmrgcase $host_os in
1871c7386f4Smrg        # darwin through Snow Leopard has poll() but can't be used to poll character devices.
1881c7386f4Smrg        darwin@<:@789@:>@*|darwin10*) ;;
1891c7386f4Smrg        darwin*)
1901c7386f4Smrg                _ac_xorg_macosx_version_min=""
1911c7386f4Smrg                if echo $CPPFLAGS $CFLAGS | grep -q mmacosx-version-min ; then
1921c7386f4Smrg                        _ac_xorg_macosx_version_min=`echo $CPPFLAGS $CFLAGS | sed 's/^.*-mmacosx-version-min=\(@<:@^ @:>@*\).*$/\1/'`
1931c7386f4Smrg                else
1941c7386f4Smrg                        _ac_xorg_macosx_version_min=$MACOSX_DEPLOYMENT_TARGET
1951c7386f4Smrg                fi
1961c7386f4Smrg                case $_ac_xorg_macosx_version_min in
1971c7386f4Smrg                        10.@<:@0123456@:>@|10.@<:@0123456@:>@.*) ;;
1981c7386f4Smrg                        *)
1991c7386f4Smrg                                AC_CHECK_FUNC(poll, [AC_DEFINE(USE_POLL, 1, [poll() function is available])], )
2001c7386f4Smrg                        ;;
2011c7386f4Smrg                esac
2021c7386f4Smrg                unset _ac_xorg_macosx_version_min
2031c7386f4Smrg                ;;
2041c7386f4Smrg        *)
2051c7386f4Smrg                AC_CHECK_FUNC(poll, [AC_DEFINE(USE_POLL, 1, [poll() function is available])], )
2061c7386f4Smrg        ;;
207602e473dSmrgesac
208602e473dSmrg
2097204935cSmrgdnl Link with winsock for socket functions on MinGW
2107204935cSmrgcase $host_os in
2117204935cSmrg        *mingw*)
2127204935cSmrg                AC_CHECK_LIB([ws2_32],[main])
2137204935cSmrg                ;;
2147204935cSmrg        *)
2157204935cSmrg                ;;
2167204935cSmrgesac
2177204935cSmrg
2187204935cSmrgXCB_EXTENSION(Composite, yes)
2197204935cSmrgXCB_EXTENSION(Damage, yes)
2207204935cSmrgXCB_EXTENSION(DPMS, yes)
2217204935cSmrgXCB_EXTENSION(DRI2, yes)
2227204935cSmrgXCB_EXTENSION(DRI3, $have_sendmsg)
2237204935cSmrgXCB_EXTENSION(GLX, yes)
2247204935cSmrgXCB_EXTENSION(Present, yes)
2257204935cSmrgXCB_EXTENSION(RandR, yes)
2267204935cSmrgXCB_EXTENSION(Record, yes)
2277204935cSmrgXCB_EXTENSION(Render, yes)
2287204935cSmrgXCB_EXTENSION(Resource, yes)
2297204935cSmrgXCB_EXTENSION(Screensaver, yes)
2307204935cSmrgXCB_EXTENSION(Shape, yes)
2317204935cSmrgXCB_EXTENSION(Shm, yes)
2327204935cSmrgXCB_EXTENSION(Sync, yes)
2337204935cSmrgXCB_EXTENSION(Xevie, no)
2347204935cSmrgXCB_EXTENSION(XFixes, yes)
2357204935cSmrgXCB_EXTENSION(XFree86-DRI, yes)
2367204935cSmrgXCB_EXTENSION(Xinerama, yes)
2377204935cSmrgXCB_EXTENSION(XInput, no)
2387204935cSmrgXCB_EXTENSION(XKB, yes)
2397204935cSmrgXCB_EXTENSION(Xprint, no)
2407204935cSmrgXCB_EXTENSION(SELinux, no)
2417204935cSmrgXCB_EXTENSION(XTest, yes)
2427204935cSmrgXCB_EXTENSION(Xv, yes)
2437204935cSmrgXCB_EXTENSION(XvMC, yes)
244602e473dSmrg
245602e473dSmrgAC_ARG_WITH(launchd, AS_HELP_STRING([--with-launchd], [Build with support for Apple's launchd (default: auto)]), [LAUNCHD=$withval], [LAUNCHD=auto])
246602e473dSmrgif test "x$LAUNCHD" = xauto; then
2471c7386f4Smrg        unset LAUNCHD
2481c7386f4Smrg        AC_CHECK_PROG(LAUNCHD, [launchd], [yes], [no], [$PATH$PATH_SEPARATOR/sbin])
249602e473dSmrgfi
250602e473dSmrg
251602e473dSmrgif test "x$LAUNCHD" = xyes ; then
2521c7386f4Smrg        AC_DEFINE(HAVE_LAUNCHD, 1, [launchd support available])
253602e473dSmrgfi
254602e473dSmrg
2557204935cSmrgAC_ARG_WITH(serverside-support, AS_HELP_STRING([--with-serverside-support], [Build with support for server-side usage of xcb. This is still EXPERIMENTAL! ABI/API may change! (default: no)]), [XCB_SERVERSIDE_SUPPORT=$withval], [XCB_SERVERSIDE_SUPPORT=no])
2567204935cSmrg
2577204935cSmrgAM_CONDITIONAL(XCB_SERVERSIDE_SUPPORT, test "x$XCB_SERVERSIDE_SUPPORT" = "xyes")
2587204935cSmrg
259602e473dSmrgAC_CONFIG_FILES([
260602e473dSmrgMakefile
261602e473dSmrgdoc/Makefile
2621c7386f4Smrgman/Makefile
263602e473dSmrgsrc/Makefile
264602e473dSmrgtests/Makefile
265602e473dSmrg])
266602e473dSmrg
267602e473dSmrgAC_CONFIG_FILES([
268602e473dSmrgxcb.pc
269602e473dSmrgxcb-composite.pc
270602e473dSmrgxcb-damage.pc
271602e473dSmrgxcb-dpms.pc
272602e473dSmrgxcb-dri2.pc
2731016ad83Smrgxcb-dri3.pc
274602e473dSmrgxcb-glx.pc
2751016ad83Smrgxcb-present.pc
276602e473dSmrgxcb-randr.pc
277602e473dSmrgxcb-record.pc
278602e473dSmrgxcb-render.pc
279602e473dSmrgxcb-res.pc
280602e473dSmrgxcb-screensaver.pc
281602e473dSmrgxcb-shape.pc
282602e473dSmrgxcb-shm.pc
283602e473dSmrgxcb-sync.pc
284602e473dSmrgxcb-xevie.pc
285602e473dSmrgxcb-xf86dri.pc
286602e473dSmrgxcb-xfixes.pc
287602e473dSmrgxcb-xinerama.pc
288602e473dSmrgxcb-xinput.pc
28921298544Smrgxcb-xkb.pc
290602e473dSmrgxcb-xprint.pc
291602e473dSmrgxcb-xselinux.pc
292602e473dSmrgxcb-xtest.pc
293602e473dSmrgxcb-xv.pc
294602e473dSmrgxcb-xvmc.pc
295602e473dSmrg])
296602e473dSmrg
297602e473dSmrgAC_CONFIG_FILES([
298602e473dSmrgdoc/xcb.doxygen
299602e473dSmrg])
300602e473dSmrg
301602e473dSmrgAC_OUTPUT
302602e473dSmrg
303602e473dSmrgdnl Configuration output
304602e473dSmrg
305602e473dSmrgecho ""
306602e473dSmrgecho "  Package: ${PACKAGE_NAME} ${PACKAGE_VERSION}"
307602e473dSmrgecho ""
308602e473dSmrgecho "  Configuration"
309602e473dSmrgecho "    XDM support.........: ${have_xdmcp}"
3107204935cSmrgecho "    sendmsg fd passing..: ${have_sendmsg}"
311602e473dSmrgecho "    Build unit tests....: ${HAVE_CHECK}"
3121016ad83Smrgecho "      with html results.: ${HTML_CHECK_RESULT}"
313602e473dSmrgecho "    XCB buffer size.....: ${xcb_queue_buffer_size}"
314602e473dSmrgecho ""
315b20a2039Smrgecho "  X11 extensions"
316b20a2039Smrgecho "    Composite...........: ${BUILD_COMPOSITE}"
317b20a2039Smrgecho "    Damage..............: ${BUILD_DAMAGE}"
318b20a2039Smrgecho "    Dpms................: ${BUILD_DPMS}"
319b20a2039Smrgecho "    Dri2................: ${BUILD_DRI2}"
3201016ad83Smrgecho "    Dri3................: ${BUILD_DRI3}"
321b20a2039Smrgecho "    Glx.................: ${BUILD_GLX}"
322b20a2039Smrgecho "    Randr...............: ${BUILD_RANDR}"
323b20a2039Smrgecho "    Record..............: ${BUILD_RECORD}"
324b20a2039Smrgecho "    Render..............: ${BUILD_RENDER}"
325b20a2039Smrgecho "    Resource............: ${BUILD_RESOURCE}"
326b20a2039Smrgecho "    Screensaver.........: ${BUILD_SCREENSAVER}"
327b20a2039Smrgecho "    selinux.............: ${BUILD_SELINUX}"
328b20a2039Smrgecho "    Shape...............: ${BUILD_SHAPE}"
329b20a2039Smrgecho "    Shm.................: ${BUILD_SHM}"
330b20a2039Smrgecho "    Sync................: ${BUILD_SYNC}"
331b20a2039Smrgecho "    Xevie...............: ${BUILD_XEVIE}"
332b20a2039Smrgecho "    Xfixes..............: ${BUILD_XFIXES}"
333b20a2039Smrgecho "    Xfree86-dri.........: ${BUILD_XFREE86_DRI}"
334b20a2039Smrgecho "    xinerama............: ${BUILD_XINERAMA}"
335b20a2039Smrgecho "    xinput..............: ${BUILD_XINPUT}"
33621298544Smrgecho "    xkb.................: ${BUILD_XKB}"
337b20a2039Smrgecho "    xprint..............: ${BUILD_XPRINT}"
338b20a2039Smrgecho "    xtest...............: ${BUILD_XTEST}"
339b20a2039Smrgecho "    xv..................: ${BUILD_XV}"
340b20a2039Smrgecho "    xvmc................: ${BUILD_XVMC}"
341b20a2039Smrgecho ""
342602e473dSmrgecho "  Used CFLAGS:"
343602e473dSmrgecho "    CPPFLAGS............: ${CPPFLAGS}"
344602e473dSmrgecho "    CFLAGS..............: ${CFLAGS}"
345602e473dSmrgecho ""
346602e473dSmrgecho "  Installation:"
347602e473dSmrgecho "    Prefix..............: ${prefix}"
348602e473dSmrgecho ""
349