configure.ac revision aa30ed02
1dnl Process this file with autoconf to produce a configure script. 2 3# Initialize Autoconf 4AC_PREREQ([2.60]) 5AC_INIT([libxcb],[1.14], 6 [https://gitlab.freedesktop.org/xorg/lib/libxcb/issues], 7 [libxcb]) 8AC_CONFIG_AUX_DIR([build-aux]) 9AC_CONFIG_MACRO_DIR([m4]) 10AC_CONFIG_SRCDIR([xcb.pc.in]) 11AC_CONFIG_HEADERS([src/config.h]) 12 13# Initialize Automake 14AM_INIT_AUTOMAKE([foreign dist-xz]) 15AM_PATH_PYTHON([2.6]) 16 17# Set common system defines for POSIX extensions, such as _GNU_SOURCE 18# Must be called before any macros that run the compiler (like AC_PROG_LIBTOOL) 19# to avoid autoconf errors. 20AC_USE_SYSTEM_EXTENSIONS 21 22# Initialize libtool 23LT_PREREQ([2.2]) 24LT_INIT([win32-dll]) 25 26# Require xorg-macros minimum of 1.18 - Initial version 27m4_ifndef([XORG_MACROS_VERSION], 28 [m4_fatal([must install xorg-macros 1.18 or later before running autoconf/autogen])]) 29XORG_MACROS_VERSION(1.18) 30XORG_DEFAULT_OPTIONS 31XORG_ENABLE_DEVEL_DOCS 32XORG_WITH_DOXYGEN 33 34# The dot drawing tool is checked by XORG_WITH_DOXYGEN, needed for xcb manual 35if test x"$HAVE_DOT" = xno; then 36 AC_MSG_WARN([dot not found - doxygen targets will be skipped]) 37fi 38 39PKG_CHECK_MODULES(CHECK, [check >= 0.9.4], [HAVE_CHECK=yes], [HAVE_CHECK=no]) 40AM_CONDITIONAL(HAVE_CHECK, test x$HAVE_CHECK = xyes) 41 42XSLTPROC=no 43HTML_CHECK_RESULT=no 44if test x"$HAVE_CHECK" = xyes; then 45 AC_PATH_PROG(XSLTPROC, xsltproc, no) 46 if test x"$XSLTPROC" != xno; then 47 HTML_CHECK_RESULT=yes 48 fi 49fi 50AC_SUBST(HTML_CHECK_RESULT) 51 52# Checks for pkg-config packages 53PKG_CHECK_MODULES(XCBPROTO, xcb-proto >= 1.14) 54NEEDED="xau >= 0.99.2" 55case $host_os in 56linux*) ;; 57 *) NEEDED="$NEEDED pthread-stubs" ;; 58esac 59PKG_CHECK_MODULES(NEEDED, $NEEDED) 60 61have_xdmcp="no" 62PKG_CHECK_MODULES(XDMCP, xdmcp, 63 AC_CHECK_LIB(Xdmcp, XdmcpWrap, 64 [ 65 AC_DEFINE(HASXDMAUTH,1,[Has Wraphelp.c needed for XDM AUTH protocols]) 66 NEEDED="$NEEDED xdmcp" 67 have_xdmcp="yes" 68 ], 69 [ 70 XDMCP_CFLAGS= 71 XDMCP_LIBS= 72 ], [$XDMCP_LIBS]), 73 [AC_MSG_RESULT(no)]) 74 75AC_SUBST(NEEDED) 76 77# Find the xcb-proto protocol descriptions 78AC_MSG_CHECKING(XCBPROTO_XCBINCLUDEDIR) 79XCBPROTO_XCBINCLUDEDIR=`$PKG_CONFIG --variable=xcbincludedir xcb-proto` 80AC_MSG_RESULT($XCBPROTO_XCBINCLUDEDIR) 81AC_SUBST(XCBPROTO_XCBINCLUDEDIR) 82 83# Find the xcb-proto version 84XCBPROTO_VERSION=`$PKG_CONFIG --modversion xcb-proto` 85AC_SUBST(XCBPROTO_VERSION) 86 87# Find the xcbgen Python package 88AC_MSG_CHECKING(XCBPROTO_XCBPYTHONDIR) 89XCBPROTO_XCBPYTHONDIR=`$PKG_CONFIG --variable=pythondir xcb-proto` 90AC_MSG_RESULT($XCBPROTO_XCBPYTHONDIR) 91AC_SUBST(XCBPROTO_XCBPYTHONDIR) 92 93AC_HEADER_STDC 94AC_SEARCH_LIBS(getaddrinfo, socket) 95AC_SEARCH_LIBS(connect, socket) 96 97# Find support for sending a message from a socket 98AC_SEARCH_LIBS(sendmsg, socket, [have_sendmsg="yes"], [have_sendmsg="no"]) 99 100# XPG4v2/UNIX95 added msg_control - check to see if we need to define 101# _XOPEN_SOURCE to get it (such as on Solaris) 102AC_CHECK_MEMBER([struct msghdr.msg_control], [], [], 103 [ 104AC_INCLUDES_DEFAULT 105#include <sys/socket.h> 106 ]) 107# First try for Solaris in C99 compliant mode, which requires XPG6/UNIX03 108if test "x$ac_cv_member_struct_msghdr_msg_control" = xno; then 109 unset ac_cv_member_struct_msghdr_msg_control 110 AC_MSG_NOTICE([trying again with _XOPEN_SOURCE=600]) 111 AC_CHECK_MEMBER([struct msghdr.msg_control], 112 [AC_DEFINE([_XOPEN_SOURCE], [600], 113 [Defined if needed to expose struct msghdr.msg_control]) 114 ], [], [ 115#define _XOPEN_SOURCE 600 116AC_INCLUDES_DEFAULT 117#include <sys/socket.h> 118 ]) 119fi 120# If that didn't work, fall back to XPG5/UNIX98 with C89 121if test "x$ac_cv_member_struct_msghdr_msg_control" = xno; then 122 unset ac_cv_member_struct_msghdr_msg_control 123 AC_MSG_NOTICE([trying again with _XOPEN_SOURCE=500]) 124 AC_CHECK_MEMBER([struct msghdr.msg_control], 125 [AC_DEFINE([_XOPEN_SOURCE], [500], 126 [Defined if needed to expose struct msghdr.msg_control]) 127 ], [have_sendmsg="no"], [ 128#define _XOPEN_SOURCE 500 129AC_INCLUDES_DEFAULT 130#include <sys/socket.h> 131 ]) 132fi 133 134case x$have_sendmsg in 135xyes) 136 AC_DEFINE([HAVE_SENDMSG],1,[Define if your platform supports sendmsg]) 137 ;; 138esac 139 140have_win32="no" 141lt_enable_auto_import="" 142case $host_os in 143mingw*) 144 have_win32="yes" 145 lt_enable_auto_import="-Wl,--enable-auto-import" 146 ;; 147linux*) 148 AC_DEFINE([HAVE_ABSTRACT_SOCKETS], 1, [Define if your platform supports abstract sockets]) 149 ;; 150esac 151 152AC_SUBST(lt_enable_auto_import) 153AM_CONDITIONAL([XCB_HAVE_WIN32], [test "x${have_win32}" = "xyes"]) 154 155dnl define buffer queue size 156AC_ARG_WITH([queue-size], 157 AS_HELP_STRING([--with-queue-size=SIZE], 158 [Set the XCB buffer queue size (default is 16384)]), 159 [xcb_queue_buffer_size="$withval"], 160 [xcb_queue_buffer_size=16384]) 161AC_DEFINE_UNQUOTED(XCB_QUEUE_BUFFER_SIZE, [$xcb_queue_buffer_size], 162 [XCB buffer queue size]) 163 164dnl check for the sockaddr_un.sun_len member 165AC_CHECK_MEMBER([struct sockaddr_un.sun_len], 166 [AC_DEFINE(HAVE_SOCKADDR_SUN_LEN,1,[Have the sockaddr_un.sun_len member.])], 167 [], 168 [ #include <sys/types.h> 169 #include <sys/un.h> 170 ]) 171 172dnl check for support for Solaris Trusted Extensions 173AC_CHECK_HEADERS([tsol/label.h]) 174AC_CHECK_FUNCS([is_system_labeled]) 175 176dnl check for IOV_MAX, and fall back to UIO_MAXIOV on BSDish systems 177AC_CHECK_DECL([IOV_MAX], [], 178 [AC_CHECK_DECL([UIO_MAXIOV], [AC_DEFINE([IOV_MAX], [UIO_MAXIOV])], 179 [AC_DEFINE([IOV_MAX], [16], [Define if not provided by <limits.h>])], 180 [[#include <sys/uio.h>]])], 181 [[#include <limits.h>]]) 182 183xcbincludedir='${includedir}/xcb' 184AC_SUBST(xcbincludedir) 185 186XCB_CHECK_VISIBILITY() 187 188AC_CHECK_FUNC(getaddrinfo, [AC_DEFINE(HAVE_GETADDRINFO, 1, [getaddrinfo() function is available])], ) 189 190case $host_os in 191 # darwin through Snow Leopard has poll() but can't be used to poll character devices. 192 darwin@<:@789@:>@*|darwin10*) ;; 193 darwin*) 194 _ac_xorg_macosx_version_min="" 195 if echo $CPPFLAGS $CFLAGS | grep -q mmacosx-version-min ; then 196 _ac_xorg_macosx_version_min=`echo $CPPFLAGS $CFLAGS | sed 's/^.*-mmacosx-version-min=\(@<:@^ @:>@*\).*$/\1/'` 197 else 198 _ac_xorg_macosx_version_min=$MACOSX_DEPLOYMENT_TARGET 199 fi 200 case $_ac_xorg_macosx_version_min in 201 10.@<:@0123456@:>@|10.@<:@0123456@:>@.*) ;; 202 *) 203 AC_CHECK_FUNC(poll, [AC_DEFINE(USE_POLL, 1, [poll() function is available])], ) 204 ;; 205 esac 206 unset _ac_xorg_macosx_version_min 207 ;; 208 *) 209 AC_CHECK_FUNC(poll, [AC_DEFINE(USE_POLL, 1, [poll() function is available])], ) 210 ;; 211esac 212 213dnl Link with winsock for socket functions on MinGW 214case $host_os in 215 *mingw*) 216 AC_CHECK_LIB([ws2_32],[main]) 217 ;; 218 *) 219 ;; 220esac 221 222XCB_EXTENSION(Composite, yes) 223XCB_EXTENSION(Damage, yes) 224XCB_EXTENSION(DPMS, yes) 225XCB_EXTENSION(DRI2, yes) 226XCB_EXTENSION(DRI3, $have_sendmsg) 227XCB_EXTENSION(GE, no) 228XCB_EXTENSION(GLX, yes) 229XCB_EXTENSION(Present, yes) 230XCB_EXTENSION(RandR, yes) 231XCB_EXTENSION(Record, yes) 232XCB_EXTENSION(Render, yes) 233XCB_EXTENSION(Resource, yes) 234XCB_EXTENSION(Screensaver, yes) 235XCB_EXTENSION(Shape, yes) 236XCB_EXTENSION(Shm, yes) 237XCB_EXTENSION(Sync, yes) 238XCB_EXTENSION(Xevie, no) 239XCB_EXTENSION(XFixes, yes) 240XCB_EXTENSION(XFree86-DRI, yes) 241XCB_EXTENSION(Xinerama, yes) 242XCB_EXTENSION(XInput, yes) 243XCB_EXTENSION(XKB, yes) 244XCB_EXTENSION(Xprint, no) 245XCB_EXTENSION(SELinux, no) 246XCB_EXTENSION(XTest, yes) 247XCB_EXTENSION(Xv, yes) 248XCB_EXTENSION(XvMC, yes) 249 250AC_ARG_WITH(launchd, AS_HELP_STRING([--with-launchd], [Build with support for Apple's launchd (default: auto)]), [LAUNCHD=$withval], [LAUNCHD=auto]) 251if test "x$LAUNCHD" = xauto; then 252 unset LAUNCHD 253 AC_CHECK_PROG(LAUNCHD, [launchd], [yes], [no], [$PATH$PATH_SEPARATOR/sbin]) 254fi 255 256if test "x$LAUNCHD" = xyes ; then 257 AC_DEFINE(HAVE_LAUNCHD, 1, [launchd support available]) 258fi 259 260AC_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]) 261 262AM_CONDITIONAL(XCB_SERVERSIDE_SUPPORT, test "x$XCB_SERVERSIDE_SUPPORT" = "xyes") 263 264AC_CONFIG_FILES([ 265Makefile 266doc/Makefile 267man/Makefile 268src/Makefile 269tests/Makefile 270]) 271 272AC_CONFIG_FILES([ 273xcb.pc 274xcb-composite.pc 275xcb-damage.pc 276xcb-dpms.pc 277xcb-dri2.pc 278xcb-dri3.pc 279xcb-ge.pc 280xcb-glx.pc 281xcb-present.pc 282xcb-randr.pc 283xcb-record.pc 284xcb-render.pc 285xcb-res.pc 286xcb-screensaver.pc 287xcb-shape.pc 288xcb-shm.pc 289xcb-sync.pc 290xcb-xevie.pc 291xcb-xf86dri.pc 292xcb-xfixes.pc 293xcb-xinerama.pc 294xcb-xinput.pc 295xcb-xkb.pc 296xcb-xprint.pc 297xcb-xselinux.pc 298xcb-xtest.pc 299xcb-xv.pc 300xcb-xvmc.pc 301]) 302 303AC_CONFIG_FILES([ 304doc/xcb.doxygen 305]) 306 307AC_OUTPUT 308 309dnl Configuration output 310 311echo "" 312echo " Package: ${PACKAGE_NAME} ${PACKAGE_VERSION}" 313echo "" 314echo " Configuration" 315echo " XDM support.........: ${have_xdmcp}" 316echo " sendmsg fd passing..: ${have_sendmsg}" 317echo " Build unit tests....: ${HAVE_CHECK}" 318echo " with html results.: ${HTML_CHECK_RESULT}" 319echo " XCB buffer size.....: ${xcb_queue_buffer_size}" 320echo "" 321echo " X11 extensions" 322echo " Composite...........: ${BUILD_COMPOSITE}" 323echo " Damage..............: ${BUILD_DAMAGE}" 324echo " Dpms................: ${BUILD_DPMS}" 325echo " Dri2................: ${BUILD_DRI2}" 326echo " Dri3................: ${BUILD_DRI3}" 327echo " GenericEvent........: ${BUILD_GE}" 328echo " Glx.................: ${BUILD_GLX}" 329echo " Randr...............: ${BUILD_RANDR}" 330echo " Record..............: ${BUILD_RECORD}" 331echo " Render..............: ${BUILD_RENDER}" 332echo " Resource............: ${BUILD_RESOURCE}" 333echo " Screensaver.........: ${BUILD_SCREENSAVER}" 334echo " selinux.............: ${BUILD_SELINUX}" 335echo " Shape...............: ${BUILD_SHAPE}" 336echo " Shm.................: ${BUILD_SHM}" 337echo " Sync................: ${BUILD_SYNC}" 338echo " Xevie...............: ${BUILD_XEVIE}" 339echo " Xfixes..............: ${BUILD_XFIXES}" 340echo " Xfree86-dri.........: ${BUILD_XFREE86_DRI}" 341echo " xinerama............: ${BUILD_XINERAMA}" 342echo " xinput..............: ${BUILD_XINPUT}" 343echo " xkb.................: ${BUILD_XKB}" 344echo " xprint..............: ${BUILD_XPRINT}" 345echo " xtest...............: ${BUILD_XTEST}" 346echo " xv..................: ${BUILD_XV}" 347echo " xvmc................: ${BUILD_XVMC}" 348echo "" 349echo " Used CFLAGS:" 350echo " CPPFLAGS............: ${CPPFLAGS}" 351echo " CFLAGS..............: ${CFLAGS}" 352echo "" 353echo " Installation:" 354echo " Prefix..............: ${prefix}" 355echo "" 356