Test the value of msg_controllen for platforms whose CMSG_FIRSTHDR() does not test...
[free-sw/xcb/libxcb] / configure.ac
1 #                                               -*- Autoconf -*-
2 # Process this file with autoconf to produce a configure script.
3
4 # Initialize Autoconf
5 AC_PREREQ([2.60])
6 AC_INIT([libxcb],
7         1.9,
8         [xcb@lists.freedesktop.org])
9 AC_CONFIG_AUX_DIR([build-aux])
10 AC_CONFIG_MACRO_DIR([m4])
11 AC_CONFIG_SRCDIR([xcb.pc.in])
12
13 # Initialize Automake
14 AM_INIT_AUTOMAKE([foreign dist-bzip2])
15 m4_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.
20 AC_USE_SYSTEM_EXTENSIONS
21
22 AM_PATH_PYTHON([2.6])
23
24 PKG_CHECK_MODULES(CHECK, [check >= 0.9.4], [HAVE_CHECK=yes], [HAVE_CHECK=no])
25 AM_CONDITIONAL(HAVE_CHECK, test x$HAVE_CHECK = xyes)
26
27 AC_CONFIG_HEADERS([src/config.h])
28
29 AC_LIBTOOL_WIN32_DLL
30 AC_PROG_LIBTOOL
31 AC_PROG_CC
32
33 XSLTPROC=no
34 HTML_CHECK_RESULT=no
35 if 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
40 fi
41 AC_SUBST(HTML_CHECK_RESULT)
42
43 # Checks for pkg-config packages
44 PKG_CHECK_MODULES(XCBPROTO, xcb-proto >= 1.9)
45 NEEDED="pthread-stubs xau >= 0.99.2"
46 PKG_CHECK_MODULES(NEEDED, $NEEDED)
47
48 have_xdmcp="no"
49 PKG_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
62 AC_SUBST(NEEDED)
63
64 # Find the xcb-proto protocol descriptions
65 AC_MSG_CHECKING(XCBPROTO_XCBINCLUDEDIR)
66 XCBPROTO_XCBINCLUDEDIR=`$PKG_CONFIG --variable=xcbincludedir xcb-proto`
67 AC_MSG_RESULT($XCBPROTO_XCBINCLUDEDIR)
68 AC_SUBST(XCBPROTO_XCBINCLUDEDIR)
69
70 # Find the xcb-proto version
71 XCBPROTO_VERSION=`$PKG_CONFIG --modversion xcb-proto`
72 AC_SUBST(XCBPROTO_VERSION)
73
74 # Find the xcbgen Python package
75 AC_MSG_CHECKING(XCBPROTO_XCBPYTHONDIR)
76 XCBPROTO_XCBPYTHONDIR=`$PKG_CONFIG --variable=pythondir xcb-proto`
77 AC_MSG_RESULT($XCBPROTO_XCBPYTHONDIR)
78 AC_SUBST(XCBPROTO_XCBPYTHONDIR)
79
80 AC_HEADER_STDC
81 AC_SEARCH_LIBS(getaddrinfo, socket)
82 AC_SEARCH_LIBS(connect, socket)
83
84 AC_ARG_ENABLE(sendfds, AS_HELP_STRING([--disable-sendfds], [Support FD passing (default: auto)]),
85               [sendfds=$enableval], [sendfds=auto])
86
87 case x$sendfds in
88 xauto)
89         AC_SEARCH_LIBS(sendmsg, socket, [sendfds="yes"], [sendfds="no"])
90         ;;
91 esac
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)
95 AC_CHECK_MEMBER([struct msghdr.msg_control], [], [],
96                  [
97 AC_INCLUDES_DEFAULT
98 #include <sys/socket.h>
99                  ])
100 # First try for Solaris in C99 compliant mode, which requires XPG6/UNIX03
101 if 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
109 AC_INCLUDES_DEFAULT
110 #include <sys/socket.h>
111                      ])
112 fi
113 # If that didn't work, fall back to XPG5/UNIX98 with C89
114 if 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
122 AC_INCLUDES_DEFAULT
123 #include <sys/socket.h>
124                      ])
125 fi
126
127 case x$sendfds in
128 xyes)
129         AC_DEFINE([HAVE_SENDMSG],1,[Define if your platform supports sendmsg])
130         ;;
131 esac
132
133 have_win32="no"
134 lt_enable_auto_import=""
135 case $host_os in
136 mingw*)
137         have_win32="yes"
138         lt_enable_auto_import="-Wl,--enable-auto-import"
139         ;;
140 linux*)
141         AC_DEFINE([HAVE_ABSTRACT_SOCKETS], 1, [Define if your platform supports abstract sockets])
142         ;;
143 esac
144
145 AC_SUBST(lt_enable_auto_import)
146 AM_CONDITIONAL([XCB_HAVE_WIN32], [test "x${have_win32}" = "xyes"])
147
148 dnl define buffer queue size
149 AC_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])
154 AC_DEFINE_UNQUOTED(XCB_QUEUE_BUFFER_SIZE, [$xcb_queue_buffer_size],
155                    [XCB buffer queue size])
156
157 dnl check for the sockaddr_un.sun_len member
158 AC_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
165 dnl check for support for Solaris Trusted Extensions
166 AC_CHECK_HEADERS([tsol/label.h])
167 AC_CHECK_FUNCS([is_system_labeled])
168
169 dnl check for IOV_MAX, and fall back to UIO_MAXIOV on BSDish systems
170 AC_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
176 xcbincludedir='${includedir}/xcb'
177 AC_SUBST(xcbincludedir)
178
179 if  test "x$GCC" = xyes ; then
180     CWARNFLAGS="-Wall -Wpointer-arith -Wold-style-definition \
181                 -Wstrict-prototypes -Wmissing-declarations -Wnested-externs"
182 else
183     AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"])
184     if test "x$SUNCC" = "xyes"; then
185         CWARNFLAGS="-v -fd"
186     fi
187 fi
188 AC_SUBST(CWARNFLAGS)
189
190 XCB_CHECK_VISIBILITY()
191
192 XCB_CHECK_DOXYGEN()
193
194 AC_CHECK_FUNC(getaddrinfo, [AC_DEFINE(HAVE_GETADDRINFO, 1, [getaddrinfo() function is available])], )
195
196 case $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         ;;
217 esac
218
219 XCB_EXTENSION(Composite, "yes")
220 XCB_EXTENSION(Damage, "yes")
221 XCB_EXTENSION(DPMS, "yes")
222 XCB_EXTENSION(DRI2, "yes")
223 XCB_EXTENSION(DRI3, "$sendfds")
224 XCB_EXTENSION(GLX, "yes")
225 XCB_EXTENSION(Present, "yes")
226 XCB_EXTENSION(RandR, "yes")
227 XCB_EXTENSION(Record, "yes")
228 XCB_EXTENSION(Render, "yes")
229 XCB_EXTENSION(Resource, "yes")
230 XCB_EXTENSION(Screensaver, "yes")
231 XCB_EXTENSION(Shape, "yes")
232 XCB_EXTENSION(Shm, "yes")
233 XCB_EXTENSION(Sync, "yes")
234 XCB_EXTENSION(Xevie, "yes")
235 XCB_EXTENSION(XFixes, "yes")
236 XCB_EXTENSION(XFree86-DRI, "yes")
237 XCB_EXTENSION(Xinerama, "yes")
238 XCB_EXTENSION(XInput, "no")
239 XCB_EXTENSION(XKB, "yes")
240 XCB_EXTENSION(Xprint, "yes")
241 XCB_EXTENSION(SELinux, "no")
242 XCB_EXTENSION(XTest, "yes")
243 XCB_EXTENSION(Xv, "yes")
244 XCB_EXTENSION(XvMC, "yes")
245
246 AC_ARG_WITH(launchd, AS_HELP_STRING([--with-launchd], [Build with support for Apple's launchd (default: auto)]), [LAUNCHD=$withval], [LAUNCHD=auto])
247 if test "x$LAUNCHD" = xauto; then
248         unset LAUNCHD
249         AC_CHECK_PROG(LAUNCHD, [launchd], [yes], [no], [$PATH$PATH_SEPARATOR/sbin])
250 fi
251
252 if test "x$LAUNCHD" = xyes ; then
253         AC_DEFINE(HAVE_LAUNCHD, 1, [launchd support available])
254 fi
255
256 AC_CONFIG_FILES([
257 Makefile
258 doc/Makefile
259 src/Makefile
260 tests/Makefile
261 ])
262
263 AC_CONFIG_FILES([
264 xcb.pc
265 xcb-composite.pc
266 xcb-damage.pc
267 xcb-dpms.pc
268 xcb-dri2.pc
269 xcb-dri3.pc
270 xcb-glx.pc
271 xcb-present.pc
272 xcb-randr.pc
273 xcb-record.pc
274 xcb-render.pc
275 xcb-res.pc
276 xcb-screensaver.pc
277 xcb-shape.pc
278 xcb-shm.pc
279 xcb-sync.pc
280 xcb-xevie.pc
281 xcb-xf86dri.pc
282 xcb-xfixes.pc
283 xcb-xinerama.pc
284 xcb-xinput.pc
285 xcb-xkb.pc
286 xcb-xprint.pc
287 xcb-xselinux.pc
288 xcb-xtest.pc
289 xcb-xv.pc
290 xcb-xvmc.pc
291 ])
292
293 AC_CONFIG_FILES([
294 doc/xcb.doxygen
295 ])
296
297 AC_OUTPUT
298
299 dnl Configuration output
300
301 echo ""
302 echo "  Package: ${PACKAGE_NAME} ${PACKAGE_VERSION}"
303 echo ""
304 echo "  Configuration"
305 echo "    XDM support.........: ${have_xdmcp}"
306 echo "    sendmsg fd passing..: ${sendfds}"
307 echo "    Build unit tests....: ${HAVE_CHECK}"
308 echo "      with html results.: ${HTML_CHECK_RESULT}"
309 echo "    XCB buffer size.....: ${xcb_queue_buffer_size}"
310 echo ""
311 echo "  X11 extensions"
312 echo "    Composite...........: ${BUILD_COMPOSITE}"
313 echo "    Damage..............: ${BUILD_DAMAGE}"
314 echo "    Dpms................: ${BUILD_DPMS}"
315 echo "    Dri2................: ${BUILD_DRI2}"
316 echo "    Dri3................: ${BUILD_DRI3}"
317 echo "    Glx.................: ${BUILD_GLX}"
318 echo "    Randr...............: ${BUILD_RANDR}"
319 echo "    Record..............: ${BUILD_RECORD}"
320 echo "    Render..............: ${BUILD_RENDER}"
321 echo "    Resource............: ${BUILD_RESOURCE}"
322 echo "    Screensaver.........: ${BUILD_SCREENSAVER}"
323 echo "    selinux.............: ${BUILD_SELINUX}"
324 echo "    Shape...............: ${BUILD_SHAPE}"
325 echo "    Shm.................: ${BUILD_SHM}"
326 echo "    Sync................: ${BUILD_SYNC}"
327 echo "    Xevie...............: ${BUILD_XEVIE}"
328 echo "    Xfixes..............: ${BUILD_XFIXES}"
329 echo "    Xfree86-dri.........: ${BUILD_XFREE86_DRI}"
330 echo "    xinerama............: ${BUILD_XINERAMA}"
331 echo "    xinput..............: ${BUILD_XINPUT}"
332 echo "    xkb.................: ${BUILD_XKB}"
333 echo "    xprint..............: ${BUILD_XPRINT}"
334 echo "    xtest...............: ${BUILD_XTEST}"
335 echo "    xv..................: ${BUILD_XV}"
336 echo "    xvmc................: ${BUILD_XVMC}"
337 echo ""
338 echo "  Used CFLAGS:"
339 echo "    CPPFLAGS............: ${CPPFLAGS}"
340 echo "    CFLAGS..............: ${CFLAGS}"
341 echo "    Warning CFLAGS......: ${CWARNFLAGS}"
342 echo ""
343 echo "  Installation:"
344 echo "    Prefix..............: ${prefix}"
345 echo ""