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