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