xorg-libxcb/configure.ac

204 lines
4.8 KiB
Text
Raw Normal View History

2006-02-18 16:49:41 -08:00
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.57)
AC_INIT([libxcb],
2008-07-17 13:57:41 +09:30
1.1.90.1,
2006-02-18 16:49:41 -08:00
[xcb@lists.freedesktop.org])
AC_CONFIG_SRCDIR([xcb.pc.in])
AM_INIT_AUTOMAKE([foreign dist-bzip2])
AM_PATH_PYTHON([2.5])
PKG_CHECK_MODULES(CHECK, [check >= 0.9.4], [HAVE_CHECK=yes], [HAVE_CHECK=no])
AM_CONDITIONAL(HAVE_CHECK, test x$HAVE_CHECK = xyes)
2006-02-18 16:49:41 -08:00
AC_CONFIG_HEADERS([src/config.h])
AC_PROG_LIBTOOL
AC_PROG_CC
AC_PATH_PROG(XSLTPROC, xsltproc, no)
if test "$XSLTPROC" = "no"; then
AC_MSG_ERROR([XCB requires xsltproc.])
fi
HTML_CHECK_RESULT=false
if test x"$HAVE_CHECK" = xyes; then
2006-02-18 16:49:41 -08:00
if test x"$XSLTPROC" != xno; then
HTML_CHECK_RESULT=true
fi
fi
AC_SUBST(HTML_CHECK_RESULT)
# Checks for pkg-config packages
2007-11-04 17:29:13 -08:00
PKG_CHECK_MODULES(XCBPROTO, xcb-proto >= 1.1)
NEEDED="pthread-stubs xau >= 0.99.2"
PKG_CHECK_MODULES(NEEDED, $NEEDED)
2006-02-18 16:49:41 -08:00
have_xdmcp="no"
PKG_CHECK_MODULES(XDMCP, xdmcp,
AC_CHECK_LIB(Xdmcp, XdmcpWrap,
[
AC_DEFINE(HASXDMAUTH,1,[Has Wraphelp.c needed for XDM AUTH protocols])
NEEDED="$NEEDED xdmcp"
have_xdmcp="yes"
],
[
XDMCP_CFLAGS=
XDMCP_LIBS=
], [$XDMCP_LIBS]),
[AC_MSG_RESULT(no)])
Print backtraces in case an assert fails inside xlib/xcb. As you know there are some nasty libs / apps doing locking incorrectly. In order to improve the information given to the user when he encounters such a situation (people don't run apps in gdb normally) I created the patch attached. It's very non-intrusive (and affects only xlib/xcb, Josh told me on irc that it could be useful for other areas too, personally I don't think that it's really needed at other places ...). Some same outputs and the discussion of them: lxuser@pdln:/tmp$ ./main Got a backtrace: #0 /tmp/usr/lib/libxcb-xlib.so.0 [0xb7f9d728] #1 /tmp/usr/lib/libxcb-xlib.so.0(xcb_xlib_unlock+0x31) [0xb7f9d861] #2 ./test.so(function_a+0x11) [0xb7f9f3fd] #3 ./test.so(function_b+0x11) [0xb7f9f410] #4 ./main [0x80484a7] #5 /lib/libc.so.6(__libc_start_main+0xdc) [0xb7e60ebc] #6 ./main [0x80483f1] main: xcb_xlib.c:82: xcb_xlib_unlock: Assertion `c->xlib.lock' failed. Aborted That's kinda the normal situation. lxuser@pdln:/tmp$ ./main Got a backtrace: #0 /tmp/usr/lib/libxcb-xlib.so.0 [0xb7f90728] #1 /tmp/usr/lib/libxcb-xlib.so.0(xcb_xlib_unlock+0x31) [0xb7f90861] #2 /tmp/test.so [0xb7f923cd] #3 /tmp/test.so(function_b+0x11) [0xb7f923e0] #4 ./main [0x80484ab] #5 /lib/libc.so.6(__libc_start_main+0xdc) [0xb7e53ebc] #6 ./main [0x80483f1] main: xcb_xlib.c:82: xcb_xlib_unlock: Assertion `c->xlib.lock' failed. Aborted There are two possible reasons that the name doesn't appear in #2: a) a hidden symbol or a symbol with statical linkage in a library b) a symbol in an app not compiled with -rdynamic. But in both cases you still know _where_ the caller is. Note that in this example test.so was compiled with -fomit-frame-pointer; this isn't an issue as _one_ (= the caller) stack trace is still valid (as long as you don't have the insane idea to compile xcb with -fo-f-p). Another issue that may appear is "tail call elimination" (some entries are mysteriously missing; this is quite ugly, but you still get enough information so that you can do something useful with the issue e.g. by disassembling the relevant parts with gdb). Signed-off-by: Jamey Sharp <jamey@minilop.net>
2007-06-06 17:17:49 +02:00
AC_CHECK_HEADER([execinfo.h], [AC_DEFINE(HAVE_BACKTRACE,1,[Has backtrace*() needed for retrieving stack traces])])
AC_SUBST(NEEDED)
2006-02-18 16:49:41 -08:00
# Find the xcb-proto protocol descriptions
AC_MSG_CHECKING(XCBPROTO_XCBINCLUDEDIR)
XCBPROTO_XCBINCLUDEDIR=`$PKG_CONFIG --variable=xcbincludedir xcb-proto`
AC_MSG_RESULT($XCBPROTO_XCBINCLUDEDIR)
AC_SUBST(XCBPROTO_XCBINCLUDEDIR)
# Find the xcbgen Python package
AC_MSG_CHECKING(XCBPROTO_XCBPYTHONDIR)
XCBPROTO_XCBPYTHONDIR=`$PKG_CONFIG --variable=pythondir xcb-proto`
AC_MSG_RESULT($XCBPROTO_XCBPYTHONDIR)
AC_SUBST(XCBPROTO_XCBPYTHONDIR)
2006-02-18 16:49:41 -08:00
AC_HEADER_STDC
AC_SEARCH_LIBS(getaddrinfo, socket)
2006-02-18 16:49:41 -08:00
AC_SEARCH_LIBS(connect, socket)
case $host_os in
linux*)
AC_DEFINE([HAVE_ABSTRACT_SOCKETS], 1, [Define if your platform supports abstract sockets])
;;
esac
dnl define buffer queue size
xcb_queue_buffer_size=16384
AC_DEFINE(XCB_QUEUE_BUFFER_SIZE, $xcb_queue_buffer_size, [XCB buffer queue size])
AC_ARG_WITH(queue-size,
AC_HELP_STRING([--with-queue-size=SIZE],
[Set the XCB buffer queue size (default is 16384)]),
[AC_DEFINE_UNQUOTED(XCB_QUEUE_BUFFER_SIZE, $withval, [XCB buffer queue size]),
xcb_queue_buffer_size=$withval],
)
dnl check for the sockaddr_un.sun_len member
AC_CHECK_MEMBER([struct sockaddr_un.sun_len],
[AC_DEFINE(HAVE_SOCKADDR_SUN_LEN,1,[Have the sockaddr_un.sun_len member.])],
[],
[ #include <sys/types.h>
#include <sys/un.h>
])
xcbincludedir='${includedir}/xcb'
2006-02-18 16:49:41 -08:00
AC_SUBST(xcbincludedir)
if test "x$GCC" = xyes ; then
CWARNFLAGS="-Wall -pedantic -Wpointer-arith \
-Wstrict-prototypes -Wmissing-declarations -Wnested-externs"
else
AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"])
if test "x$SUNCC" = "xyes"; then
CWARNFLAGS="-v"
fi
fi
AC_SUBST(CWARNFLAGS)
XCB_CHECK_VISIBILITY()
# htmldir is not defined prior to autoconf 2.59c, so on earlier versions
# set an equivalent value.
AC_PREREQ([2.59c], [], [AC_SUBST([htmldir], [m4_ifset([AC_PACKAGE_TARNAME],
['${datadir}/doc/${PACKAGE_TARNAME}'],
['${datadir}/doc/${PACKAGE}'])
])])
XCB_CHECK_DOXYGEN()
XCB_EXTENSION(Composite, "yes")
XCB_EXTENSION(Damage, "yes")
XCB_EXTENSION(DPMS, "yes")
XCB_EXTENSION(GLX, "yes")
XCB_EXTENSION(RandR, "yes")
XCB_EXTENSION(Record, "yes")
XCB_EXTENSION(Render, "yes")
XCB_EXTENSION(Resource, "yes")
XCB_EXTENSION(Screensaver, "yes")
XCB_EXTENSION(Shape, "yes")
XCB_EXTENSION(Shm, "yes")
XCB_EXTENSION(Sync, "yes")
XCB_EXTENSION(Xevie, "yes")
XCB_EXTENSION(XFixes, "yes")
XCB_EXTENSION(XFree86-DRI, "yes")
XCB_EXTENSION(Xinerama, "yes")
XCB_EXTENSION(XInput, "no")
XCB_EXTENSION(Xprint, "yes")
XCB_EXTENSION(SELinux, "no")
XCB_EXTENSION(XTest, "yes")
XCB_EXTENSION(Xv, "yes")
XCB_EXTENSION(XvMC, "yes")
AC_CONFIG_FILES([
Makefile
doc/Makefile
src/Makefile
tests/Makefile
])
AC_CONFIG_FILES([
xcb.pc
xcb-xlib.pc
xcb-composite.pc
xcb-damage.pc
xcb-dpms.pc
xcb-glx.pc
xcb-randr.pc
xcb-record.pc
xcb-render.pc
xcb-res.pc
xcb-screensaver.pc
xcb-shape.pc
xcb-shm.pc
xcb-sync.pc
xcb-xevie.pc
xcb-xf86dri.pc
xcb-xfixes.pc
xcb-xinerama.pc
xcb-xinput.pc
xcb-xprint.pc
xcb-xselinux.pc
xcb-xtest.pc
xcb-xv.pc
xcb-xvmc.pc
])
AC_CONFIG_FILES([
doc/xcb.doxygen
])
2006-02-18 16:49:41 -08:00
AC_OUTPUT
dnl Configuration output
echo ""
echo " Package: ${PACKAGE_NAME} ${PACKAGE_VERSION}"
echo ""
echo " Configuration"
echo " XDM support.........: ${have_xdmcp}"
echo " Build unit tests....: ${HAVE_CHECK}"
echo " XCB buffer size.....: ${xcb_queue_buffer_size}"
echo ""
echo " Used CFLAGS:"
echo " CPPFLAGS............: ${CPPFLAGS}"
echo " CFLAGS..............: ${CFLAGS}"
echo " Warning CFLAGS......: ${CWARNFLAGS}"
echo ""
echo " Installation:"
echo " Prefix..............: ${prefix}"
echo ""