diff options
author | Anas Nashif <anas.nashif@intel.com> | 2012-10-30 16:34:12 -0700 |
---|---|---|
committer | Anas Nashif <anas.nashif@intel.com> | 2012-10-30 16:34:12 -0700 |
commit | 7680502dee971654fd425d2c35e843232d91530a (patch) | |
tree | 6f677465ea9b10446acef3277e8b3f3ff604d58e /configure.ac | |
download | dbus-glib-7680502dee971654fd425d2c35e843232d91530a.tar.gz dbus-glib-7680502dee971654fd425d2c35e843232d91530a.tar.bz2 dbus-glib-7680502dee971654fd425d2c35e843232d91530a.zip |
Imported Upstream version 0.100upstream/0.100
Diffstat (limited to 'configure.ac')
-rw-r--r-- | configure.ac | 508 |
1 files changed, 508 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..8ea59e3 --- /dev/null +++ b/configure.ac @@ -0,0 +1,508 @@ +dnl -*- mode: m4 -*- +AC_PREREQ(2.52) + +AC_INIT([dbus-glib], [0.100], + [https://bugs.freedesktop.org/enter_bug.cgi?product=dbus&component=GLib]) + +AC_CANONICAL_HOST + +AM_INIT_AUTOMAKE([1.9]) + +AM_CONFIG_HEADER(config.h) + +# Honor aclocal flags +ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS" +AC_CONFIG_MACRO_DIR(m4) + + ## must come before we use the $USE_MAINTAINER_MODE variable later +AM_MAINTAINER_MODE + +m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) + +# libtool versioning - this applies to libdbus +# +# See http://sources.redhat.com/autobook/autobook/autobook_91.html#SEC91 for details +# + +## increment if the interface has additions, changes, removals. +LT_CURRENT=4 + +## increment any time the source changes; set to +## 0 if you increment CURRENT +LT_REVISION=2 + +## increment if any interfaces have been added; set to 0 +## if any interfaces have been changed or removed. removal has +## precedence over adding, so set to 0 if both happened. +LT_AGE=2 + +AC_SUBST(LT_CURRENT) +AC_SUBST(LT_REVISION) +AC_SUBST(LT_AGE) + + +AC_PROG_CC +AC_ISC_POSIX +AC_HEADER_STDC + +AC_ARG_ENABLE(tests, AS_HELP_STRING([--enable-tests],[enable unit test code]),enable_tests=$enableval,enable_tests=$USE_MAINTAINER_MODE) +AC_ARG_ENABLE(ansi, AS_HELP_STRING([--enable-ansi],[enable -ansi -pedantic gcc flags]),enable_ansi=$enableval,enable_ansi=no) +AC_ARG_ENABLE(verbose-mode, AS_HELP_STRING([--enable-verbose-mode],[support verbose debug mode]),enable_verbose_mode=$enableval,enable_verbose_mode=$USE_MAINTAINER_MODE) +AC_ARG_ENABLE(asserts, AS_HELP_STRING([--enable-asserts],[include assertion checks]),enable_asserts=$enableval,enable_asserts=$USE_MAINTAINER_MODE) +AC_ARG_ENABLE(checks, AS_HELP_STRING([--enable-checks],[include sanity checks on public API]),enable_checks=$enableval,enable_checks=yes) +AC_ARG_ENABLE(gcov, AS_HELP_STRING([--enable-gcov],[compile with coverage profiling instrumentation (gcc only)]),enable_gcov=$enableval,enable_gcov=no) +AC_ARG_ENABLE(bash-completion, AS_HELP_STRING([--enable-bash-completion],[install bash completion scripts]),enable_bash_completion=$enableval,enable_bash_completion=yes) +AC_ARG_WITH(test-socket-dir, AS_HELP_STRING([--with-test-socket-dir=[dirname]],[Where to put sockets for make check])) + + +AC_ARG_WITH(introspect-xml, AS_HELP_STRING([--with-introspect-xml=[filename]],[Pass in a pregenerated dbus daemon introspection xml file (as generated by 'dbus-daemon --introspect') to use instead of querying the installed dbus daemon])) + + +AM_CONDITIONAL(DBUS_BASH_COMPLETION, test x$enable_bash_completion = xyes) +if test x$enable_bash_completion = xyes; then + AC_DEFINE(DBUS_BASH_COMPLETION,1,[Enable bash completion]) +fi + +if test x$enable_verbose_mode = xyes; then + AC_DEFINE(DBUS_ENABLE_VERBOSE_MODE,1,[Support a verbose mode]) +fi + +AC_ARG_WITH(dbus-binding-tool, + AS_HELP_STRING([--with-dbus-binding-tool=[filename]],[Use external dbus-binding-tool program]), + [DBUS_BINDING_TOOL=$withval],[DBUS_BINDING_TOOL=\$\(top_builddir\)/dbus/dbus-binding-tool]) +AC_SUBST(DBUS_BINDING_TOOL) + + +dnl DBUS_BUILD_TESTS controls unit tests built in to .c files +dnl and also some stuff in the test/ subdir +AM_CONDITIONAL(DBUS_BUILD_TESTS, test x$enable_tests = xyes) +if test x$enable_tests = xyes; then + AC_DEFINE(DBUS_BUILD_TESTS,1,[Build test code]) +fi + +if test x$enable_verbose_mode = xyes; then + AC_DEFINE(DBUS_ENABLE_VERBOSE_MODE,1,[Support a verbose mode]) +fi +if test x$enable_asserts = xno; then + AC_DEFINE(DBUS_DISABLE_ASSERT,1,[Disable assertion checking]) + AC_DEFINE(G_DISABLE_ASSERT,1,[Disable GLib assertion macros]) +fi +if test x$enable_checks = xno; then + AC_DEFINE(DBUS_DISABLE_CHECKS,1,[Disable public API sanity checking]) + AC_DEFINE(G_DISABLE_CHECKS,1,[Disable GLib public API sanity checking]) +fi + +#### gcc warning flags + +AC_DEFUN([AC_CC_TRY_FLAG], [ + AC_MSG_CHECKING([whether gcc understands $1]) + + ac_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $1" + + AC_COMPILE_IFELSE([ ], [ac_cc_flag=yes], [ac_cc_flag=no]) + CFLAGS="$ac_save_CFLAGS" + + if test "x$ac_cc_flag" = "xyes"; then + ifelse([$2], , :, [$2]) + else + ifelse([$3], , :, [$3]) + fi + AC_MSG_RESULT([$ac_cc_flag]) +]) + +if test "x$GCC" = "xyes"; then + AC_CC_TRY_FLAG([-Wfloat-equal], + [ac_flag_float_equal=yes], + [ac_flag_float_equal=no]) + + changequote(,)dnl + case " $CFLAGS " in + *[\ \ ]-Wall[\ \ ]*) ;; + *) CFLAGS="$CFLAGS -Wall" ;; + esac + + case " $CFLAGS " in + *[\ \ ]-Wchar-subscripts[\ \ ]*) ;; + *) CFLAGS="$CFLAGS -Wchar-subscripts" ;; + esac + + case " $CFLAGS " in + *[\ \ ]-Wmissing-declarations[\ \ ]*) ;; + *) CFLAGS="$CFLAGS -Wmissing-declarations" ;; + esac + + case " $CFLAGS " in + *[\ \ ]-Wmissing-prototypes[\ \ ]*) ;; + *) CFLAGS="$CFLAGS -Wmissing-prototypes" ;; + esac + + case " $CFLAGS " in + *[\ \ ]-Wnested-externs[\ \ ]*) ;; + *) CFLAGS="$CFLAGS -Wnested-externs" ;; + esac + + case " $CFLAGS " in + *[\ \ ]-Wpointer-arith[\ \ ]*) ;; + *) CFLAGS="$CFLAGS -Wpointer-arith" ;; + esac + + case " $CFLAGS " in + *[\ \ ]-Wcast-align[\ \ ]*) ;; + *) CFLAGS="$CFLAGS -Wcast-align" ;; + esac + + if test "x$ac_flag_float_equal" = "xyes"; then + case " $CFLAGS " in + *[\ \ ]-Wfloat-equal[\ \ ]*) ;; + *) CFLAGS="$CFLAGS -Wfloat-equal" ;; + esac + fi + + case " $CFLAGS " in + *[\ \ ]-Wsign-compare[\ \ ]*) ;; + *) CFLAGS="$CFLAGS -Wsign-compare" ;; + esac + + # This one is special - it's not a warning override. + # http://bugs.freedesktop.org/show_bug.cgi?id=10599 + # is the bug for DBus core. + case " $CFLAGS " in + *[\ \ ]-fno-strict-aliasing[\ \ ]*) ;; + *) CFLAGS="$CFLAGS -fno-strict-aliasing" ;; + esac + + if test "x$enable_ansi" = "xyes"; then + case " $CFLAGS " in + *[\ \ ]-ansi[\ \ ]*) ;; + *) CFLAGS="$CFLAGS -ansi" ;; + esac + + case " $CFLAGS " in + *[\ \ ]-D_POSIX_C_SOURCE*) ;; + *) CFLAGS="$CFLAGS -D_POSIX_C_SOURCE=199309L" ;; + esac + + case " $CFLAGS " in + *[\ \ ]-D_BSD_SOURCE[\ \ ]*) ;; + *) CFLAGS="$CFLAGS -D_BSD_SOURCE" ;; + esac + + case " $CFLAGS " in + *[\ \ ]-pedantic[\ \ ]*) ;; + *) CFLAGS="$CFLAGS -pedantic" ;; + esac + fi + if test x$enable_gcov = xyes; then + case " $CFLAGS " in + *[\ \ ]-fprofile-arcs[\ \ ]*) ;; + *) CFLAGS="$CFLAGS -fprofile-arcs" ;; + esac + case " $CFLAGS " in + *[\ \ ]-ftest-coverage[\ \ ]*) ;; + *) CFLAGS="$CFLAGS -ftest-coverage" ;; + esac + + ## remove optimization + CFLAGS=`echo "$CFLAGS" | sed -e 's/-O[0-9]*//g'` + fi + changequote([,])dnl +else + if test x$enable_gcov = xyes; then + AC_MSG_ERROR([--enable-gcov can only be used with gcc]) + fi +fi + +AM_PROG_LIBTOOL + +changequote(,)dnl +# compress spaces in flags +CFLAGS=`echo "$CFLAGS" | sed -e 's/ +/ /g'` +CPPFLAGS=`echo "$CPPFLAGS" | sed -e 's/ +/ /g'` +changequote([,])dnl + +if test x$enable_gcov = xyes; then + # so that config.h changes when you toggle gcov support + AC_DEFINE_UNQUOTED([DBUS_GCOV_ENABLED], + [__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__], + [Defined to the gcc version if gcov is enabled, to force a rebuild due to config.h changing]) +fi + +#### Various functions +AC_SEARCH_LIBS([socket], [socket]) + +dnl check for socklen_t +AC_MSG_CHECKING(whether socklen_t is defined) +AC_TRY_COMPILE([ +#include <sys/types.h> +#include <sys/socket.h> +#include <netdb.h> +],[ +socklen_t foo; +foo = 1; +],dbus_have_socklen_t=yes,dbus_have_socklen_t=no) +AC_MSG_RESULT($dbus_have_socklen_t) + +if test "x$dbus_have_socklen_t" = "xyes"; then + AC_DEFINE(HAVE_SOCKLEN_T,1,[Have socklen_t type]) +fi + +#### Abstract sockets + +AC_LANG_PUSH(C) +AC_CACHE_CHECK([abstract socket namespace], + ac_cv_have_abstract_sockets, + [AC_RUN_IFELSE([AC_LANG_PROGRAM( +[[ +#include <sys/types.h> +#include <stdlib.h> +#include <string.h> +#include <stdio.h> +#include <sys/socket.h> +#include <sys/un.h> +#include <errno.h> +]], +[[ + int listen_fd; + struct sockaddr_un addr; + + listen_fd = socket (PF_UNIX, SOCK_STREAM, 0); + + if (listen_fd < 0) + { + fprintf (stderr, "socket() failed: %s\n", strerror (errno)); + exit (1); + } + + memset (&addr, '\0', sizeof (addr)); + addr.sun_family = AF_UNIX; + strcpy (addr.sun_path, "X/tmp/dbus-fake-socket-path-used-in-configure-test"); + addr.sun_path[0] = '\0'; /* this is what makes it abstract */ + + if (bind (listen_fd, (struct sockaddr*) &addr, SUN_LEN (&addr)) < 0) + { + fprintf (stderr, "Abstract socket namespace bind() failed: %s\n", + strerror (errno)); + exit (1); + } + else + exit (0); +]])], + [ac_cv_have_abstract_sockets=yes], + [ac_cv_have_abstract_sockets=no] +)]) +AC_LANG_POP(C) + +if test x$enable_abstract_sockets = xyes; then + if test x$ac_cv_have_abstract_sockets = xno; then + AC_MSG_ERROR([Abstract sockets explicitly required, and support not detected.]) + fi +fi + +if test x$enable_abstract_sockets = xno; then + ac_cv_have_abstract_sockets=no; +fi + +if test x$ac_cv_have_abstract_sockets = xyes ; then + DBUS_PATH_OR_ABSTRACT=abstract + AC_DEFINE(HAVE_ABSTRACT_SOCKETS,1,[Have abstract socket namespace]) +else + DBUS_PATH_OR_ABSTRACT=path +fi + +# this is used in addresses to prefer abstract, e.g. +# unix:path=/foo or unix:abstract=/foo +AC_SUBST(DBUS_PATH_OR_ABSTRACT) + +#### Sort out XML library + +# see what we have +AC_CHECK_LIB(expat, XML_ParserCreate_MM, + [ AC_CHECK_HEADERS(expat.h, have_expat=true, have_expat=false) ], + have_expat=false) + +if ! $have_expat ; then + AC_MSG_ERROR([expat library not found, check config.log for failed attempts]) +fi + +XML_LIBS=-lexpat +XML_CFLAGS= + + +#### Set up final flags + +PKG_CHECK_MODULES([DBUS], [dbus-1 >= 1.2.16]) +AC_SUBST([DBUS_CFLAGS]) +AC_SUBST([DBUS_LIBS]) + +# Glib detection +PKG_CHECK_MODULES([DBUS_GLIB], [gobject-2.0 >= 2.26, gio-2.0 >= 2.26]) +PKG_CHECK_MODULES(DBUS_GLIB_THREADS, gthread-2.0 >= 2.6, have_glib_threads=yes, have_glib_threads=no) + +AM_CONDITIONAL(HAVE_GLIB_THREADS, test x$have_glib_threads = xyes) + +GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0` +AC_SUBST(GLIB_GENMARSHAL) + +dnl GLib flags +AC_SUBST(DBUS_GLIB_CFLAGS) +AC_SUBST(DBUS_GLIB_LIBS) +AC_SUBST(DBUS_GLIB_THREADS_LIBS) + +DBUS_GLIB_TOOL_CFLAGS=$XML_CFLAGS +DBUS_GLIB_TOOL_LIBS="$XML_LIBS" +AC_SUBST(DBUS_GLIB_TOOL_CFLAGS) +AC_SUBST(DBUS_GLIB_TOOL_LIBS) + +### gtk-doc Documentation +GTK_DOC_CHECK(1.4) + +#### Have to go $localstatedir->$prefix/var->/usr/local/var +#### someone please fix this a better way... + +#### find the actual value for $prefix that we'll end up with +## (I know this is broken and should be done in the Makefile, but +## that's a major pain and almost nobody actually seems to care) +REAL_PREFIX= +if test "x$prefix" = "xNONE"; then + REAL_PREFIX=$ac_default_prefix +else + REAL_PREFIX=$prefix +fi + +## temporarily change prefix and exec_prefix +old_prefix=$prefix +prefix=$REAL_PREFIX + +if test "x$exec_prefix" = xNONE ; then + REAL_EXEC_PREFIX=$REAL_PREFIX +else + REAL_EXEC_PREFIX=$exec_prefix +fi +old_exec_prefix=$exec_prefix +exec_prefix=$REAL_EXEC_PREFIX + +## eval everything +LOCALSTATEDIR_TMP="$localstatedir" +EXPANDED_LOCALSTATEDIR=`eval echo $LOCALSTATEDIR_TMP` +AC_SUBST(EXPANDED_LOCALSTATEDIR) + +SYSCONFDIR_TMP="$sysconfdir" +EXPANDED_SYSCONFDIR=`eval echo $SYSCONFDIR_TMP` +AC_SUBST(EXPANDED_SYSCONFDIR) + +BINDIR_TMP="$bindir" +EXPANDED_BINDIR=`eval echo $BINDIR_TMP` +AC_SUBST(EXPANDED_BINDIR) + +LIBDIR_TMP="$libdir" +EXPANDED_LIBDIR=`eval echo $LIBDIR_TMP` +AC_SUBST(EXPANDED_LIBDIR) + +DATADIR_TMP="$datadir" +EXPANDED_DATADIR=`eval echo $DATADIR_TMP` +AC_SUBST(EXPANDED_DATADIR) + +## put prefix and exec_prefix back +prefix=$old_prefix +exec_prefix=$old_exec_prefix + +#### Tell tests where to find certain stuff in builddir +ABSOLUTE_TOP_BUILDDIR=`cd ${ac_top_builddir}. && pwd` + +AC_DEFUN([TEST_PATH], [ +TEST_$1=${ABSOLUTE_TOP_BUILDDIR}/test/$2 +AC_DEFINE_UNQUOTED(TEST_$1, "$TEST_$1", + [Full path to test file test/$2 in builddir]) +AC_SUBST(TEST_$1) +]) + +TEST_PATH(SERVICE_DIR, data/valid-service-files) +TEST_PATH(SERVICE_BINARY, test-service) +TEST_PATH(SHELL_SERVICE_BINARY, test-shell-service) +TEST_PATH(CORE_SERVICE_BINARY, core/test-service-glib) +TEST_PATH(INTERFACES_SERVICE_BINARY, interfaces/test-service) +TEST_PATH(EXIT_BINARY, test-exit) +TEST_PATH(SEGFAULT_BINARY, test-segfault) +TEST_PATH(SLEEP_FOREVER_BINARY, test-sleep-forever) +AC_SUBST(ABSOLUTE_TOP_BUILDDIR) + +if ! test -z "$with_test_socket_dir" ; then + TEST_SOCKET_DIR="$with_test_socket_dir" +else + TEST_SOCKET_DIR=$DEFAULT_SOCKET_DIR +fi +AC_SUBST(TEST_SOCKET_DIR) +AC_DEFINE_UNQUOTED(DBUS_TEST_SOCKET_DIR, "$TEST_SOCKET_DIR", [Where to put test sockets]) + +AC_OUTPUT([ +Makefile +m4/Makefile +doc/Makefile +doc/reference/Makefile +doc/reference/version.xml +dbus/Makefile +dbus/examples/Makefile +dbus/examples/statemachine/Makefile +test/Makefile +test/core/Makefile +test/interfaces/Makefile +test/data/valid-service-files/debug-glib.service +test/data/valid-service-files/debug-echo.service +test/data/valid-service-files/interfaces-test.service +test/lib/Makefile +test/manual/Makefile +tools/Makefile +dbus-glib-1.pc +dbus-glib-1-uninstalled.pc +]) + +dnl ========================================================================== +echo " + D-BUS GLIB BINDINGS $VERSION + ============== + + prefix: ${prefix} + exec_prefix: ${exec_prefix} + libdir: ${EXPANDED_LIBDIR} + bindir: ${EXPANDED_BINDIR} + sysconfdir: ${EXPANDED_SYSCONFDIR} + localstatedir: ${EXPANDED_LOCALSTATEDIR} + datadir: ${EXPANDED_DATADIR} + source code location: ${srcdir} + compiler: ${CC} + cflags: ${CFLAGS} + cppflags: ${CPPFLAGS} +" + +echo " + Maintainer mode: ${USE_MAINTAINER_MODE} + gcc coverage profiling: ${enable_gcov} + Building unit tests: ${enable_tests} + Building verbose mode: ${enable_verbose_mode} + Building assertions: ${enable_asserts} + Building checks: ${enable_checks} + Building Gtk-doc docs: ${enable_gtk_doc} + Bash Completion: ${enable_bash_completion} + Using XML parser: ${with_xml} + 'make check' socket dir: ${TEST_SOCKET_DIR} +" + +if test x$enable_tests = xyes; then + echo "NOTE: building with unit tests increases the size of the installed library and renders it insecure." +fi +if test x$enable_tests = xyes -a x$enable_asserts = xno; then + echo "NOTE: building with unit tests but without assertions means tests may not properly report failures (this configuration is only useful when doing something like profiling the tests)" +fi +if test x$enable_gcov = xyes; then + echo "NOTE: building with coverage profiling is definitely for developers only." +fi +if test x$enable_verbose_mode = xyes; then + echo "NOTE: building with verbose mode increases library size, may slightly increase security risk, and decreases performance." +fi +if test x$enable_asserts = xyes; then + echo "NOTE: building with assertions increases library size and decreases performance." +fi +if test x$enable_checks = xno; then + echo "NOTE: building without checks for arguments passed to public API makes it harder to debug apps using D-BUS, but will slightly decrease D-BUS library size and _very_ slightly improve performance." +fi |