xorg-libxcb/configure.ac

112 lines
3.1 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],
2006-11-23 07:30:51 -08:00
1.0,
2006-02-18 16:49:41 -08:00
[xcb@lists.freedesktop.org])
AC_CONFIG_SRCDIR([xcb.pc.in])
AM_INIT_AUTOMAKE([foreign dist-bzip2])
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
2006-11-23 07:30:51 -08:00
PKG_CHECK_MODULES(XCBPROTO, xcb-proto >= 1.0)
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)
AC_HEADER_STDC
AC_SEARCH_LIBS(getaddrinfo, socket)
2006-02-18 16:49:41 -08:00
AC_SEARCH_LIBS(connect, socket)
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)
GCC_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}'])
])])
2006-11-05 18:20:45 +01:00
AM_CHECK_DOXYGEN()
AC_CONFIG_FILES([Makefile src/Makefile tests/Makefile doc/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-xprint.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 ""
echo " Used CFLAGS:"
echo " CPPFLAGS............: ${CPPFLAGS}"
echo " CFLAGS..............: ${CFLAGS}"
echo " Warning CFLAGS......: ${CWARNFLAGS}"
echo ""
echo " Installation:"
echo " Prefix..............: ${prefix}"
echo ""