X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=configure.in;h=e6b0fefa505200f296f54cf376dde0826b975e31;hb=66a09fa7c3c8e4232b4225c49d01d9efb97458c9;hp=d79d6559988b9db9deb06c02e5909b328a47d46d;hpb=3c99e692c92d7eb91b06aedbd8add8fabff57a44;p=platform%2Fupstream%2Fdbus.git diff --git a/configure.in b/configure.in index d79d655..e6b0fef 100644 --- a/configure.in +++ b/configure.in @@ -2,15 +2,19 @@ dnl -*- mode: m4 -*- AC_PREREQ(2.52) m4_define([dbus_major_version], [1]) -m4_define([dbus_minor_version], [3]) -m4_define([dbus_micro_version], [0]) +m4_define([dbus_minor_version], [4]) +m4_define([dbus_micro_version], [3]) m4_define([dbus_version], [dbus_major_version.dbus_minor_version.dbus_micro_version]) AC_INIT(dbus, [dbus_version]) AC_CANONICAL_HOST +AC_LIBTOOL_WIN32_DLL +AC_LIBTOOL_RC -AM_INIT_AUTOMAKE([1.9 tar-ustar]) +AC_CONFIG_MACRO_DIR([m4]) + +AM_INIT_AUTOMAKE([1.9 tar-ustar -Wno-portability]) AM_CONFIG_HEADER(config.h) # Honor aclocal flags @@ -23,6 +27,10 @@ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[The name of the gettext d ## must come before we use the $USE_MAINTAINER_MODE variable later AM_MAINTAINER_MODE +m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) + +AC_DEFINE_UNQUOTED(DBUS_DAEMON_NAME,"dbus-daemon",[Name of executable]) + # libtool versioning - this applies to libdbus # # See http://sources.redhat.com/autobook/autobook/autobook_91.html#SEC91 for details @@ -33,7 +41,7 @@ LT_CURRENT=8 ## increment any time the source changes; set to ## 0 if you increment CURRENT -LT_REVISION=0 +LT_REVISION=3 ## increment if any interfaces have been added; set to 0 ## if any interfaces have been changed or removed. removal has @@ -62,6 +70,56 @@ AC_ISC_POSIX AC_HEADER_STDC AC_C_INLINE AM_PROG_LIBTOOL +AC_PROG_MKDIR_P + +# Set some internal variables depending on the platform for later use. +dbus_win=no +dbus_cygwin=no +dbus_unix=no +case "${host}" in + *-mingw32ce*) + dbus_win=yes + dbus_wince=yes + ;; + *-mingw32*) + dbus_win=yes + ;; + *-cygwin*) + dbus_cygwin=yes + dbus_unix=yes + ;; + *) + dbus_unix=yes + ;; +esac + +# Special defines for certain platforms +if test "$dbus_win" = yes; then + AC_DEFINE(DBUS_WIN,1,[Defined if we run on a W32 API based system]) + BUILD_TIMESTAMP=`date --iso-8601=minutes` + AC_SUBST(BUILD_TIMESTAMP) + # Assume DBUS_VERSION is always three numbers + BUILD_FILEVERSION=`echo "$DBUS_VERSION" | sed -e 's/\./,/g'`,0 + AC_SUBST(BUILD_FILEVERSION) + AC_CHECK_TOOL(WINDRES, windres, no) + if test "$WINDRES" = no; then + AC_MSG_ERROR([*** Could not find an implementation of windres in your PATH.]) + fi + if test "$dbus_wince" = yes; then + AC_DEFINE(DBUS_WINCE,1,[Defined if we run on a W32 CE API based system]) + AC_DEFINE(_WIN32_WCE, 0x0502, [Defined to get newer W32 CE APIs]) + fi +else + AC_DEFINE(DBUS_UNIX,1,[Defined if we run on a Unix-based system]) +fi +if test "$dbus_cygwin" = yes; then + AC_DEFINE(DBUS_CYGWIN,1,[Defined if we run on a cygwin API based system]) +fi + +AM_CONDITIONAL(DBUS_WIN, test "$dbus_win" = yes) +AM_CONDITIONAL(DBUS_WINCE, test "$dbus_wince" = yes) +AM_CONDITIONAL(DBUS_UNIX, test "$dbus_unix" = yes) +AM_CONDITIONAL(DBUS_CYGWIN, test "$dbus_cygwin" = yes) 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) @@ -79,8 +137,9 @@ AC_ARG_ENABLE(inotify, AS_HELP_STRING([--enable-inotify],[build with inotify sup AC_ARG_ENABLE(kqueue, AS_HELP_STRING([--enable-kqueue],[build with kqueue support]),enable_kqueue=$enableval,enable_kqueue=auto) AC_ARG_ENABLE(console-owner-file, AS_HELP_STRING([--enable-console-owner-file],[enable console owner file]),enable_console_owner_file=$enableval,enable_console_owner_file=auto) AC_ARG_ENABLE(userdb-cache, AS_HELP_STRING([--enable-userdb-cache],[build with userdb-cache support]),enable_userdb_cache=$enableval,enable_userdb_cache=yes) +AC_ARG_ENABLE(launchd, AS_HELP_STRING([--enable-launchd],[build with launchd auto-launch support]),enable_launchd=$enableval,enable_launchd=auto) -AC_ARG_WITH(xml, AS_HELP_STRING([--with-xml=[libxml/expat]],[XML library to use])) +AC_ARG_WITH(xml, AS_HELP_STRING([--with-xml=[libxml/expat]],[XML library to use (libxml may be named libxml2 on some systems)])) AC_ARG_WITH(init-scripts, AS_HELP_STRING([--with-init-scripts=[redhat]],[Style of init scripts to install])) AC_ARG_WITH(session-socket-dir, AS_HELP_STRING([--with-session-socket-dir=[dirname]],[Where to put sockets for the per-login-session message bus])) AC_ARG_WITH(test-socket-dir, AS_HELP_STRING([--with-test-socket-dir=[dirname]],[Where to put sockets for make check])) @@ -88,12 +147,11 @@ AC_ARG_WITH(system-pid-file, AS_HELP_STRING([--with-system-pid-file=[pidfile]],[ AC_ARG_WITH(system-socket, AS_HELP_STRING([--with-system-socket=[filename]],[UNIX domain socket for systemwide daemon])) AC_ARG_WITH(console-auth-dir, AS_HELP_STRING([--with-console-auth-dir=[dirname]],[directory to check for console ownerhip])) AC_ARG_WITH(console-owner-file, AS_HELP_STRING([--with-console-owner-file=[filename]],[file whose owner determines current console owner])) +AC_ARG_WITH(launchd-agent-dir, AS_HELP_STRING([--with-launchd-agent-dir=[dirname]],[directory to put the launchd agent (default: /Library/LaunchAgents)])) AC_ARG_WITH(dbus_user, AS_HELP_STRING([--with-dbus-user=],[User for running the DBUS daemon (messagebus)])) AC_ARG_WITH(dbus_daemondir, AS_HELP_STRING([--with-dbus-daemondir=[dirname]],[Directory for installing the DBUS daemon])) -AC_DEFINE(DBUS_UNIX,1,[dbus on unix]) - -dnl DBUS_BUILD_TESTS controls unit tests built in to .c files +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 @@ -110,7 +168,7 @@ if test x$enable_asserts = xno; then R_DYNAMIC_LDFLAG="" else # -rdynamic is needed for glibc's backtrace_symbols to work. - # No clue how much overhead this adds, but it's useful + # No clue how much overhead this adds, but it's useful # to do this on any assertion failure, # so for now it's enabled anytime asserts are (currently not # in production builds). @@ -136,7 +194,7 @@ if test x$enable_gcov = xyes; then AC_MSG_CHECKING([for gcc 3.3 version of gcov file format]) have_gcc33_gcov=no - AC_RUN_IFELSE( [AC_LANG_PROGRAM( , [[ if (__GNUC__ >=3 && __GNUC_MINOR__ >= 3) exit (0); else exit (1); ]])], + AC_RUN_IFELSE( [AC_LANG_PROGRAM( , [[ if (__GNUC__ >=3 && __GNUC_MINOR__ >= 3) exit (0); else exit (1); ]])], have_gcc33_gcov=yes) if test x$have_gcc33_gcov = xyes ; then AC_DEFINE_UNQUOTED(DBUS_HAVE_GCC33_GCOV, 1, [Defined if we have gcc 3.3 and thus the new gcov format]) @@ -145,7 +203,32 @@ if test x$enable_gcov = xyes; then fi AM_CONDITIONAL(DBUS_GCOV_ENABLED, test x$enable_gcov = xyes) -#### Integer sizes +# glibc21.m4 serial 3 +dnl Copyright (C) 2000-2002, 2004 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +# Test for the GNU C Library, version 2.1 or newer. +# From Bruno Haible. + +AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, + ac_cv_gnu_library_2_1, + [AC_EGREP_CPP([Lucky GNU user], + [ +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif + ], + ac_cv_gnu_library_2_1=yes, + ac_cv_gnu_library_2_1=no) + ] +) + +#### Integer sizes AC_CHECK_SIZEOF(char) AC_CHECK_SIZEOF(short) @@ -163,21 +246,32 @@ $ac_cv_sizeof_int) dbusint64=int dbusint64_constant='(val)' dbusuint64_constant='(val)' + dbusint64_printf_modifier='""' ;; $ac_cv_sizeof_long) dbusint64=long dbusint64_constant='(val##L)' dbusuint64_constant='(val##UL)' + dbusint64_printf_modifier='"l"' ;; $ac_cv_sizeof_long_long) dbusint64='long long' dbusint64_constant='(val##LL)' dbusuint64_constant='(val##ULL)' + # Ideally we discover what the format is, but this is + # only used in verbose mode, so eh... + if test x"$ac_cv_gnu_library_2_1" = xyes; then + dbusint64_printf_modifier='"ll"' + fi ;; $ac_cv_sizeof___int64) dbusint64=__int64 dbusint64_constant='(val##i64)' dbusuint64_constant='(val##ui64)' + # See above case + if test x"$ac_cv_gnu_library_2_1" = xyes; then + dbusint64_printf_modifier='"ll"' + fi ;; esac @@ -192,6 +286,9 @@ else DBUS_HAVE_INT64=1 DBUS_INT64_CONSTANT="$dbusint64_constant" DBUS_UINT64_CONSTANT="$dbusuint64_constant" + if test x"$dbusint64_printf_modifier" != x; then + AC_DEFINE_UNQUOTED(DBUS_INT64_PRINTF_MODIFIER, [$dbusint64_printf_modifier], [Define to printf modifier for 64 bit integer type]) + fi AC_MSG_RESULT($DBUS_INT64_TYPE) fi @@ -205,7 +302,7 @@ AC_MSG_CHECKING([32-bit integer type]) case 4 in $ac_cv_sizeof_short) - dbusint32=int + dbusint32=short ;; $ac_cv_sizeof_int) dbusint32=int @@ -372,7 +469,7 @@ AC_DEFINE_UNQUOTED([DBUS_USE_SYNC], [$have_sync], [Use the gcc __sync extension] AC_SEARCH_LIBS(socket,[socket network]) AC_CHECK_FUNC(gethostbyname,,[AC_CHECK_LIB(nsl,gethostbyname)]) -AC_CHECK_FUNCS(vsnprintf vasprintf nanosleep usleep setenv clearenv unsetenv socketpair getgrouplist fpathconf setrlimit poll) +AC_CHECK_FUNCS(vsnprintf vasprintf nanosleep usleep setenv clearenv unsetenv socketpair getgrouplist fpathconf setrlimit poll setlocale localeconv strtoll strtoull) #### Check for broken poll; taken from Glib's configure @@ -411,13 +508,13 @@ DIR *dirp; dirp = opendir("."); dirfd(dirp); closedir(dirp); -], +], dbus_have_dirfd=yes, dbus_have_dirfd=no) AC_MSG_RESULT($dbus_have_dirfd) if test "$dbus_have_dirfd" = yes; then AC_DEFINE(HAVE_DIRFD,1,[Have dirfd function]) else - AC_MSG_CHECKING(for DIR *dirp->dd_fd) + AC_MSG_CHECKING(for DIR *dirp->dd_fd) AC_TRY_LINK([ #include #include @@ -435,21 +532,33 @@ closedir(dirp); fi fi +AC_CHECK_HEADERS(sys/resource.h) + +AC_CHECK_HEADERS(dirent.h) + AC_CHECK_HEADERS(execinfo.h, [AC_CHECK_FUNCS(backtrace)]) AC_CHECK_HEADERS(errno.h) +AC_CHECK_HEADERS(signal.h) + +AC_CHECK_HEADERS(locale.h) + AC_CHECK_HEADERS(byteswap.h) AC_CHECK_HEADERS(unistd.h) +AC_CHECK_HEADERS(ws2tcpip.h) + +AC_CHECK_HEADERS(wspiapi.h) + # Add -D_POSIX_PTHREAD_SEMANTICS if on Solaris # case $host_os in solaris*) CFLAGS="$CFLAGS -D_POSIX_PTHREAD_SEMANTICS" ;; esac - + # checking for a posix version of getpwnam_r # if we are cross compiling and can not run the test # assume getpwnam_r is the posix version @@ -468,10 +577,10 @@ AC_CACHE_CHECK([for posix getpwnam_r], struct passwd pwd, *pwptr = &pwd; int error; errno = 0; - error = getpwnam_r ("", &pwd, buffer, + error = getpwnam_r ("", &pwd, buffer, sizeof (buffer), &pwptr); - return (error < 0 && errno == ENOSYS) - || error == ENOSYS; + return (error < 0 && errno == ENOSYS) + || error == ENOSYS; ]])], [ac_cv_func_posix_getpwnam_r=yes], [ac_cv_func_posix_getpwnam_r=no], @@ -480,22 +589,22 @@ AC_CACHE_CHECK([for posix getpwnam_r], AC_LANG_POP(C) if test "$ac_cv_func_posix_getpwnam_r" = yes; then - AC_DEFINE(HAVE_POSIX_GETPWNAM_R,1, - [Have POSIX function getpwnam_r]) + AC_DEFINE(HAVE_POSIX_GETPWNAM_R,1, + [Have POSIX function getpwnam_r]) else - AC_CACHE_CHECK([for nonposix getpwnam_r], - ac_cv_func_nonposix_getpwnam_r, - [AC_TRY_LINK([#include ], - [char buffer[10000]; - struct passwd pwd; - getpwnam_r ("", &pwd, buffer, - sizeof (buffer));], - [ac_cv_func_nonposix_getpwnam_r=yes], - [ac_cv_func_nonposix_getpwnam_r=no])]) - if test "$ac_cv_func_nonposix_getpwnam_r" = yes; then - AC_DEFINE(HAVE_NONPOSIX_GETPWNAM_R,1, - [Have non-POSIX function getpwnam_r]) - fi + AC_CACHE_CHECK([for nonposix getpwnam_r], + ac_cv_func_nonposix_getpwnam_r, + [AC_TRY_LINK([#include ], + [char buffer[10000]; + struct passwd pwd; + getpwnam_r ("", &pwd, buffer, + sizeof (buffer));], + [ac_cv_func_nonposix_getpwnam_r=yes], + [ac_cv_func_nonposix_getpwnam_r=no])]) + if test "$ac_cv_func_nonposix_getpwnam_r" = yes; then + AC_DEFINE(HAVE_NONPOSIX_GETPWNAM_R,1, + [Have non-POSIX function getpwnam_r]) + fi fi dnl check for socklen_t @@ -514,7 +623,7 @@ if test "x$dbus_have_socklen_t" = "xyes"; then AC_DEFINE(HAVE_SOCKLEN_T,1,[Have socklen_t type]) fi -dnl check for writev header and writev function so we're +dnl check for writev header and writev function so we're dnl good to go if HAVE_WRITEV gets defined. AC_CHECK_HEADERS(sys/uio.h, [AC_CHECK_FUNCS(writev)]) @@ -587,11 +696,12 @@ AC_CACHE_CHECK([abstract socket namespace], #include ]], [[ + size_t slen; 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)); @@ -601,15 +711,19 @@ AC_CACHE_CHECK([abstract socket namespace], memset (&addr, '\0', sizeof (addr)); addr.sun_family = AF_UNIX; strcpy (addr.sun_path, "X/tmp/dbus-fake-socket-path-used-in-configure-test"); + /* SUN_LEN uses strlen() so need to calculate it before adding \0 at the + * beginning. + */ + slen = SUN_LEN(&addr); addr.sun_path[0] = '\0'; /* this is what makes it abstract */ - - if (bind (listen_fd, (struct sockaddr*) &addr, SUN_LEN (&addr)) < 0) + + if (bind (listen_fd, (struct sockaddr*) &addr, slen) < 0) { - fprintf (stderr, "Abstract socket namespace bind() failed: %s\n", + fprintf (stderr, "Abstract socket namespace bind() failed: %s\n", strerror (errno)); exit (1); } - else + else exit (0); ]])], [ac_cv_have_abstract_sockets=yes], @@ -642,10 +756,12 @@ else DBUS_PATH_OR_ABSTRACT=path fi -# this is used in addresses to prefer abstract, e.g. -# unix:path=/foo or unix:abstract=/foo +# this is used in addresses to prefer abstract, e.g. +# unix:path=/foo or unix:abstract=/foo AC_SUBST(DBUS_PATH_OR_ABSTRACT) +PKG_PROG_PKG_CONFIG + #### Sort out XML library # see what we have @@ -668,7 +784,7 @@ elif test x$with_xml = xlibxml; then fi dbus_use_libxml=true else - ### expat is the default because libxml can't currently survive + ### expat is the default because libxml can't currently survive ### our brutal OOM-handling unit test setup. ### http://bugzilla.gnome.org/show_bug.cgi?id=109368 if test x$have_expat = xfalse; then @@ -724,7 +840,7 @@ if test x$enable_selinux = xno ; then have_selinux=no; else # See if we have SELinux library - AC_CHECK_LIB(selinux, is_selinux_enabled, + AC_CHECK_LIB(selinux, is_selinux_enabled, have_selinux=yes, have_selinux=no) # see if we have the SELinux header with the new D-Bus stuff in it @@ -743,7 +859,7 @@ else if test x$have_selinux = xno ; then AC_MSG_WARN([Sufficiently new SELinux library not found]) fi - else + else if test x$have_selinux = xno ; then AC_MSG_ERROR([SElinux explicitly required, and SELinux library not found]) fi @@ -784,7 +900,7 @@ if test x$enable_dnotify = xno ; then have_dnotify=no; else if test x$have_inotify = xno -a x$host_os = xlinux-gnu -o x$host_os = xlinux; then - have_dnotify=yes; + have_dnotify=yes; else have_dnotify=no; fi @@ -815,7 +931,39 @@ if test x$have_kqueue = xyes; then AC_DEFINE(DBUS_BUS_ENABLE_KQUEUE,1,[Use kqueue]) fi -AM_CONDITIONAL(DBUS_BUS_ENABLE_KQUEUE, test x$have_kqueue = xyes) +AM_CONDITIONAL(DBUS_BUS_ENABLE_KQUEUE, test x$have_kqueue = xyes) + +# launchd checks +if test x$enable_launchd = xno ; then + have_launchd=no +else + have_launchd=yes + AC_CHECK_HEADER([launch.h], , have_launchd=no) + AC_PATH_PROG([LAUNCHCTL], [launchctl]) + if test "x$LAUNCHCTL" = "x"; then + have_launchd=no + fi + + if test x$enable_launchd = xyes && test x$have_launchd = xno ; then + AC_MSG_ERROR([launchd support explicitly enabled but not available]) + fi +fi + +dnl check if launchd is enabled +if test x$have_launchd = xyes; then + AC_DEFINE(DBUS_ENABLE_LAUNCHD,1,[Use launchd autolaunch]) +fi + +AM_CONDITIONAL(DBUS_ENABLE_LAUNCHD, test x$have_launchd = xyes) + +#### Directory to place launchd agent file +if test "x$with_launchd_agent_dir" = "x"; then + LAUNCHD_AGENT_DIR="/Library/LaunchAgents" +else + LAUNCHD_AGENT_DIR="$with_launchd_agent_dir" +fi + +AC_SUBST(LAUNCHD_AGENT_DIR) dnl console owner file if test x$enable_console_owner_file = xno ; then @@ -838,10 +986,10 @@ if test x$enable_libaudit = xno ; then have_libaudit=no; else # See if we have audit daemon & capabilities library - AC_CHECK_LIB(audit, audit_log_user_avc_message, + AC_CHECK_LIB(audit, audit_log_user_avc_message, have_libaudit=yes, have_libaudit=no) if test x$have_libaudit = xyes ; then - AC_CHECK_LIB(cap, cap_set_proc, + AC_CHECK_LIB(cap-ng, capng_clear, have_libaudit=yes, have_libaudit=no) fi fi @@ -849,8 +997,7 @@ fi AM_CONDITIONAL(HAVE_LIBAUDIT, test x$have_libaudit = xyes) if test x$have_libaudit = xyes ; then - SELINUX_LIBS="$SELINUX_LIBS -laudit" - LIBS="-lcap $LIBS" + SELINUX_LIBS="$SELINUX_LIBS -laudit -lcap-ng" AC_DEFINE(HAVE_LIBAUDIT,1,[audit daemon SELinux support]) fi @@ -882,31 +1029,43 @@ static int x = SCM_RIGHTS; AC_DEFINE([HAVE_UNIX_FD_PASSING], [1], [Supports sending UNIX file descriptors]) ], [ AC_MSG_RESULT([not supported]) ]) +NETWORK_libs= +if test x$dbus_win = xyes ; then + if test x$dbus_wince = xyes ; then + NETWORK_libs="-lws2" + else + NETWORK_libs="-lws2_32" + fi +fi + #### Set up final flags DBUS_CLIENT_CFLAGS= -DBUS_CLIENT_LIBS="$THREAD_LIBS" +DBUS_CLIENT_LIBS="$THREAD_LIBS $NETWORK_libs" AC_SUBST(DBUS_CLIENT_CFLAGS) AC_SUBST(DBUS_CLIENT_LIBS) DBUS_BUS_CFLAGS="$XML_CFLAGS" -DBUS_BUS_LIBS="$XML_LIBS $SELINUX_LIBS $INTLLIBS $THREAD_LIBS $ADT_LIBS" +DBUS_BUS_LIBS="$XML_LIBS $SELINUX_LIBS $THREAD_LIBS $ADT_LIBS $NETWORK_libs" AC_SUBST(DBUS_BUS_CFLAGS) AC_SUBST(DBUS_BUS_LIBS) DBUS_LAUNCHER_CFLAGS="$XML_CFLAGS" -DBUS_LAUNCHER_LIBS="$XML_LIBS $THREAD_LIBS" +DBUS_LAUNCHER_LIBS="$XML_LIBS $THREAD_LIBS $NETWORK_libs" AC_SUBST(DBUS_LAUNCHER_CFLAGS) AC_SUBST(DBUS_LAUNCHER_LIBS) DBUS_TEST_CFLAGS= -DBUS_TEST_LIBS="$THREAD_LIBS" +DBUS_TEST_LIBS="$THREAD_LIBS $NETWORK_libs" AC_SUBST(DBUS_TEST_CFLAGS) AC_SUBST(DBUS_TEST_LIBS) ### X11 detection +if test x$dbus_win = xyes ; then + enable_x11=no +else AC_PATH_XTRA -## for now enable_x11 just tracks have_x11, +## for now enable_x11 just tracks have_x11, ## there's no --enable-x11 if test x$no_x = xyes ; then have_x11=no @@ -927,22 +1086,19 @@ fi AC_SUBST(DBUS_X_CFLAGS) AC_SUBST(DBUS_X_LIBS) +fi #### gcc warning flags cc_supports_flag() { - AC_MSG_CHECKING(whether $CC supports "$@") - Cfile=/tmp/foo${$} - touch ${Cfile}.c - $CC -c "$@" ${Cfile}.c -o ${Cfile}.o >/dev/null 2>&1 - rc=$? - rm -f ${Cfile}.c ${Cfile}.o - case $rc in - 0) AC_MSG_RESULT(yes);; - *) AC_MSG_RESULT(no);; - esac - return $rc + AC_MSG_CHECKING(whether $CC supports "$*") + save_CFLAGS="$CFLAGS" + CFLAGS="$*" + AC_TRY_COMPILE([], [], [rc=yes], [rc=no]) + CFLAGS="$save_CFLAGS" + AC_MSG_RESULT([$rc]) + test "x$rc" = xyes } ld_supports_flag() { @@ -975,7 +1131,8 @@ ld_supports_flag() { fi } -if test x$USE_MAINTAINER_MODE = xyes; then +# Don't bother with -Werror on Windows for now, too many warnings +if test x$dbus_win != xyes -a x$dbus_cygwin != xyes -a x$USE_MAINTAINER_MODE = xyes; then if cc_supports_flag "-Werror"; then CFLAGS="$CFLAGS -Werror" fi @@ -1020,8 +1177,8 @@ if test "x$GCC" = "xyes"; then case " $CFLAGS " in *[\ \ ]-Wfloat-equal[\ \ ]*) ;; - *) if cc_supports_flag -Wfloat-equals; then - CFLAGS="$CFLAGS -Wfloat-equal" + *) if cc_supports_flag -Wfloat-equal; then + CFLAGS="$CFLAGS -Wfloat-equal" fi ;; esac @@ -1044,7 +1201,7 @@ if test "x$GCC" = "xyes"; then case " $CFLAGS " in *[\ \ ]-fPIC[\ \ ]*) ;; - *) if cc_supports_flag -fPIC; then + *) if test x$dbus_win = xno && cc_supports_flag -fPIC; then PIC_CFLAGS="-fPIC" if ld_supports_flag -z,relro; then PIC_LDFLAGS="-Wl,-z,relro" @@ -1055,7 +1212,7 @@ if test "x$GCC" = "xyes"; then case " $CFLAGS " in *[\ \ ]-fPIE[\ \ ]*) ;; - *) if cc_supports_flag -fPIE; then + *) if test x$dbus_win = xno && cc_supports_flag -fPIE; then PIE_CFLAGS="-fPIE" if ld_supports_flag -z,relro; then PIE_LDFLAGS="-pie -Wl,-z,relro" @@ -1065,18 +1222,18 @@ if test "x$GCC" = "xyes"; then fi ;; esac - + ### Disabled warnings, and compiler flag overrides - + # Let's just ignore unused for now case " $CFLAGS " in *[\ \ ]-Wno-unused[\ \ ]*) ;; *) CFLAGS="$CFLAGS -Wno-unused" ;; - esac - + esac + # This group is for warnings we currently don't pass. # We would like to, however. Please fix. - + # http://bugs.freedesktop.org/show_bug.cgi?id=17433 case " $CFLAGS " in *[\ \ ]-Wno-sign-compare[\ \ ]*) ;; @@ -1088,14 +1245,8 @@ if test "x$GCC" = "xyes"; then CFLAGS="$CFLAGS -Wno-pointer-sign" fi ;; - esac - - # http://bugs.freedesktop.org/show_bug.cgi?id=19195 - case " $CFLAGS " in - *[\ \ ]-Wno-format[\ \ ]*) ;; - *) CFLAGS="$CFLAGS -Wno-format" ;; esac - + # This one is special - it's not a warning override. # http://bugs.freedesktop.org/show_bug.cgi?id=10599 case " $CFLAGS " in @@ -1123,7 +1274,7 @@ if test "x$GCC" = "xyes"; then case " $CFLAGS " in *[\ \ ]-pedantic[\ \ ]*) ;; *) CFLAGS="$CFLAGS -pedantic" ;; - esac + esac fi if test x$enable_gcov = xyes; then case " $CFLAGS " in @@ -1146,9 +1297,9 @@ else fi AC_SUBST(PIC_CFLAGS) -AC_SUBST(PIC_LDFLAGS) +AC_SUBST(PIC_LDFLAGS) AC_SUBST(PIE_CFLAGS) -AC_SUBST(PIE_LDFLAGS) +AC_SUBST(PIE_LDFLAGS) if ld_supports_flag --gc-sections; then SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS" @@ -1158,13 +1309,12 @@ AC_SUBST(SECTION_FLAGS) AC_SUBST(SECTION_LDFLAGS) AC_MSG_RESULT($ac_gcsections) -# Add -D_POSIX_PTHREAD_SEMANTICS if on Solaris -# case $host_os in solaris*) - CFLAGS="$CFLAGS -D_POSIX_PTHREAD_SEMANTICS" ;; + # Solaris' C library apparently needs these runes to be threadsafe... + CFLAGS="$CFLAGS -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT" esac - + changequote(,)dnl # compress spaces in flags CFLAGS=`echo "$CFLAGS" | sed -e 's/ +/ /g'` @@ -1199,7 +1349,7 @@ if test x$enable_doxygen_docs = xyes; then fi AM_CONDITIONAL(DBUS_DOXYGEN_DOCS_ENABLED, test x$enable_doxygen_docs = xyes) -AC_MSG_RESULT(yes) +AC_MSG_RESULT($enable_doxygen_docs) ### XML Documentation @@ -1228,13 +1378,22 @@ if test x$enable_xml_docs = xyes; then fi AM_CONDITIONAL(DBUS_XML_DOCS_ENABLED, test x$enable_xml_docs = xyes) -AC_MSG_RESULT(yes) +AC_MSG_RESULT($enable_xml_docs) + +AC_PATH_PROG([MAN2HTML], [man2html]) +AC_ARG_VAR([MAN2HTML], [Path to man2html (optional)]) +AM_CONDITIONAL(DBUS_HAVE_MAN2HTML, test x$MAN2HTML != x) + +AM_CONDITIONAL(DBUS_CAN_UPLOAD_DOCS, + test x$enable_doxygen_docs = xyes -a x$enable_xml_docs = xyes -a \ + x$MAN2HTML != x) #### Have to go $localstatedir->$prefix/var->/usr/local/var #### 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) +AS_AC_EXPAND(EXPANDED_PREFIX, "$prefix") AS_AC_EXPAND(EXPANDED_LOCALSTATEDIR, "$localstatedir") AS_AC_EXPAND(EXPANDED_SYSCONFDIR, "$sysconfdir") AS_AC_EXPAND(EXPANDED_BINDIR, "$bindir") @@ -1252,23 +1411,33 @@ if test -f /etc/slackware-version || test -f $EXPANDED_SYSCONFDIR/slackware-vers operating_system=slackware fi +if test -f /usr/bin/cygwin1.dll || test -f $EXPANDED_BINDIR/cygwin1.dll ; then + operating_system=cygwin +fi + #### Sort out init scripts if test x$with_init_scripts = x; then - if test xredhat = x$operating_system ; then - with_init_scripts=redhat - else - if test xslackware = x$operating_system ; then - with_init_scripts=slackware - else - with_init_scripts=none - fi - fi + case x$operating_system in + xredhat) with_init_scripts=redhat ;; + xslackware) with_init_scripts=slackware ;; + xcygwin) with_init_scripts=cygwin ;; + *) with_init_scripts=none ;; + esac fi AM_CONDITIONAL(DBUS_INIT_SCRIPTS_RED_HAT, test x$with_init_scripts = xredhat) - AM_CONDITIONAL(DBUS_INIT_SCRIPTS_SLACKWARE, test x$with_init_scripts = xslackware) +AM_CONDITIONAL(DBUS_INIT_SCRIPTS_CYGWIN, test x$with_init_scripts = xcygwin) + +##### systemd unit files +AC_ARG_WITH([systemdsystemunitdir], +AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files]), + [], [with_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)]) +if test "x$with_systemdsystemunitdir" != xno; then + AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir]) +fi +AM_CONDITIONAL(HAVE_SYSTEMD, [test -n "$with_systemdsystemunitdir" -a "x$with_systemdsystemunitdir" != xno ]) ##### Set up location for system bus socket if ! test -z "$with_system_socket"; then @@ -1280,7 +1449,7 @@ fi AC_SUBST(DBUS_SYSTEM_SOCKET) AC_DEFINE_UNQUOTED(DBUS_SYSTEM_SOCKET,"$DBUS_SYSTEM_SOCKET",[The name of the socket the system bus listens on by default]) -## system bus only listens on local domain sockets, and never +## system bus only listens on local domain sockets, and never ## on an abstract socket (so only root can create the socket) DBUS_SYSTEM_BUS_DEFAULT_ADDRESS="unix:path=$DBUS_SYSTEM_SOCKET" AC_SUBST(DBUS_SYSTEM_BUS_DEFAULT_ADDRESS) @@ -1330,6 +1499,11 @@ fi AC_SUBST(DBUS_USER) AC_DEFINE_UNQUOTED(DBUS_USER,"$DBUS_USER", [User for running the system BUS daemon]) +#### Prefix to install into +DBUS_PREFIX=$EXPANDED_PREFIX +AC_SUBST(DBUS_PREFIX) +AC_DEFINE_UNQUOTED(DBUS_PREFIX,"$DBUS_PREFIX", [Prefix for installing DBUS]) + #### Direcotry to install data files into DBUS_DATADIR=$EXPANDED_DATADIR AC_SUBST(DBUS_DATADIR) @@ -1357,30 +1531,39 @@ AC_DEFINE_UNQUOTED(DBUS_LIBEXECDIR,"$DBUS_LIBEXECDIR", [Directory for installing #### Tell tests where to find certain stuff in builddir DBUS_PWD=`pwd` +# Useful in a cross-compilation environment, where the tests are run on the host system. +AC_ARG_WITH(dbus-test-dir, AS_HELP_STRING([--with-dbus-test-dir=[dirname]],[path where the tests tools are available]), + DBUS_PWD=$withval) AC_DEFUN([TEST_PATH], [ TEST_$1=${DBUS_PWD}/test/$2 AC_DEFINE_UNQUOTED(TEST_$1, "$TEST_$1", [Full path to test file test/$2 in builddir]) AC_SUBST(TEST_$1) ]) +AC_DEFUN([TEST_PROG], [ +TEST_$1=${DBUS_PWD}/test/$2 +AC_DEFINE_UNQUOTED(TEST_$1, "$TEST_$1$EXEEXT", + [Full path to test file test/$2 in builddir]) +AC_SUBST(TEST_$1) +]) TEST_PATH(VALID_SERVICE_DIR, data/valid-service-files) TEST_PATH(INVALID_SERVICE_DIR, data/invalid-service-files) TEST_PATH(VALID_SERVICE_SYSTEM_DIR, data/valid-service-files-system) TEST_PATH(INVALID_SERVICE_SYSTEM_DIR, data/invalid-service-files-system) -TEST_PATH(SERVICE_BINARY, test-service) -TEST_PATH(SHELL_SERVICE_BINARY, test-shell-service) -TEST_PATH(EXIT_BINARY, test-exit) -TEST_PATH(SEGFAULT_BINARY, test-segfault) -TEST_PATH(SLEEP_FOREVER_BINARY, test-sleep-forever) -TEST_PATH(PRIVSERVER_BINARY, name-test/test-privserver) - -AC_DEFINE_UNQUOTED(TEST_BUS_BINARY, "$DBUS_PWD/bus/dbus-daemon", +TEST_PROG(SERVICE_BINARY, test-service) +TEST_PROG(SHELL_SERVICE_BINARY, test-shell-service) +TEST_PROG(EXIT_BINARY, test-exit) +TEST_PROG(SEGFAULT_BINARY, test-segfault) +TEST_PROG(SLEEP_FOREVER_BINARY, test-sleep-forever) +TEST_PROG(PRIVSERVER_BINARY, name-test/test-privserver) + +AC_DEFINE_UNQUOTED(TEST_BUS_BINARY, "$DBUS_PWD/bus/dbus-daemon$EXEEXT", [Full path to the daemon in the builddir]) AC_SUBST(TEST_BUS_BINARY) ## Export the non-setuid external helper -TEST_LAUNCH_HELPER_BINARY="$DBUS_PWD/bus/dbus-daemon-launch-helper-test" +TEST_LAUNCH_HELPER_BINARY="$DBUS_PWD/bus/dbus-daemon-launch-helper-test$EXEEXT" AC_SUBST(TEST_LAUNCH_HELPER_BINARY) AC_DEFINE_UNQUOTED(DBUS_TEST_LAUNCH_HELPER_BINARY, "$TEST_LAUNCH_HELPER_BINARY", [Full path to the launch helper test program in the builddir]) @@ -1396,6 +1579,8 @@ else DEFAULT_SOCKET_DIR=/tmp fi +DEFAULT_SOCKET_DIR=`echo $DEFAULT_SOCKET_DIR | sed 's/+/%2B/g'` + if ! test -z "$with_test_socket_dir" ; then TEST_SOCKET_DIR="$with_test_socket_dir" else @@ -1412,7 +1597,14 @@ fi AC_DEFINE_UNQUOTED(DBUS_SESSION_SOCKET_DIR, "$DBUS_SESSION_SOCKET_DIR", [Where per-session bus puts its sockets]) AC_SUBST(DBUS_SESSION_SOCKET_DIR) -AC_DEFINE_UNQUOTED(DBUS_UNIX, "1", [Defined on UNIX and Linux systems and not on Windows]) +if test x$dbus_win = xyes; then + DBUS_SESSION_BUS_DEFAULT_ADDRESS="nonce-tcp:" +elif test x$have_launchd = xyes; then + DBUS_SESSION_BUS_DEFAULT_ADDRESS="launchd:env=DBUS_LAUNCHD_SESSION_BUS_SOCKET" +else + DBUS_SESSION_BUS_DEFAULT_ADDRESS="unix:tmpdir=$DBUS_SESSION_SOCKET_DIR" +fi +AC_SUBST(DBUS_SESSION_BUS_DEFAULT_ADDRESS) # darwin needs this to initialize the environment AC_CHECK_HEADERS(crt_externs.h) @@ -1428,12 +1620,16 @@ AH_VERBATIM(_DARWIN_ENVIRON, AC_OUTPUT([ Doxyfile +dbus/versioninfo.rc dbus/dbus-arch-deps.h bus/system.conf bus/session.conf bus/messagebus +bus/messagebus-config +bus/org.freedesktop.dbus-session.plist bus/rc.messagebus -bus/dbus-daemon.1 +bus/dbus.service +bus/dbus.socket Makefile dbus/Makefile bus/Makefile @@ -1441,6 +1637,7 @@ tools/Makefile test/Makefile test/name-test/Makefile doc/Makefile +doc/dbus-daemon.1 dbus-1.pc test/data/valid-config-files/debug-allow-all.conf test/data/valid-config-files/debug-allow-all-sha1.conf @@ -1448,6 +1645,7 @@ test/data/valid-config-files-system/debug-allow-all-pass.conf test/data/valid-config-files-system/debug-allow-all-fail.conf test/data/valid-service-files/org.freedesktop.DBus.TestSuite.PrivServer.service test/data/valid-service-files/org.freedesktop.DBus.TestSuiteEchoService.service +test/data/valid-service-files/org.freedesktop.DBus.TestSuiteForkingEchoService.service test/data/valid-service-files/org.freedesktop.DBus.TestSuiteSegfaultService.service test/data/valid-service-files/org.freedesktop.DBus.TestSuiteShellEchoServiceSuccess.service test/data/valid-service-files/org.freedesktop.DBus.TestSuiteShellEchoServiceFail.service @@ -1465,7 +1663,7 @@ echo " D-Bus $VERSION ============== - prefix: ${prefix} + prefix: ${EXPANDED_PREFIX} exec_prefix: ${exec_prefix} libdir: ${EXPANDED_LIBDIR} libexecdir: ${EXPANDED_LIBEXECDIR} @@ -1481,8 +1679,9 @@ echo " 64-bit int: ${DBUS_INT64_TYPE} 32-bit int: ${DBUS_INT32_TYPE} 16-bit int: ${DBUS_INT16_TYPE} - Doxygen: ${DOXYGEN} - xmlto: ${XMLTO}" + Doxygen: ${DOXYGEN:-not found} + xmlto: ${XMLTO:-not found} + man2html: ${MAN2HTML:-not found}" echo " Maintainer mode: ${USE_MAINTAINER_MODE} @@ -1499,14 +1698,14 @@ echo " Building Doxygen docs: ${enable_doxygen_docs} Building XML docs: ${enable_xml_docs} Building cache support: ${enable_userdb_cache} - Gettext libs (empty OK): ${INTLLIBS} + Building launchd support: ${have_launchd} Using XML parser: ${with_xml} Init scripts style: ${with_init_scripts} Abstract socket names: ${ac_cv_have_abstract_sockets} System bus socket: ${DBUS_SYSTEM_SOCKET} System bus address: ${DBUS_SYSTEM_BUS_DEFAULT_ADDRESS} System bus PID file: ${DBUS_SYSTEM_PID_FILE} - Session bus socket dir: ${DBUS_SESSION_SOCKET_DIR} + Session bus address: ${DBUS_SESSION_BUS_DEFAULT_ADDRESS} Console auth dir: ${DBUS_CONSOLE_AUTH_DIR} Console owner file: ${have_console_owner_file} Console owner file path: ${DBUS_CONSOLE_OWNER_FILE} @@ -1514,6 +1713,10 @@ echo " Session bus services dir: ${EXPANDED_DATADIR}/dbus-1/services 'make check' socket dir: ${TEST_SOCKET_DIR} " +if test x$have_launchd = xyes; then + echo " launchd agent dir: ${LAUNCHD_AGENT_DIR}" +fi +echo if test x$enable_tests = xyes; then echo "NOTE: building with unit tests increases the size of the installed library and renders it insecure."