11c7386f4Smrgdnl Process this file with autoconf to produce a configure script.
2602e473dSmrg
321298544Smrg# Initialize Autoconf
41016ad83SmrgAC_PREREQ([2.60])
5b9526c6aSmrgAC_INIT([libxcb],[1.17.0],
6b9526c6aSmrg        [https://gitlab.freedesktop.org/xorg/lib/libxcb/-/issues],
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
14aa30ed02SmrgAM_INIT_AUTOMAKE([foreign dist-xz])
15b9526c6aSmrgAM_PATH_PYTHON([3.0])
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
21b9526c6aSmrgAC_SYS_LARGEFILE
221016ad83Smrg
231c7386f4Smrg# Initialize libtool
241c7386f4SmrgLT_PREREQ([2.2])
251c7386f4SmrgLT_INIT([win32-dll])
261c7386f4Smrg
271c7386f4Smrg# Require xorg-macros minimum of 1.18 - Initial version
281c7386f4Smrgm4_ifndef([XORG_MACROS_VERSION],
291c7386f4Smrg          [m4_fatal([must install xorg-macros 1.18 or later before running autoconf/autogen])])
301c7386f4SmrgXORG_MACROS_VERSION(1.18)
311c7386f4SmrgXORG_DEFAULT_OPTIONS
321c7386f4SmrgXORG_ENABLE_DEVEL_DOCS
331c7386f4SmrgXORG_WITH_DOXYGEN
341c7386f4Smrg
351c7386f4Smrg# The dot drawing tool is checked by XORG_WITH_DOXYGEN, needed for xcb manual
361c7386f4Smrgif test x"$HAVE_DOT" = xno; then
371c7386f4Smrg    AC_MSG_WARN([dot not found - doxygen targets will be skipped])
381c7386f4Smrgfi
39602e473dSmrg
408ffb90f1SmrgPKG_CHECK_MODULES(CHECK, [check >= 0.9.6], [HAVE_CHECK=yes], [HAVE_CHECK=no])
41602e473dSmrgAM_CONDITIONAL(HAVE_CHECK, test x$HAVE_CHECK = xyes)
42602e473dSmrg
431016ad83SmrgXSLTPROC=no
441016ad83SmrgHTML_CHECK_RESULT=no
45602e473dSmrgif test x"$HAVE_CHECK" = xyes; then
461c7386f4Smrg        AC_PATH_PROG(XSLTPROC, xsltproc, no)
471c7386f4Smrg        if test x"$XSLTPROC" != xno; then
481c7386f4Smrg                HTML_CHECK_RESULT=yes
491c7386f4Smrg        fi
50602e473dSmrgfi
51602e473dSmrgAC_SUBST(HTML_CHECK_RESULT)
52602e473dSmrg
53602e473dSmrg# Checks for pkg-config packages
54b9526c6aSmrgPKG_CHECK_MODULES(XCBPROTO, xcb-proto >= 1.17.0)
55aa30ed02SmrgNEEDED="xau >= 0.99.2"
56aa30ed02Smrgcase $host_os in
57b9526c6aSmrglinux*|darwin*|solaris*|dragonfly*|freebsd*|netbsd*) ;;
58aa30ed02Smrg     *) NEEDED="$NEEDED pthread-stubs" ;;
59aa30ed02Smrgesac
60602e473dSmrgPKG_CHECK_MODULES(NEEDED, $NEEDED)
61602e473dSmrg
62602e473dSmrghave_xdmcp="no"
63602e473dSmrgPKG_CHECK_MODULES(XDMCP, xdmcp,
641c7386f4Smrg        AC_CHECK_LIB(Xdmcp, XdmcpWrap,
651c7386f4Smrg                [
661c7386f4Smrg                AC_DEFINE(HASXDMAUTH,1,[Has Wraphelp.c needed for XDM AUTH protocols])
671c7386f4Smrg                NEEDED="$NEEDED xdmcp"
681c7386f4Smrg                have_xdmcp="yes"
691c7386f4Smrg                ],
701c7386f4Smrg                [
711c7386f4Smrg                XDMCP_CFLAGS=
721c7386f4Smrg                XDMCP_LIBS=
731c7386f4Smrg                ], [$XDMCP_LIBS]),
741c7386f4Smrg        [AC_MSG_RESULT(no)])
75602e473dSmrg
76602e473dSmrgAC_SUBST(NEEDED)
77602e473dSmrg
78602e473dSmrg# Find the xcb-proto protocol descriptions
79602e473dSmrgAC_MSG_CHECKING(XCBPROTO_XCBINCLUDEDIR)
80602e473dSmrgXCBPROTO_XCBINCLUDEDIR=`$PKG_CONFIG --variable=xcbincludedir xcb-proto`
81602e473dSmrgAC_MSG_RESULT($XCBPROTO_XCBINCLUDEDIR)
82602e473dSmrgAC_SUBST(XCBPROTO_XCBINCLUDEDIR)
83602e473dSmrg
84602e473dSmrg# Find the xcb-proto version
85602e473dSmrgXCBPROTO_VERSION=`$PKG_CONFIG --modversion xcb-proto`
86602e473dSmrgAC_SUBST(XCBPROTO_VERSION)
87602e473dSmrg
88602e473dSmrg# Find the xcbgen Python package
89602e473dSmrgAC_MSG_CHECKING(XCBPROTO_XCBPYTHONDIR)
90602e473dSmrgXCBPROTO_XCBPYTHONDIR=`$PKG_CONFIG --variable=pythondir xcb-proto`
91602e473dSmrgAC_MSG_RESULT($XCBPROTO_XCBPYTHONDIR)
92602e473dSmrgAC_SUBST(XCBPROTO_XCBPYTHONDIR)
93602e473dSmrg
94602e473dSmrgAC_SEARCH_LIBS(getaddrinfo, socket)
95602e473dSmrgAC_SEARCH_LIBS(connect, socket)
96602e473dSmrg
977204935cSmrg# Find support for sending a message from a socket
987204935cSmrgAC_SEARCH_LIBS(sendmsg, socket, [have_sendmsg="yes"], [have_sendmsg="no"])
991016ad83Smrg
1001016ad83Smrg# XPG4v2/UNIX95 added msg_control - check to see if we need to define
1011016ad83Smrg# _XOPEN_SOURCE to get it (such as on Solaris)
1021016ad83SmrgAC_CHECK_MEMBER([struct msghdr.msg_control], [], [],
1031016ad83Smrg                 [
1041016ad83SmrgAC_INCLUDES_DEFAULT
1051016ad83Smrg#include <sys/socket.h>
1061016ad83Smrg                 ])
1071016ad83Smrg# First try for Solaris in C99 compliant mode, which requires XPG6/UNIX03
1081016ad83Smrgif test "x$ac_cv_member_struct_msghdr_msg_control" = xno; then
1091016ad83Smrg    unset ac_cv_member_struct_msghdr_msg_control
1101016ad83Smrg    AC_MSG_NOTICE([trying again with _XOPEN_SOURCE=600])
1111016ad83Smrg    AC_CHECK_MEMBER([struct msghdr.msg_control],
1121016ad83Smrg                    [AC_DEFINE([_XOPEN_SOURCE], [600],
1131016ad83Smrg                       [Defined if needed to expose struct msghdr.msg_control])
1141016ad83Smrg                    ], [], [
1151016ad83Smrg#define _XOPEN_SOURCE 600
1161016ad83SmrgAC_INCLUDES_DEFAULT
1171016ad83Smrg#include <sys/socket.h>
1181016ad83Smrg                     ])
1191016ad83Smrgfi
1201016ad83Smrg# If that didn't work, fall back to XPG5/UNIX98 with C89
1211016ad83Smrgif test "x$ac_cv_member_struct_msghdr_msg_control" = xno; then
1221016ad83Smrg    unset ac_cv_member_struct_msghdr_msg_control
1231016ad83Smrg    AC_MSG_NOTICE([trying again with _XOPEN_SOURCE=500])
1241016ad83Smrg    AC_CHECK_MEMBER([struct msghdr.msg_control],
1251016ad83Smrg                    [AC_DEFINE([_XOPEN_SOURCE], [500],
1261016ad83Smrg                       [Defined if needed to expose struct msghdr.msg_control])
1277204935cSmrg                    ], [have_sendmsg="no"], [
1281016ad83Smrg#define _XOPEN_SOURCE 500
1291016ad83SmrgAC_INCLUDES_DEFAULT
1301016ad83Smrg#include <sys/socket.h>
1311016ad83Smrg                     ])
1321016ad83Smrgfi
1331016ad83Smrg
1347204935cSmrgcase x$have_sendmsg in
1351016ad83Smrgxyes)
1361016ad83Smrg        AC_DEFINE([HAVE_SENDMSG],1,[Define if your platform supports sendmsg])
1371016ad83Smrg        ;;
1381016ad83Smrgesac
1391016ad83Smrg
14021298544Smrghave_win32="no"
14121298544Smrglt_enable_auto_import=""
142602e473dSmrgcase $host_os in
14321298544Smrgmingw*)
1441c7386f4Smrg        have_win32="yes"
1451c7386f4Smrg        lt_enable_auto_import="-Wl,--enable-auto-import"
1461c7386f4Smrg        ;;
147602e473dSmrglinux*)
1481c7386f4Smrg        AC_DEFINE([HAVE_ABSTRACT_SOCKETS], 1, [Define if your platform supports abstract sockets])
1491c7386f4Smrg        ;;
150602e473dSmrgesac
151602e473dSmrg
15221298544SmrgAC_SUBST(lt_enable_auto_import)
15321298544SmrgAM_CONDITIONAL([XCB_HAVE_WIN32], [test "x${have_win32}" = "xyes"])
15421298544Smrg
155602e473dSmrgdnl define buffer queue size
156602e473dSmrgAC_ARG_WITH([queue-size],
1571c7386f4Smrg            AS_HELP_STRING([--with-queue-size=SIZE],
158602e473dSmrg            [Set the XCB buffer queue size (default is 16384)]),
159602e473dSmrg            [xcb_queue_buffer_size="$withval"],
160602e473dSmrg            [xcb_queue_buffer_size=16384])
161602e473dSmrgAC_DEFINE_UNQUOTED(XCB_QUEUE_BUFFER_SIZE, [$xcb_queue_buffer_size],
162602e473dSmrg                   [XCB buffer queue size])
163602e473dSmrg
164602e473dSmrgdnl check for the sockaddr_un.sun_len member
165602e473dSmrgAC_CHECK_MEMBER([struct sockaddr_un.sun_len],
1661c7386f4Smrg                [AC_DEFINE(HAVE_SOCKADDR_SUN_LEN,1,[Have the sockaddr_un.sun_len member.])],
1671c7386f4Smrg                [],
1681c7386f4Smrg                [ #include <sys/types.h>
1691c7386f4Smrg                  #include <sys/un.h>
1701c7386f4Smrg                ])
171602e473dSmrg
17221298544Smrgdnl check for support for Solaris Trusted Extensions
17321298544SmrgAC_CHECK_HEADERS([tsol/label.h])
17421298544SmrgAC_CHECK_FUNCS([is_system_labeled])
17521298544Smrg
17621298544Smrgdnl check for IOV_MAX, and fall back to UIO_MAXIOV on BSDish systems
17721298544SmrgAC_CHECK_DECL([IOV_MAX], [],
1781c7386f4Smrg              [AC_CHECK_DECL([UIO_MAXIOV], [AC_DEFINE([IOV_MAX], [UIO_MAXIOV])],
1791c7386f4Smrg                                           [AC_DEFINE([IOV_MAX], [16], [Define if not provided by <limits.h>])],
1801c7386f4Smrg                                           [[#include <sys/uio.h>]])],
1811c7386f4Smrg              [[#include <limits.h>]])
18221298544Smrg
183602e473dSmrgxcbincludedir='${includedir}/xcb'
184602e473dSmrgAC_SUBST(xcbincludedir)
185602e473dSmrg
186602e473dSmrgXCB_CHECK_VISIBILITY()
187602e473dSmrg
18821298544SmrgAC_CHECK_FUNC(getaddrinfo, [AC_DEFINE(HAVE_GETADDRINFO, 1, [getaddrinfo() function is available])], )
18921298544Smrg
190602e473dSmrgcase $host_os in
1911c7386f4Smrg        # darwin through Snow Leopard has poll() but can't be used to poll character devices.
1921c7386f4Smrg        darwin@<:@789@:>@*|darwin10*) ;;
1931c7386f4Smrg        darwin*)
1941c7386f4Smrg                _ac_xorg_macosx_version_min=""
1951c7386f4Smrg                if echo $CPPFLAGS $CFLAGS | grep -q mmacosx-version-min ; then
1961c7386f4Smrg                        _ac_xorg_macosx_version_min=`echo $CPPFLAGS $CFLAGS | sed 's/^.*-mmacosx-version-min=\(@<:@^ @:>@*\).*$/\1/'`
1971c7386f4Smrg                else
1981c7386f4Smrg                        _ac_xorg_macosx_version_min=$MACOSX_DEPLOYMENT_TARGET
1991c7386f4Smrg                fi
2001c7386f4Smrg                case $_ac_xorg_macosx_version_min in
2011c7386f4Smrg                        10.@<:@0123456@:>@|10.@<:@0123456@:>@.*) ;;
2021c7386f4Smrg                        *)
2031c7386f4Smrg                                AC_CHECK_FUNC(poll, [AC_DEFINE(USE_POLL, 1, [poll() function is available])], )
2041c7386f4Smrg                        ;;
2051c7386f4Smrg                esac
2061c7386f4Smrg                unset _ac_xorg_macosx_version_min
2071c7386f4Smrg                ;;
2081c7386f4Smrg        *)
2091c7386f4Smrg                AC_CHECK_FUNC(poll, [AC_DEFINE(USE_POLL, 1, [poll() function is available])], )
2101c7386f4Smrg        ;;
211602e473dSmrgesac
212602e473dSmrg
2137204935cSmrgdnl Link with winsock for socket functions on MinGW
2147204935cSmrgcase $host_os in
2157204935cSmrg        *mingw*)
2167204935cSmrg                AC_CHECK_LIB([ws2_32],[main])
2177204935cSmrg                ;;
2187204935cSmrg        *)
2197204935cSmrg                ;;
2207204935cSmrgesac
2217204935cSmrg
2227204935cSmrgXCB_EXTENSION(Composite, yes)
2237204935cSmrgXCB_EXTENSION(Damage, yes)
224b9526c6aSmrgXCB_EXTENSION(Dbe, yes)
2257204935cSmrgXCB_EXTENSION(DPMS, yes)
2267204935cSmrgXCB_EXTENSION(DRI2, yes)
2277204935cSmrgXCB_EXTENSION(DRI3, $have_sendmsg)
228245c37e9SmrgXCB_EXTENSION(GE, no)
2297204935cSmrgXCB_EXTENSION(GLX, yes)
2307204935cSmrgXCB_EXTENSION(Present, yes)
2317204935cSmrgXCB_EXTENSION(RandR, yes)
2327204935cSmrgXCB_EXTENSION(Record, yes)
2337204935cSmrgXCB_EXTENSION(Render, yes)
2347204935cSmrgXCB_EXTENSION(Resource, yes)
2357204935cSmrgXCB_EXTENSION(Screensaver, yes)
2367204935cSmrgXCB_EXTENSION(Shape, yes)
2377204935cSmrgXCB_EXTENSION(Shm, yes)
2387204935cSmrgXCB_EXTENSION(Sync, yes)
2397204935cSmrgXCB_EXTENSION(Xevie, no)
2407204935cSmrgXCB_EXTENSION(XFixes, yes)
2417204935cSmrgXCB_EXTENSION(XFree86-DRI, yes)
2427204935cSmrgXCB_EXTENSION(Xinerama, yes)
243245c37e9SmrgXCB_EXTENSION(XInput, yes)
2447204935cSmrgXCB_EXTENSION(XKB, yes)
2457204935cSmrgXCB_EXTENSION(Xprint, no)
2467204935cSmrgXCB_EXTENSION(SELinux, no)
2477204935cSmrgXCB_EXTENSION(XTest, yes)
2487204935cSmrgXCB_EXTENSION(Xv, yes)
2497204935cSmrgXCB_EXTENSION(XvMC, yes)
250602e473dSmrg
2517204935cSmrgAC_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])
2527204935cSmrg
2537204935cSmrgAM_CONDITIONAL(XCB_SERVERSIDE_SUPPORT, test "x$XCB_SERVERSIDE_SUPPORT" = "xyes")
2547204935cSmrg
255602e473dSmrgAC_CONFIG_FILES([
256602e473dSmrgMakefile
257602e473dSmrgdoc/Makefile
2581c7386f4Smrgman/Makefile
259602e473dSmrgsrc/Makefile
260602e473dSmrgtests/Makefile
261602e473dSmrg])
262602e473dSmrg
263602e473dSmrgAC_CONFIG_FILES([
264602e473dSmrgxcb.pc
265602e473dSmrgxcb-composite.pc
266602e473dSmrgxcb-damage.pc
267b9526c6aSmrgxcb-dbe.pc
268602e473dSmrgxcb-dpms.pc
269602e473dSmrgxcb-dri2.pc
2701016ad83Smrgxcb-dri3.pc
271245c37e9Smrgxcb-ge.pc
272602e473dSmrgxcb-glx.pc
2731016ad83Smrgxcb-present.pc
274602e473dSmrgxcb-randr.pc
275602e473dSmrgxcb-record.pc
276602e473dSmrgxcb-render.pc
277602e473dSmrgxcb-res.pc
278602e473dSmrgxcb-screensaver.pc
279602e473dSmrgxcb-shape.pc
280602e473dSmrgxcb-shm.pc
281602e473dSmrgxcb-sync.pc
282602e473dSmrgxcb-xevie.pc
283602e473dSmrgxcb-xf86dri.pc
284602e473dSmrgxcb-xfixes.pc
285602e473dSmrgxcb-xinerama.pc
286602e473dSmrgxcb-xinput.pc
28721298544Smrgxcb-xkb.pc
288602e473dSmrgxcb-xprint.pc
289602e473dSmrgxcb-xselinux.pc
290602e473dSmrgxcb-xtest.pc
291602e473dSmrgxcb-xv.pc
292602e473dSmrgxcb-xvmc.pc
293602e473dSmrg])
294602e473dSmrg
295602e473dSmrgAC_CONFIG_FILES([
296602e473dSmrgdoc/xcb.doxygen
297602e473dSmrg])
298602e473dSmrg
299602e473dSmrgAC_OUTPUT
300602e473dSmrg
301602e473dSmrgdnl Configuration output
302602e473dSmrg
303602e473dSmrgecho ""
304602e473dSmrgecho "  Package: ${PACKAGE_NAME} ${PACKAGE_VERSION}"
305602e473dSmrgecho ""
306602e473dSmrgecho "  Configuration"
307602e473dSmrgecho "    XDM support.........: ${have_xdmcp}"
3087204935cSmrgecho "    sendmsg fd passing..: ${have_sendmsg}"
309602e473dSmrgecho "    Build unit tests....: ${HAVE_CHECK}"
3101016ad83Smrgecho "      with html results.: ${HTML_CHECK_RESULT}"
311602e473dSmrgecho "    XCB buffer size.....: ${xcb_queue_buffer_size}"
312602e473dSmrgecho ""
313b20a2039Smrgecho "  X11 extensions"
314b20a2039Smrgecho "    Composite...........: ${BUILD_COMPOSITE}"
315b20a2039Smrgecho "    Damage..............: ${BUILD_DAMAGE}"
316b9526c6aSmrgecho "    Dbe.................: ${BUILD_DBE}"
317b20a2039Smrgecho "    Dpms................: ${BUILD_DPMS}"
318b20a2039Smrgecho "    Dri2................: ${BUILD_DRI2}"
3191016ad83Smrgecho "    Dri3................: ${BUILD_DRI3}"
320245c37e9Smrgecho "    GenericEvent........: ${BUILD_GE}"
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