configure.ac revision 8ffb90f1
11c7386f4Smrgdnl Process this file with autoconf to produce a configure script.
2602e473dSmrg
321298544Smrg# Initialize Autoconf
41016ad83SmrgAC_PREREQ([2.60])
58ffb90f1SmrgAC_INIT([libxcb],[1.15],
6aa30ed02Smrg        [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])
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
398ffb90f1SmrgPKG_CHECK_MODULES(CHECK, [check >= 0.9.6], [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
53aa30ed02SmrgPKG_CHECK_MODULES(XCBPROTO, xcb-proto >= 1.14)
54aa30ed02SmrgNEEDED="xau >= 0.99.2"
55aa30ed02Smrgcase $host_os in
56aa30ed02Smrglinux*) ;;
57aa30ed02Smrg     *) NEEDED="$NEEDED pthread-stubs" ;;
58aa30ed02Smrgesac
59602e473dSmrgPKG_CHECK_MODULES(NEEDED, $NEEDED)
60602e473dSmrg
61602e473dSmrghave_xdmcp="no"
62602e473dSmrgPKG_CHECK_MODULES(XDMCP, xdmcp,
631c7386f4Smrg        AC_CHECK_LIB(Xdmcp, XdmcpWrap,
641c7386f4Smrg                [
651c7386f4Smrg                AC_DEFINE(HASXDMAUTH,1,[Has Wraphelp.c needed for XDM AUTH protocols])
661c7386f4Smrg                NEEDED="$NEEDED xdmcp"
671c7386f4Smrg                have_xdmcp="yes"
681c7386f4Smrg                ],
691c7386f4Smrg                [
701c7386f4Smrg                XDMCP_CFLAGS=
711c7386f4Smrg                XDMCP_LIBS=
721c7386f4Smrg                ], [$XDMCP_LIBS]),
731c7386f4Smrg        [AC_MSG_RESULT(no)])
74602e473dSmrg
75602e473dSmrgAC_SUBST(NEEDED)
76602e473dSmrg
77602e473dSmrg# Find the xcb-proto protocol descriptions
78602e473dSmrgAC_MSG_CHECKING(XCBPROTO_XCBINCLUDEDIR)
79602e473dSmrgXCBPROTO_XCBINCLUDEDIR=`$PKG_CONFIG --variable=xcbincludedir xcb-proto`
80602e473dSmrgAC_MSG_RESULT($XCBPROTO_XCBINCLUDEDIR)
81602e473dSmrgAC_SUBST(XCBPROTO_XCBINCLUDEDIR)
82602e473dSmrg
83602e473dSmrg# Find the xcb-proto version
84602e473dSmrgXCBPROTO_VERSION=`$PKG_CONFIG --modversion xcb-proto`
85602e473dSmrgAC_SUBST(XCBPROTO_VERSION)
86602e473dSmrg
87602e473dSmrg# Find the xcbgen Python package
88602e473dSmrgAC_MSG_CHECKING(XCBPROTO_XCBPYTHONDIR)
89602e473dSmrgXCBPROTO_XCBPYTHONDIR=`$PKG_CONFIG --variable=pythondir xcb-proto`
90602e473dSmrgAC_MSG_RESULT($XCBPROTO_XCBPYTHONDIR)
91602e473dSmrgAC_SUBST(XCBPROTO_XCBPYTHONDIR)
92602e473dSmrg
93602e473dSmrgAC_HEADER_STDC
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)
2247204935cSmrgXCB_EXTENSION(DPMS, yes)
2257204935cSmrgXCB_EXTENSION(DRI2, yes)
2267204935cSmrgXCB_EXTENSION(DRI3, $have_sendmsg)
227245c37e9SmrgXCB_EXTENSION(GE, no)
2287204935cSmrgXCB_EXTENSION(GLX, yes)
2297204935cSmrgXCB_EXTENSION(Present, yes)
2307204935cSmrgXCB_EXTENSION(RandR, yes)
2317204935cSmrgXCB_EXTENSION(Record, yes)
2327204935cSmrgXCB_EXTENSION(Render, yes)
2337204935cSmrgXCB_EXTENSION(Resource, yes)
2347204935cSmrgXCB_EXTENSION(Screensaver, yes)
2357204935cSmrgXCB_EXTENSION(Shape, yes)
2367204935cSmrgXCB_EXTENSION(Shm, yes)
2377204935cSmrgXCB_EXTENSION(Sync, yes)
2387204935cSmrgXCB_EXTENSION(Xevie, no)
2397204935cSmrgXCB_EXTENSION(XFixes, yes)
2407204935cSmrgXCB_EXTENSION(XFree86-DRI, yes)
2417204935cSmrgXCB_EXTENSION(Xinerama, yes)
242245c37e9SmrgXCB_EXTENSION(XInput, yes)
2437204935cSmrgXCB_EXTENSION(XKB, yes)
2447204935cSmrgXCB_EXTENSION(Xprint, no)
2457204935cSmrgXCB_EXTENSION(SELinux, no)
2467204935cSmrgXCB_EXTENSION(XTest, yes)
2477204935cSmrgXCB_EXTENSION(Xv, yes)
2487204935cSmrgXCB_EXTENSION(XvMC, yes)
249602e473dSmrg
250602e473dSmrgAC_ARG_WITH(launchd, AS_HELP_STRING([--with-launchd], [Build with support for Apple's launchd (default: auto)]), [LAUNCHD=$withval], [LAUNCHD=auto])
251602e473dSmrgif test "x$LAUNCHD" = xauto; then
2521c7386f4Smrg        unset LAUNCHD
2531c7386f4Smrg        AC_CHECK_PROG(LAUNCHD, [launchd], [yes], [no], [$PATH$PATH_SEPARATOR/sbin])
254602e473dSmrgfi
255602e473dSmrg
256602e473dSmrgif test "x$LAUNCHD" = xyes ; then
2571c7386f4Smrg        AC_DEFINE(HAVE_LAUNCHD, 1, [launchd support available])
258602e473dSmrgfi
259602e473dSmrg
2607204935cSmrgAC_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])
2617204935cSmrg
2627204935cSmrgAM_CONDITIONAL(XCB_SERVERSIDE_SUPPORT, test "x$XCB_SERVERSIDE_SUPPORT" = "xyes")
2637204935cSmrg
264602e473dSmrgAC_CONFIG_FILES([
265602e473dSmrgMakefile
266602e473dSmrgdoc/Makefile
2671c7386f4Smrgman/Makefile
268602e473dSmrgsrc/Makefile
269602e473dSmrgtests/Makefile
270602e473dSmrg])
271602e473dSmrg
272602e473dSmrgAC_CONFIG_FILES([
273602e473dSmrgxcb.pc
274602e473dSmrgxcb-composite.pc
275602e473dSmrgxcb-damage.pc
276602e473dSmrgxcb-dpms.pc
277602e473dSmrgxcb-dri2.pc
2781016ad83Smrgxcb-dri3.pc
279245c37e9Smrgxcb-ge.pc
280602e473dSmrgxcb-glx.pc
2811016ad83Smrgxcb-present.pc
282602e473dSmrgxcb-randr.pc
283602e473dSmrgxcb-record.pc
284602e473dSmrgxcb-render.pc
285602e473dSmrgxcb-res.pc
286602e473dSmrgxcb-screensaver.pc
287602e473dSmrgxcb-shape.pc
288602e473dSmrgxcb-shm.pc
289602e473dSmrgxcb-sync.pc
290602e473dSmrgxcb-xevie.pc
291602e473dSmrgxcb-xf86dri.pc
292602e473dSmrgxcb-xfixes.pc
293602e473dSmrgxcb-xinerama.pc
294602e473dSmrgxcb-xinput.pc
29521298544Smrgxcb-xkb.pc
296602e473dSmrgxcb-xprint.pc
297602e473dSmrgxcb-xselinux.pc
298602e473dSmrgxcb-xtest.pc
299602e473dSmrgxcb-xv.pc
300602e473dSmrgxcb-xvmc.pc
301602e473dSmrg])
302602e473dSmrg
303602e473dSmrgAC_CONFIG_FILES([
304602e473dSmrgdoc/xcb.doxygen
305602e473dSmrg])
306602e473dSmrg
307602e473dSmrgAC_OUTPUT
308602e473dSmrg
309602e473dSmrgdnl Configuration output
310602e473dSmrg
311602e473dSmrgecho ""
312602e473dSmrgecho "  Package: ${PACKAGE_NAME} ${PACKAGE_VERSION}"
313602e473dSmrgecho ""
314602e473dSmrgecho "  Configuration"
315602e473dSmrgecho "    XDM support.........: ${have_xdmcp}"
3167204935cSmrgecho "    sendmsg fd passing..: ${have_sendmsg}"
317602e473dSmrgecho "    Build unit tests....: ${HAVE_CHECK}"
3181016ad83Smrgecho "      with html results.: ${HTML_CHECK_RESULT}"
319602e473dSmrgecho "    XCB buffer size.....: ${xcb_queue_buffer_size}"
320602e473dSmrgecho ""
321b20a2039Smrgecho "  X11 extensions"
322b20a2039Smrgecho "    Composite...........: ${BUILD_COMPOSITE}"
323b20a2039Smrgecho "    Damage..............: ${BUILD_DAMAGE}"
324b20a2039Smrgecho "    Dpms................: ${BUILD_DPMS}"
325b20a2039Smrgecho "    Dri2................: ${BUILD_DRI2}"
3261016ad83Smrgecho "    Dri3................: ${BUILD_DRI3}"
327245c37e9Smrgecho "    GenericEvent........: ${BUILD_GE}"
328b20a2039Smrgecho "    Glx.................: ${BUILD_GLX}"
329b20a2039Smrgecho "    Randr...............: ${BUILD_RANDR}"
330b20a2039Smrgecho "    Record..............: ${BUILD_RECORD}"
331b20a2039Smrgecho "    Render..............: ${BUILD_RENDER}"
332b20a2039Smrgecho "    Resource............: ${BUILD_RESOURCE}"
333b20a2039Smrgecho "    Screensaver.........: ${BUILD_SCREENSAVER}"
334b20a2039Smrgecho "    selinux.............: ${BUILD_SELINUX}"
335b20a2039Smrgecho "    Shape...............: ${BUILD_SHAPE}"
336b20a2039Smrgecho "    Shm.................: ${BUILD_SHM}"
337b20a2039Smrgecho "    Sync................: ${BUILD_SYNC}"
338b20a2039Smrgecho "    Xevie...............: ${BUILD_XEVIE}"
339b20a2039Smrgecho "    Xfixes..............: ${BUILD_XFIXES}"
340b20a2039Smrgecho "    Xfree86-dri.........: ${BUILD_XFREE86_DRI}"
341b20a2039Smrgecho "    xinerama............: ${BUILD_XINERAMA}"
342b20a2039Smrgecho "    xinput..............: ${BUILD_XINPUT}"
34321298544Smrgecho "    xkb.................: ${BUILD_XKB}"
344b20a2039Smrgecho "    xprint..............: ${BUILD_XPRINT}"
345b20a2039Smrgecho "    xtest...............: ${BUILD_XTEST}"
346b20a2039Smrgecho "    xv..................: ${BUILD_XV}"
347b20a2039Smrgecho "    xvmc................: ${BUILD_XVMC}"
348b20a2039Smrgecho ""
349602e473dSmrgecho "  Used CFLAGS:"
350602e473dSmrgecho "    CPPFLAGS............: ${CPPFLAGS}"
351602e473dSmrgecho "    CFLAGS..............: ${CFLAGS}"
352602e473dSmrgecho ""
353602e473dSmrgecho "  Installation:"
354602e473dSmrgecho "    Prefix..............: ${prefix}"
355602e473dSmrgecho ""
356