Merge branch 'dbus-1.4'
[platform/upstream/dbus.git] / configure.ac
1 dnl -*- mode: m4 -*-
2 AC_PREREQ([2.63])
3
4 m4_define([dbus_major_version], [1])
5 m4_define([dbus_minor_version], [5])
6 m4_define([dbus_micro_version], [7])
7 m4_define([dbus_version],
8           [dbus_major_version.dbus_minor_version.dbus_micro_version])
9 AC_INIT([dbus],[dbus_version],[https://bugs.freedesktop.org/enter_bug.cgi?product=dbus],[dbus])
10
11 AC_CANONICAL_HOST
12
13 AC_CONFIG_HEADERS([config.h])
14 AC_CONFIG_MACRO_DIR([m4])
15
16 AM_INIT_AUTOMAKE([1.10 tar-ustar -Wno-portability])
17
18 GETTEXT_PACKAGE=dbus-1
19 AC_SUBST(GETTEXT_PACKAGE)
20 AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[The name of the gettext domain])
21
22  ## must come before we use the $USE_MAINTAINER_MODE variable later
23 AM_MAINTAINER_MODE
24
25 m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
26
27 AC_DEFINE_UNQUOTED(DBUS_DAEMON_NAME,"dbus-daemon",[Name of executable])
28
29 # libtool versioning - this applies to libdbus
30 #
31 # See http://sources.redhat.com/autobook/autobook/autobook_91.html#SEC91 for details
32 #
33
34 ## increment if the interface has additions, changes, removals.
35 LT_CURRENT=9
36
37 ## increment any time the source changes; set to
38 ##  0 if you increment CURRENT
39 LT_REVISION=3
40
41 ## increment if any interfaces have been added; set to 0
42 ## if any interfaces have been changed or removed. removal has
43 ## precedence over adding, so set to 0 if both happened.
44 LT_AGE=6
45
46 AC_SUBST(LT_CURRENT)
47 AC_SUBST(LT_REVISION)
48 AC_SUBST(LT_AGE)
49
50 DBUS_MAJOR_VERSION=dbus_major_version
51 DBUS_MINOR_VERSION=dbus_minor_version
52 DBUS_MICRO_VERSION=dbus_micro_version
53 DBUS_VERSION=dbus_major_version.dbus_minor_version.dbus_micro_version
54
55 AC_SUBST(DBUS_MAJOR_VERSION)
56 AC_SUBST(DBUS_MINOR_VERSION)
57 AC_SUBST(DBUS_MICRO_VERSION)
58 AC_SUBST(DBUS_VERSION)
59
60 AC_PROG_CC
61 AM_PROG_CC_C_O
62 AC_PROG_CXX
63 AC_USE_SYSTEM_EXTENSIONS
64 AC_ISC_POSIX
65 AC_HEADER_STDC
66 AC_C_INLINE
67 AM_PROG_LIBTOOL
68 AC_PROG_MKDIR_P
69 COMPILER_COVERAGE
70 COMPILER_OPTIMISATIONS
71
72 # Initialize libtool
73 LT_INIT([win32-dll])
74 LT_LANG([Windows Resource])
75
76 # Set some internal variables depending on the platform for later use.
77 dbus_win=no
78 dbus_cygwin=no
79 dbus_unix=no
80 case "${host}" in
81     *-mingw32ce*)
82         dbus_win=yes
83         dbus_wince=yes
84         ;;
85     *-mingw32*)
86         dbus_win=yes
87         ;;
88     *-cygwin*)
89         dbus_cygwin=yes
90         dbus_unix=yes
91         ;;
92     *)
93         dbus_unix=yes
94        ;;
95 esac
96
97 # Special defines for certain platforms
98 if test "$dbus_win" = yes; then
99     AC_DEFINE(DBUS_WIN,1,[Defined if we run on a W32 API based system])
100     BUILD_TIMESTAMP=`date --iso-8601=minutes`
101     AC_SUBST(BUILD_TIMESTAMP)
102     # Assume DBUS_VERSION is always three numbers
103     BUILD_FILEVERSION=`echo "$DBUS_VERSION" | sed -e 's/\./,/g'`,0
104     AC_SUBST(BUILD_FILEVERSION)
105     AC_CHECK_TOOL(WINDRES, windres, no)
106     if test "$WINDRES" = no; then
107       AC_MSG_ERROR([*** Could not find an implementation of windres in your PATH.])
108     fi
109     if test "$dbus_wince" = yes; then
110       AC_DEFINE(DBUS_WINCE,1,[Defined if we run on a W32 CE API based system])
111       AC_DEFINE(_WIN32_WCE, 0x0502, [Defined to get newer W32 CE APIs])
112     fi
113 else
114     AC_DEFINE(DBUS_UNIX,1,[Defined if we run on a Unix-based system])
115 fi
116 if test "$dbus_cygwin" = yes; then
117     AC_DEFINE(DBUS_CYGWIN,1,[Defined if we run on a cygwin API based system])
118 fi
119
120 AM_CONDITIONAL(DBUS_WIN, test "$dbus_win" = yes)
121 AM_CONDITIONAL(DBUS_WINCE, test "$dbus_wince" = yes)
122 AM_CONDITIONAL(DBUS_UNIX, test "$dbus_unix" = yes)
123 AM_CONDITIONAL(DBUS_CYGWIN, test "$dbus_cygwin" = yes)
124
125 AC_ARG_ENABLE(ansi, AS_HELP_STRING([--enable-ansi],[enable -ansi -pedantic gcc flags]),enable_ansi=$enableval,enable_ansi=no)
126 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)
127 AC_ARG_ENABLE(asserts, AS_HELP_STRING([--enable-asserts],[include assertion checks]),enable_asserts=$enableval,enable_asserts=$USE_MAINTAINER_MODE)
128 AC_ARG_ENABLE(checks, AS_HELP_STRING([--enable-checks],[include sanity checks on public API]),enable_checks=$enableval,enable_checks=yes)
129 AC_ARG_ENABLE(xml-docs, AS_HELP_STRING([--enable-xml-docs],[build XML documentation (requires xmlto)]),enable_xml_docs=$enableval,enable_xml_docs=auto)
130 AC_ARG_ENABLE(doxygen-docs, AS_HELP_STRING([--enable-doxygen-docs],[build DOXYGEN documentation (requires Doxygen)]),enable_doxygen_docs=$enableval,enable_doxygen_docs=auto)
131 AC_ARG_ENABLE(abstract-sockets, AS_HELP_STRING([--enable-abstract-sockets],[use abstract socket namespace (linux only)]),enable_abstract_sockets=$enableval,enable_abstract_sockets=auto)
132 AC_ARG_ENABLE(selinux, AS_HELP_STRING([--enable-selinux],[build with SELinux support]),enable_selinux=$enableval,enable_selinux=auto)
133 AC_ARG_ENABLE(libaudit,AS_HELP_STRING([--enable-libaudit],[build audit daemon support for SELinux]),enable_libaudit=$enableval,enable_libaudit=auto)
134 AC_ARG_ENABLE(dnotify, AS_HELP_STRING([--enable-dnotify],[build with dnotify support (linux only)]),enable_dnotify=$enableval,enable_dnotify=auto)
135 AC_ARG_ENABLE(inotify, AS_HELP_STRING([--enable-inotify],[build with inotify support (linux only)]),enable_inotify=$enableval,enable_inotify=auto)
136 AC_ARG_ENABLE(kqueue, AS_HELP_STRING([--enable-kqueue],[build with kqueue support]),enable_kqueue=$enableval,enable_kqueue=auto)
137 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)
138 AC_ARG_ENABLE(userdb-cache, AS_HELP_STRING([--enable-userdb-cache],[build with userdb-cache support]),enable_userdb_cache=$enableval,enable_userdb_cache=yes)
139 AC_ARG_ENABLE(launchd, AS_HELP_STRING([--enable-launchd],[build with launchd auto-launch support]),enable_launchd=$enableval,enable_launchd=auto)
140
141 AC_ARG_WITH(xml, AS_HELP_STRING([--with-xml=[libxml/expat]],[XML library to use (libxml may be named libxml2 on some systems)]))
142 AC_ARG_WITH(init-scripts, AS_HELP_STRING([--with-init-scripts=[redhat]],[Style of init scripts to install]))
143 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]))
144 AC_ARG_WITH(test-socket-dir, AS_HELP_STRING([--with-test-socket-dir=[dirname]],[Where to put sockets for make check]))
145 AC_ARG_WITH(system-pid-file, AS_HELP_STRING([--with-system-pid-file=[pidfile]],[PID file for systemwide daemon]))
146 AC_ARG_WITH(system-socket, AS_HELP_STRING([--with-system-socket=[filename]],[UNIX domain socket for systemwide daemon]))
147 AC_ARG_WITH(console-auth-dir, AS_HELP_STRING([--with-console-auth-dir=[dirname]],[directory to check for console ownerhip]))
148 AC_ARG_WITH(console-owner-file, AS_HELP_STRING([--with-console-owner-file=[filename]],[file whose owner determines current console owner]))
149 AC_ARG_WITH(launchd-agent-dir, AS_HELP_STRING([--with-launchd-agent-dir=[dirname]],[directory to put the launchd agent (default: /Library/LaunchAgents)]))
150 AC_ARG_WITH(dbus_user, AS_HELP_STRING([--with-dbus-user=<user>],[User for running the DBUS daemon (messagebus)]))
151 AC_ARG_WITH(dbus_daemondir, AS_HELP_STRING([--with-dbus-daemondir=[dirname]],[Directory for installing the DBUS daemon]))
152
153 AC_ARG_ENABLE([embedded-tests],
154   AS_HELP_STRING([--enable-embedded-tests],
155     [enable unit test code in the library and binaries]),
156   [], [enable_embedded_tests=$USE_MAINTAINER_MODE])
157 AC_ARG_ENABLE([modular-tests],
158   AS_HELP_STRING([--enable-modular-tests],
159     [enable modular regression tests (requires GLib)]),
160   [], [enable_modular_tests=auto])
161 # --enable-tests overrides both --enable-embedded-tests and
162 # --enable-modular-tests
163 AC_ARG_ENABLE([tests],
164   AS_HELP_STRING([--enable-tests],
165     [enable/disable all tests, overriding embedded-tests/modular-tests]),
166   [
167   if test "x$enableval" = xyes; then
168     AC_MSG_NOTICE([Full test coverage was requested with --enable-tests=yes])
169     AC_MSG_NOTICE([This has many dependencies (GLib, dbus-glib, Python)])
170   fi
171   enable_embedded_tests=$enableval
172   enable_modular_tests=$enableval
173   ],
174   [])
175
176 # DBUS_ENABLE_EMBEDDED_TESTS controls unit tests built in to .c files
177 # and also some stuff in the test/ subdir. DBUS_BUILD_TESTS was an older
178 # name for this.
179 AM_CONDITIONAL([DBUS_BUILD_TESTS], [test "x$enable_embedded_tests" = xyes])
180 AM_CONDITIONAL([DBUS_ENABLE_EMBEDDED_TESTS],
181   [test "x$enable_embedded_tests" = xyes])
182 if test "x$enable_embedded_tests" = xyes; then
183     AC_DEFINE([DBUS_ENABLE_EMBEDDED_TESTS], [1],
184       [Define to build test code into the library and binaries])
185     AC_DEFINE([DBUS_BUILD_TESTS], [1],
186       [Define to build test code into the library and binaries])
187 fi
188
189 # DBUS_ENABLE_MODULAR_TESTS controls tests that work based on public API.
190 # These use GTest, from GLib, because life's too short. They're enabled by
191 # default (unless you don't have GLib), because they don't bloat the library
192 # or binaries.
193 if test "x$enable_modular_tests" != xno; then
194   PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.22, gio-2.0 >= 2.22],
195     [],
196     [if test "x$enable_modular_tests" = xyes; then
197       AC_MSG_NOTICE([Full test coverage (--enable-modular-tests=yes or --enable-tests=yes) requires GLib])
198       AC_MSG_ERROR([$GLIB_ERRORS])
199     else # assumed to be "auto"
200       enable_modular_tests=no
201     fi])
202   # If dbus-gmain.[ch] returned to libdbus then we wouldn't need this
203   PKG_CHECK_MODULES([DBUS_GLIB], [dbus-glib-1],
204     [],
205     [if test "x$enable_modular_tests" = xyes; then
206       AC_MSG_NOTICE([Full test coverage (--enable-modular-tests=yes or --enable-tests=yes) requires dbus-glib])
207       AC_MSG_ERROR([$DBUS_GLIB_ERRORS])
208     else # assumed to be "auto"
209       enable_modular_tests=no
210     fi])
211   if test "x$enable_modular_tests" != xno; then
212     # dependencies checked, switch from auto to yes
213     enable_modular_tests=yes
214   fi
215 fi
216 if test "x$enable_modular_tests" = xyes; then
217   AC_DEFINE([DBUS_ENABLE_MODULAR_TESTS], [1],
218     [Define to build independent test binaries (requires GLib)])
219 fi
220 AM_CONDITIONAL([DBUS_ENABLE_MODULAR_TESTS],
221   [test "x$enable_modular_tests" = xyes])
222
223 AC_ARG_ENABLE([installed-tests],
224   AS_HELP_STRING([--enable-installed-tests],
225     [enable unit test code in the library and binaries]),
226   [], [enable_installed_tests=no])
227 AM_CONDITIONAL([DBUS_ENABLE_INSTALLED_TESTS],
228   [test "x$enable_installed_tests" = xyes])
229
230 if test "x$enable_tests" = xyes; then
231   # full test coverage is required, Python is a hard dependency
232   AC_MSG_NOTICE([Full test coverage (--enable-tests=yes) requires Python, dbus-python, pygobject])
233   AM_PATH_PYTHON([2.6])
234   AC_MSG_CHECKING([for Python modules for full test coverage])
235   if "$PYTHON" -c "import dbus, gobject, dbus.mainloop.glib"; then
236     AC_MSG_RESULT([yes])
237   else
238     AC_MSG_RESULT([no])
239     AC_MSG_ERROR([cannot import dbus, gobject, dbus.mainloop.glib Python modules])
240   fi
241 else
242   # --enable-tests not given: do not abort if Python is missing
243   AM_PATH_PYTHON([2.6], [], [:])
244 fi
245
246 if test x$enable_verbose_mode = xyes; then
247     AC_DEFINE(DBUS_ENABLE_VERBOSE_MODE,1,[Support a verbose mode])
248 fi
249
250 if test x$enable_asserts = xno; then
251     AC_DEFINE(DBUS_DISABLE_ASSERT,1,[Disable assertion checking])
252     R_DYNAMIC_LDFLAG=""
253 else
254     # -rdynamic is needed for glibc's backtrace_symbols to work.
255     # No clue how much overhead this adds, but it's useful
256     # to do this on any assertion failure,
257     # so for now it's enabled anytime asserts are (currently not
258     # in production builds).
259
260     # To get -rdynamic you pass -export-dynamic to libtool.
261     AC_DEFINE(DBUS_BUILT_R_DYNAMIC,1,[whether -export-dynamic was passed to libtool])
262     R_DYNAMIC_LDFLAG=-export-dynamic
263 fi
264 AC_SUBST(R_DYNAMIC_LDFLAG)
265
266 if test x$enable_checks = xno; then
267     AC_DEFINE(DBUS_DISABLE_CHECKS,1,[Disable public API sanity checking])
268     AC_DEFINE(G_DISABLE_CHECKS,1,[Disable GLib public API sanity checking])
269 fi
270
271 if test x$enable_userdb_cache = xyes; then
272     AC_DEFINE(DBUS_ENABLE_USERDB_CACHE,1,[Build with caching of user data])
273 fi
274
275 if test x$enable_compiler_coverage = xyes; then
276      ## so that config.h changes when you toggle gcov support
277      AC_DEFINE_UNQUOTED(DBUS_GCOV_ENABLED, 1, [Defined if gcov is enabled to force a rebuild due to config.h changing])
278 fi
279
280 # glibc21.m4 serial 3
281 dnl Copyright (C) 2000-2002, 2004 Free Software Foundation, Inc.
282 dnl This file is free software; the Free Software Foundation
283 dnl gives unlimited permission to copy and/or distribute it,
284 dnl with or without modifications, as long as this notice is preserved.
285
286 # Test for the GNU C Library, version 2.1 or newer.
287 # From Bruno Haible.
288
289 AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer,
290   ac_cv_gnu_library_2_1,
291   [AC_EGREP_CPP([Lucky GNU user],
292     [
293 #include <features.h>
294 #ifdef __GNU_LIBRARY__
295  #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
296   Lucky GNU user
297  #endif
298 #endif
299     ],
300     ac_cv_gnu_library_2_1=yes,
301     ac_cv_gnu_library_2_1=no)
302   ]
303 )
304
305 #### Integer sizes
306
307 AC_CHECK_SIZEOF(char)
308 AC_CHECK_SIZEOF(short)
309 AC_CHECK_SIZEOF(long)
310 AC_CHECK_SIZEOF(int)
311 AC_CHECK_SIZEOF(void *)
312 AC_CHECK_SIZEOF(long long)
313 AC_CHECK_SIZEOF(__int64)
314
315 AC_ARG_WITH([64-bit],
316   [AS_HELP_STRING([--without-64-bit],
317     [If you have to use this option, please report it as a bug])],
318   [],
319   [with_64_bit=yes])
320
321 ### See what our 64 bit type is called
322 AC_MSG_CHECKING([64-bit integer type])
323
324 case 8 in
325 $ac_cv_sizeof_int)
326   dbusint64=int
327   dbusint64_constant='(val)'
328   dbusuint64_constant='(val)'
329   dbusint64_printf_modifier='""'
330   ;;
331 $ac_cv_sizeof_long)
332   dbusint64=long
333   dbusint64_constant='(val##L)'
334   dbusuint64_constant='(val##UL)'
335   dbusint64_printf_modifier='"l"'
336   ;;
337 $ac_cv_sizeof_long_long)
338   dbusint64='long long'
339   dbusint64_constant='(val##LL)'
340   dbusuint64_constant='(val##ULL)'
341   # Ideally we discover what the format is, but this is
342   # only used in verbose mode, so eh...
343   if test x"$ac_cv_gnu_library_2_1" = xyes; then
344     dbusint64_printf_modifier='"ll"'
345   fi
346   ;;
347 $ac_cv_sizeof___int64)
348   dbusint64=__int64
349   dbusint64_constant='(val##i64)'
350   dbusuint64_constant='(val##ui64)'
351   # See above case
352   if test x"$ac_cv_gnu_library_2_1" = xyes; then
353     dbusint64_printf_modifier='"ll"'
354   fi
355   ;;
356 esac
357
358 AS_IF(
359   [test "x$with_64_bit" = xno],
360   [
361         DBUS_INT64_TYPE="no_int64_type_detected"
362         DBUS_HAVE_INT64=0
363         DBUS_INT64_CONSTANT=
364         DBUS_UINT64_CONSTANT=
365         AC_MSG_RESULT([disabled via --without-64-bit])
366   ],
367   dnl else if
368   [test -z "$dbusint64"],
369   [AC_MSG_RESULT([not found])
370   AC_MSG_ERROR([Could not find a 64-bit integer type.
371
372 Please report a bug here with details of your platform and compiler:
373
374     http://bugs.freedesktop.org/enter_bug.cgi?product=DBus&component=core
375
376 To compile D-Bus with all 64-bit integer types removed (not recommended), use
377 the option "--without-64-bit".
378
379 This option is likely to be removed in future, unless you report that your
380 platform needs it.])
381   ],
382   dnl else
383   [
384         DBUS_INT64_TYPE="$dbusint64"
385         DBUS_HAVE_INT64=1
386         DBUS_INT64_CONSTANT="$dbusint64_constant"
387         DBUS_UINT64_CONSTANT="$dbusuint64_constant"
388         if test x"$dbusint64_printf_modifier" != x; then
389                 AC_DEFINE_UNQUOTED(DBUS_INT64_PRINTF_MODIFIER, [$dbusint64_printf_modifier], [Define to printf modifier for 64 bit integer type])
390         fi
391         AC_MSG_RESULT($DBUS_INT64_TYPE)
392   ])
393
394 AC_SUBST(DBUS_INT64_TYPE)
395 AC_SUBST(DBUS_INT64_CONSTANT)
396 AC_SUBST(DBUS_UINT64_CONSTANT)
397 AC_SUBST(DBUS_HAVE_INT64)
398
399 ### see what 32-bit int is called
400 AC_MSG_CHECKING([32-bit integer type])
401
402 case 4 in
403 $ac_cv_sizeof_short)
404   dbusint32=short
405   ;;
406 $ac_cv_sizeof_int)
407   dbusint32=int
408   ;;
409 $ac_cv_sizeof_long)
410   dbusint32=long
411   ;;
412 esac
413
414 if test -z "$dbusint32" ; then
415         DBUS_INT32_TYPE="no_int32_type_detected"
416         AC_MSG_ERROR([No 32-bit integer type found])
417 else
418         DBUS_INT32_TYPE="$dbusint32"
419         AC_MSG_RESULT($DBUS_INT32_TYPE)
420 fi
421
422 AC_SUBST(DBUS_INT32_TYPE)
423
424 ### see what 16-bit int is called
425 AC_MSG_CHECKING([16-bit integer type])
426
427 case 2 in
428 $ac_cv_sizeof_short)
429   dbusint16=short
430   ;;
431 $ac_cv_sizeof_int)
432   dbusint16=int
433   ;;
434 esac
435
436 if test -z "$dbusint16" ; then
437         DBUS_INT16_TYPE="no_int16_type_detected"
438         AC_MSG_ERROR([No 16-bit integer type found])
439 else
440         DBUS_INT16_TYPE="$dbusint16"
441         AC_MSG_RESULT($DBUS_INT16_TYPE)
442 fi
443
444 AC_SUBST(DBUS_INT16_TYPE)
445
446 ## byte order
447 case $host_os in
448         darwin*)
449                 # check at compile-time, so that it is possible to build universal
450                 # (with multiple architectures at once on the compile line)
451                 AH_VERBATIM([WORDS_BIGENDIAN_DARWIN], [
452                         /* Use the compiler-provided endianness defines to allow universal compiling. */
453                         #if defined(__BIG_ENDIAN__)
454                         #define WORDS_BIGENDIAN 1
455                         #endif
456                 ])
457                 ;;
458         *)
459                 AC_C_BIGENDIAN
460                 ;;
461 esac
462
463 dnl **********************************
464 dnl *** va_copy checks (from GLib) ***
465 dnl **********************************
466 dnl we currently check for all three va_copy possibilities, so we get
467 dnl all results in config.log for bug reports.
468 AC_CACHE_CHECK([for an implementation of va_copy()],dbus_cv_va_copy,[
469         AC_LINK_IFELSE([AC_LANG_SOURCE([#include <stdarg.h>
470 #include <stdlib.h>
471         static void f (int i, ...) {
472         va_list args1, args2;
473         va_start (args1, i);
474         va_copy (args2, args1);
475         if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
476           exit (1);
477         va_end (args1); va_end (args2);
478         }
479         int main() {
480           f (0, 42);
481           return 0;
482         }])],
483         [dbus_cv_va_copy=yes],
484         [dbus_cv_va_copy=no])
485 ])
486 AC_CACHE_CHECK([for an implementation of __va_copy()],dbus_cv___va_copy,[
487         AC_LINK_IFELSE([AC_LANG_SOURCE([#include <stdarg.h>
488 #include <stdlib.h>
489         static void f (int i, ...) {
490         va_list args1, args2;
491         va_start (args1, i);
492         __va_copy (args2, args1);
493         if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
494           exit (1);
495         va_end (args1); va_end (args2);
496         }
497         int main() {
498           f (0, 42);
499           return 0;
500         }])],
501         [dbus_cv___va_copy=yes],
502         [dbus_cv___va_copy=no])
503 ])
504
505 if test "x$dbus_cv_va_copy" = "xyes"; then
506   dbus_va_copy_func=va_copy
507 else if test "x$dbus_cv___va_copy" = "xyes"; then
508   dbus_va_copy_func=__va_copy
509 fi
510 fi
511
512 if test -n "$dbus_va_copy_func"; then
513   AC_DEFINE_UNQUOTED(DBUS_VA_COPY,$dbus_va_copy_func,[A 'va_copy' style function])
514 fi
515
516 AC_LANG_PUSH(C)
517 AC_CACHE_CHECK([whether va_lists can be copied by value],
518         dbus_cv_va_val_copy,
519         [AC_RUN_IFELSE([AC_LANG_PROGRAM(
520 [[
521         #include <stdarg.h>
522         #include <stdlib.h>
523 ]],
524 [[
525         static void f (int i, ...) {
526         va_list args1, args2;
527         va_start (args1, i);
528         args2 = args1;
529         if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
530           exit (1);
531         va_end (args1); va_end (args2);
532         }
533         int main() {
534           f (0, 42);
535           return 0;
536         }
537 ]])],
538         [dbus_cv_va_val_copy=yes],
539         [dbus_cv_va_val_copy=no],
540         [dbus_cv_va_val_copy=yes])
541 ])
542 AC_LANG_POP(C)
543
544 if test "x$dbus_cv_va_val_copy" = "xno"; then
545   AC_DEFINE(DBUS_VA_COPY_AS_ARRAY,1, ['va_lists' cannot be copies as values])
546 fi
547
548
549 #### Atomic integers
550
551 AC_CACHE_CHECK([whether $CC knows __sync_sub_and_fetch()],
552   dbus_cv_sync_sub_and_fetch,
553   [AC_LINK_IFELSE([
554      AC_LANG_PROGRAM([[]], [[int a = 4; int b = __sync_sub_and_fetch(&a, 4); exit(b); ]])],
555      [dbus_cv_sync_sub_and_fetch=yes],
556      [dbus_cv_sync_sub_and_fetch=no])
557   ])
558
559 if test "x$dbus_cv_sync_sub_and_fetch" = "xyes" ; then
560    have_sync=1
561 else
562    have_sync=0
563 fi
564
565 AC_DEFINE_UNQUOTED([DBUS_USE_SYNC], [$have_sync], [Use the gcc __sync extension])
566
567 #### Various functions
568 AC_SEARCH_LIBS(socket,[socket network])
569 AC_CHECK_FUNC(gethostbyname,,[AC_CHECK_LIB(nsl,gethostbyname)])
570
571 AC_CHECK_FUNCS(vsnprintf vasprintf nanosleep usleep setenv clearenv unsetenv socketpair getgrouplist fpathconf setrlimit poll setlocale localeconv strtoll strtoull)
572
573 AC_CHECK_HEADERS([syslog.h])
574 if test "x$ac_cv_header_syslog_h" = "xyes"; then
575   AC_CHECK_DECLS([LOG_PERROR], [], [], [[#include <syslog.h>]])
576 fi
577
578 #### Check for broken poll; taken from Glib's configure
579
580 AC_MSG_CHECKING([for broken poll])
581 AC_RUN_IFELSE([AC_LANG_SOURCE([[
582     #include <stdlib.h>
583     #include <fcntl.h>
584     #include <poll.h>
585     #ifdef HAVE_SYS_POLL_H
586     #include <sys/poll.h>
587     #endif
588     int main(void) {
589       struct pollfd fds[1];
590       int fd;
591       fd = open("/dev/null", 1);
592       fds[0].fd = fd;
593       fds[0].events = POLLIN;
594       fds[0].revents = 0;
595       if (poll(fds, 1, 0) < 0 || (fds[0].revents & POLLNVAL) != 0) {
596             exit(1);  /* Does not work for devices -- fail */
597       }
598       exit(0);
599     }]])],
600   [broken_poll=no],
601   [broken_poll=yes
602    AC_DEFINE(BROKEN_POLL,1,[poll doesn't work on devices])],
603   [broken_poll="no (cross compiling)"])
604 AC_MSG_RESULT($broken_poll)
605
606 AC_MSG_CHECKING(for dirfd)
607 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
608 #include <sys/types.h>
609 #include <dirent.h>
610 ]], [[
611 DIR *dirp;
612 dirp = opendir(".");
613 dirfd(dirp);
614 closedir(dirp);
615 ]])],
616 [dbus_have_dirfd=yes],
617 [dbus_have_dirfd=no])
618 AC_MSG_RESULT($dbus_have_dirfd)
619 if test "$dbus_have_dirfd" = yes; then
620         AC_DEFINE(HAVE_DIRFD,1,[Have dirfd function])
621 else
622         AC_MSG_CHECKING(for DIR *dirp->dd_fd)
623         AC_LINK_IFELSE([AC_LANG_PROGRAM([[
624 #include <sys/types.h>
625 #include <dirent.h>
626         ]], [[
627 DIR *dirp;
628 int fd;
629 dirp = opendir(".");
630 fd = dirp->dd_fd;
631 closedir(dirp);
632         ]])],
633         [dbus_have_ddfd=yes],
634         [dbus_have_ddfd=no])
635         AC_MSG_RESULT($dbus_have_ddfd)
636         if test "$dbus_have_ddfd" = yes; then
637                 AC_DEFINE(HAVE_DDFD,1,[Have the ddfd member of DIR])
638         fi
639 fi
640
641 AC_CHECK_HEADERS(sys/resource.h)
642
643 AC_CHECK_HEADERS(dirent.h)
644
645 AC_CHECK_HEADERS(execinfo.h, [AC_CHECK_FUNCS(backtrace)])
646
647 AC_CHECK_HEADERS(errno.h)
648
649 AC_CHECK_HEADERS(signal.h)
650
651 AC_CHECK_HEADERS(locale.h)
652
653 AC_CHECK_HEADERS(byteswap.h)
654
655 AC_CHECK_HEADERS(unistd.h)
656
657 AC_CHECK_HEADERS(ws2tcpip.h)
658
659 AC_CHECK_HEADERS(wspiapi.h)
660
661 # Add -D_POSIX_PTHREAD_SEMANTICS if on Solaris
662 #
663 case $host_os in
664     solaris*)
665        CFLAGS="$CFLAGS -D_POSIX_PTHREAD_SEMANTICS" ;;
666 esac
667
668 # checking for a posix version of getpwnam_r
669 # if we are cross compiling and can not run the test
670 # assume getpwnam_r is the posix version
671 # it is up to the person cross compiling to change
672 # this behavior if desired
673 AC_LANG_PUSH(C)
674 AC_CACHE_CHECK([for posix getpwnam_r],
675                 ac_cv_func_posix_getpwnam_r,
676                 [AC_RUN_IFELSE([AC_LANG_PROGRAM(
677 [[
678 #include <errno.h>
679 #include <pwd.h>
680 ]],
681 [[
682     char buffer[10000];
683     struct passwd pwd, *pwptr = &pwd;
684     int error;
685     errno = 0;
686     error = getpwnam_r ("", &pwd, buffer,
687                         sizeof (buffer), &pwptr);
688    return (error < 0 && errno == ENOSYS)
689            || error == ENOSYS;
690 ]])],
691         [ac_cv_func_posix_getpwnam_r=yes],
692         [ac_cv_func_posix_getpwnam_r=no],
693         [ac_cv_func_posix_getpwnam_r=yes]
694 )])
695 AC_LANG_POP(C)
696
697 if test "$ac_cv_func_posix_getpwnam_r" = yes; then
698         AC_DEFINE(HAVE_POSIX_GETPWNAM_R,1,
699                 [Have POSIX function getpwnam_r])
700 else
701         AC_CACHE_CHECK([for nonposix getpwnam_r],
702                 ac_cv_func_nonposix_getpwnam_r,
703                 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pwd.h>]], [[char buffer[10000];
704                         struct passwd pwd;
705                         getpwnam_r ("", &pwd, buffer,
706                                         sizeof (buffer));]])],
707                         [ac_cv_func_nonposix_getpwnam_r=yes],
708                         [ac_cv_func_nonposix_getpwnam_r=no])])
709                 if test "$ac_cv_func_nonposix_getpwnam_r" = yes; then
710                 AC_DEFINE(HAVE_NONPOSIX_GETPWNAM_R,1,
711                         [Have non-POSIX function getpwnam_r])
712         fi
713 fi
714
715 dnl check for socklen_t
716 AC_MSG_CHECKING(whether socklen_t is defined)
717 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
718 #include <sys/types.h>
719 #include <sys/socket.h>
720 #include <netdb.h>
721 ]], [[
722 socklen_t foo;
723 foo = 1;
724 ]])],
725 [dbus_have_socklen_t=yes],
726 [dbus_have_socklen_t=no])
727 AC_MSG_RESULT($dbus_have_socklen_t)
728
729 if test "x$dbus_have_socklen_t" = "xyes"; then
730     AC_DEFINE(HAVE_SOCKLEN_T,1,[Have socklen_t type])
731 fi
732
733 dnl check for writev header and writev function so we're
734 dnl good to go if HAVE_WRITEV gets defined.
735 AC_CHECK_HEADERS(sys/uio.h, [AC_CHECK_FUNCS(writev)])
736
737 dnl needed on darwin for NAME_MAX
738 AC_CHECK_HEADERS(sys/syslimits.h)
739
740 dnl Make it easy to check if we have MSG_NOSIGNAL without actually having to include sys/socket.h
741 AC_CHECK_DECLS([MSG_NOSIGNAL], [], [], [[ #include <sys/socket.h> ]])
742
743 dnl check for flavours of varargs macros (test from GLib)
744 AC_MSG_CHECKING(for ISO C99 varargs macros in C)
745 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
746 int a(int p1, int p2, int p3);
747 #define call_a(...) a(1,__VA_ARGS__)
748 call_a(2,3);
749 ]])],
750 [dbus_have_iso_c_varargs=yes],
751 [dbus_have_iso_c_varargs=no])
752 AC_MSG_RESULT($dbus_have_iso_c_varargs)
753
754 AC_MSG_CHECKING(for GNUC varargs macros)
755 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
756 int a(int p1, int p2, int p3);
757 #define call_a(params...) a(1,params)
758 call_a(2,3);
759 ]])],
760 [dbus_have_gnuc_varargs=yes],
761 [dbus_have_gnuc_varargs=no])
762 AC_MSG_RESULT($dbus_have_gnuc_varargs)
763
764 dnl Output varargs tests
765 if test x$dbus_have_iso_c_varargs = xyes; then
766     AC_DEFINE(HAVE_ISO_VARARGS,1,[Have ISO C99 varargs macros])
767 fi
768 if test x$dbus_have_gnuc_varargs = xyes; then
769     AC_DEFINE(HAVE_GNUC_VARARGS,1,[Have GNU-style varargs macros])
770 fi
771
772 dnl Check for various credentials.
773 AC_MSG_CHECKING(for struct cmsgcred)
774 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
775 #include <sys/types.h>
776 #include <sys/socket.h>
777 ]], [[
778 struct cmsgcred cred;
779
780 cred.cmcred_pid = 0;
781 ]])],
782 [dbus_have_struct_cmsgcred=yes],
783 [dbus_have_struct_cmsgcred=no])
784 AC_MSG_RESULT($dbus_have_struct_cmsgcred)
785
786 if test x$dbus_have_struct_cmsgcred = xyes; then
787     AC_DEFINE(HAVE_CMSGCRED,1,[Have cmsgcred structure])
788 fi
789
790 AC_CHECK_FUNCS(getpeerucred getpeereid)
791
792 AC_CHECK_FUNCS(pipe2 accept4)
793
794 #### Abstract sockets
795
796 if test x$enable_abstract_sockets = xauto; then
797 AC_LANG_PUSH(C)
798 warn_on_xcompile=no
799 AC_CACHE_CHECK([abstract socket namespace],
800                 ac_cv_have_abstract_sockets,
801                 [AC_RUN_IFELSE([AC_LANG_PROGRAM(
802 [[
803 #include <sys/types.h>
804 #include <stdlib.h>
805 #include <string.h>
806 #include <stdio.h>
807 #include <sys/socket.h>
808 #include <sys/un.h>
809 #include <errno.h>
810 ]],
811 [[
812   size_t slen;
813   int listen_fd;
814   struct sockaddr_un addr;
815
816   listen_fd = socket (PF_UNIX, SOCK_STREAM, 0);
817
818   if (listen_fd < 0)
819     {
820       fprintf (stderr, "socket() failed: %s\n", strerror (errno));
821       exit (1);
822     }
823
824   memset (&addr, '\0', sizeof (addr));
825   addr.sun_family = AF_UNIX;
826   strcpy (addr.sun_path, "X/tmp/dbus-fake-socket-path-used-in-configure-test");
827   /* SUN_LEN uses strlen() so need to calculate it before adding \0 at the
828    * beginning.
829    */
830   slen = SUN_LEN(&addr);
831   addr.sun_path[0] = '\0'; /* this is what makes it abstract */
832
833   if (bind (listen_fd, (struct sockaddr*) &addr, slen) < 0)
834     {
835        fprintf (stderr, "Abstract socket namespace bind() failed: %s\n",
836                 strerror (errno));
837        exit (1);
838     }
839   else
840     exit (0);
841 ]])],
842               [ac_cv_have_abstract_sockets=yes],
843               [ac_cv_have_abstract_sockets=no],
844               [
845                 ac_cv_have_abstract_sockets=no
846                 warn_on_xcompile=yes
847               ]
848 )])
849 if test x$warn_on_xcompile = xyes ; then
850   AC_MSG_WARN([Cannot check for abstract sockets when cross-compiling, please use --enable-abstract-sockets])
851 fi
852 AC_LANG_POP(C)
853 fi
854
855 if test x$enable_abstract_sockets = xyes; then
856     if test x$ac_cv_have_abstract_sockets = xno; then
857         AC_MSG_ERROR([Abstract sockets explicitly required, and support not detected.])
858     fi
859 fi
860
861 if test x$enable_abstract_sockets = xno; then
862    ac_cv_have_abstract_sockets=no;
863 fi
864
865 if test x$ac_cv_have_abstract_sockets = xyes ; then
866    DBUS_PATH_OR_ABSTRACT=abstract
867    AC_DEFINE(HAVE_ABSTRACT_SOCKETS,1,[Have abstract socket namespace])
868 else
869    DBUS_PATH_OR_ABSTRACT=path
870 fi
871
872 # this is used in addresses to prefer abstract, e.g.
873 # unix:path=/foo or unix:abstract=/foo
874 AC_SUBST(DBUS_PATH_OR_ABSTRACT)
875
876 PKG_PROG_PKG_CONFIG
877
878 #### Sort out XML library
879
880 # see what we have
881 AC_CHECK_LIB(expat, XML_ParserCreate_MM,
882              [ AC_CHECK_HEADERS(expat.h, have_expat=true, have_expat=false) ],
883              have_expat=false)
884
885 # see what we want to use
886 dbus_use_libxml=false
887 dbus_use_expat=false
888 if test x$with_xml = xexpat; then
889         if ! $have_expat ; then
890            AC_MSG_ERROR([Explicitly requested expat but expat not found])
891         fi
892         dbus_use_expat=true
893 elif test x$with_xml = xlibxml; then
894         PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.6.0, have_libxml=true, have_libxml=false)
895         if ! $have_libxml ; then
896            AC_MSG_ERROR([Explicitly requested libxml but libxml not found])
897         fi
898         dbus_use_libxml=true
899 else
900         ### expat is the default because libxml can't currently survive
901         ### our brutal OOM-handling unit test setup.
902         ### http://bugzilla.gnome.org/show_bug.cgi?id=109368
903         if test x$have_expat = xfalse; then
904                 AC_MSG_ERROR([Could not find expat.h, check config.log for failed attempts])
905         fi
906         ### By default, only use Expat since it's tested and known to work.  If you're a
907         ### general-purpose OS vendor, please don't enable libxml.  For embedded use
908         ### if your OS is built around libxml, that's another case.
909         dbus_use_expat=true
910 fi
911
912 AM_CONDITIONAL(DBUS_USE_EXPAT, $dbus_use_expat)
913 AM_CONDITIONAL(DBUS_USE_LIBXML, $dbus_use_libxml)
914
915 if $dbus_use_expat; then
916    XML_LIBS=-lexpat
917    XML_CFLAGS=
918 fi
919 if $dbus_use_libxml; then
920    XML_LIBS=$LIBXML_LIBS
921    XML_CFLAGS=$LIBXML_CFLAGS
922 fi
923 AC_SUBST([XML_CFLAGS])
924 AC_SUBST([XML_LIBS])
925
926 # Thread lib detection
927 AC_CHECK_FUNC(pthread_cond_timedwait,[AC_CHECK_LIB(pthread,pthread_cond_timedwait,
928                                                     [THREAD_LIBS="-lpthread"])])
929 save_libs="$LIBS"
930 LIBS="$LIBS $THREAD_LIBS"
931 AC_CHECK_FUNC(pthread_condattr_setclock,have_pthread_condattr_setclock=true,have_pthread_condattr_setclock=false)
932 if test x$have_pthread_condattr_setclock = xtrue; then
933     AC_SEARCH_LIBS([clock_getres],[rt],[THREAD_LIBS="$THREAD_LIBS -lrt"])
934     AC_MSG_CHECKING([for CLOCK_MONOTONIC])
935     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <time.h>
936 #include <pthread.h>
937 ]], [[
938 struct timespec monotonic_timer;
939 pthread_condattr_t attr;
940 pthread_condattr_init (&attr);
941 pthread_condattr_setclock (&attr, CLOCK_MONOTONIC);
942 clock_getres (CLOCK_MONOTONIC,&monotonic_timer);
943 ]])],
944 [have_clock_monotonic=true],
945 [have_clock_monotonic=false])
946 if test x$have_clock_monotonic = xtrue; then
947     AC_MSG_RESULT([found])
948     AC_DEFINE(HAVE_MONOTONIC_CLOCK, 1, [Define if we have CLOCK_MONOTONIC])
949 else
950     AC_MSG_RESULT([not found])
951 fi
952 fi
953 LIBS="$save_libs"
954
955 AC_SUBST([THREAD_LIBS])
956
957 # SELinux detection
958 if test x$enable_selinux = xno ; then
959     have_selinux=no;
960 else
961     # See if we have SELinux library
962     AC_CHECK_LIB(selinux, is_selinux_enabled,
963                  have_selinux=yes, have_selinux=no)
964
965     # see if we have the SELinux header with the new D-Bus stuff in it
966     if test x$have_selinux = xyes ; then
967         AC_MSG_CHECKING([for DBUS Flask permissions in selinux/av_permissions.h])
968         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <selinux/av_permissions.h>]],
969                           [[#ifdef DBUS__ACQUIRE_SVC return 0;
970                             #else
971                             #error DBUS__ACQUIRE_SVC not defined
972                             #endif]])],
973                           [have_selinux=yes],
974                           [have_selinux=no])
975         AC_MSG_RESULT($have_selinux)
976     fi
977
978     if test x$enable_selinux = xauto ; then
979         if test x$have_selinux = xno ; then
980                 AC_MSG_WARN([Sufficiently new SELinux library not found])
981         fi
982     else
983         if test x$have_selinux = xno ; then
984                 AC_MSG_ERROR([SElinux explicitly required, and SELinux library not found])
985         fi
986     fi
987 fi
988
989 AM_CONDITIONAL(HAVE_SELINUX, test x$have_selinux = xyes)
990
991 if test x$have_selinux = xyes ; then
992     # the selinux code creates threads
993     # which requires libpthread even on linux
994     AC_CHECK_FUNC(pthread_create,,[AC_CHECK_LIB(pthread,pthread_create,
995                                                 [SELINUX_THREAD_LIBS="-lpthread"])])
996
997     SELINUX_LIBS="-lselinux $SELINUX_THREAD_LIBS"
998     AC_DEFINE(HAVE_SELINUX,1,[SELinux support])
999 else
1000     SELINUX_LIBS=
1001 fi
1002
1003 # inotify checks
1004 if test x$enable_inotify = xno ; then
1005     have_inotify=no;
1006 else
1007     AC_CHECK_HEADERS(sys/inotify.h, have_inotify=yes, have_inotify=no)
1008 fi
1009
1010 dnl check if inotify backend is enabled
1011 if test x$have_inotify = xyes; then
1012    AC_DEFINE(DBUS_BUS_ENABLE_INOTIFY,1,[Use inotify])
1013    AC_CHECK_FUNCS(inotify_init1)
1014 fi
1015
1016 AM_CONDITIONAL(DBUS_BUS_ENABLE_INOTIFY, test x$have_inotify = xyes)
1017
1018 # dnotify checks
1019 if test x$enable_dnotify = xno ; then
1020     have_dnotify=no;
1021 else
1022     if test x$have_inotify = xno -a x$host_os = xlinux-gnu -o x$host_os = xlinux; then
1023         have_dnotify=yes;
1024     else
1025         have_dnotify=no;
1026     fi
1027 fi
1028
1029 dnl check if dnotify backend is enabled
1030 if test x$have_dnotify = xyes; then
1031    AC_DEFINE(DBUS_BUS_ENABLE_DNOTIFY_ON_LINUX,1,[Use dnotify on Linux])
1032 fi
1033
1034 AM_CONDITIONAL(DBUS_BUS_ENABLE_DNOTIFY_ON_LINUX, test x$have_dnotify = xyes)
1035
1036 # kqueue checks
1037 if test x$enable_kqueue = xno ; then
1038     have_kqueue=no
1039 else
1040     have_kqueue=yes
1041     AC_CHECK_HEADER(sys/event.h, , have_kqueue=no)
1042     AC_CHECK_FUNC(kqueue, , have_kqueue=no)
1043
1044     if test x$enable_kqueue = xyes -a x$have_kqueue = xno; then
1045         AC_MSG_ERROR(kqueue support explicitly enabled but not available)
1046     fi
1047 fi
1048
1049 dnl check if kqueue backend is enabled
1050 if test x$have_kqueue = xyes; then
1051    AC_DEFINE(DBUS_BUS_ENABLE_KQUEUE,1,[Use kqueue])
1052 fi
1053
1054 AM_CONDITIONAL(DBUS_BUS_ENABLE_KQUEUE, test x$have_kqueue = xyes)
1055
1056 # launchd checks
1057 if test x$enable_launchd = xno ; then
1058     have_launchd=no
1059 else
1060     have_launchd=yes
1061     AC_CHECK_HEADER([launch.h], , have_launchd=no)
1062     AC_PATH_PROG([LAUNCHCTL], [launchctl])
1063     if test "x$LAUNCHCTL" = "x"; then
1064         have_launchd=no
1065     fi
1066
1067     if test x$enable_launchd = xyes && test x$have_launchd = xno ; then
1068         AC_MSG_ERROR([launchd support explicitly enabled but not available])
1069     fi
1070 fi
1071
1072 dnl check if launchd is enabled
1073 if test x$have_launchd = xyes; then
1074     AC_DEFINE(DBUS_ENABLE_LAUNCHD,1,[Use launchd autolaunch])
1075 fi
1076
1077 AM_CONDITIONAL(DBUS_ENABLE_LAUNCHD, test x$have_launchd = xyes)
1078
1079 #### Directory to place launchd agent file
1080 if test "x$with_launchd_agent_dir" = "x"; then
1081    LAUNCHD_AGENT_DIR="/Library/LaunchAgents"
1082 else
1083    LAUNCHD_AGENT_DIR="$with_launchd_agent_dir"
1084 fi
1085
1086 AC_SUBST(LAUNCHD_AGENT_DIR)
1087
1088 dnl console owner file
1089 if test x$enable_console_owner_file = xno ; then
1090     have_console_owner_file=no;
1091 else
1092     case $host_os in
1093     solaris*)
1094         have_console_owner_file=yes;
1095         AC_DEFINE(HAVE_CONSOLE_OWNER_FILE,1,[Have console owner file])
1096         ;;
1097     *)
1098         have_console_owner_file=no;;
1099     esac
1100 fi
1101
1102 AM_CONDITIONAL(HAVE_CONSOLE_OWNER_FILE, test x$have_console_owner_file = xyes)
1103
1104 # libaudit detection
1105 if test x$enable_libaudit = xno ; then
1106     have_libaudit=no;
1107 else
1108     # See if we have audit daemon & capabilities library
1109     AC_CHECK_LIB(audit, audit_log_user_avc_message,
1110                  have_libaudit=yes, have_libaudit=no)
1111     if test x$have_libaudit = xyes ; then
1112         AC_CHECK_LIB(cap-ng, capng_clear,
1113                  have_libaudit=yes, have_libaudit=no)
1114     fi
1115 fi
1116
1117 AM_CONDITIONAL(HAVE_LIBAUDIT, test x$have_libaudit = xyes)
1118
1119 if test x$have_libaudit = xyes ; then
1120     SELINUX_LIBS="$SELINUX_LIBS -laudit -lcap-ng"
1121     AC_DEFINE(HAVE_LIBAUDIT,1,[audit daemon SELinux support])
1122 fi
1123
1124 AC_SUBST([SELINUX_LIBS])
1125
1126 # Check for ADT API (Solaris Basic Security Mode auditing)
1127 AC_MSG_CHECKING(for ADT API)
1128 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1129 #include <bsm/adt.h>
1130 adt_user_context = ADT_USER;
1131 ]], [[]])], [ check_adt_audit=yes ], [ check_adt_audit=no ])
1132
1133 if test ${check_adt_audit} = yes
1134 then
1135    AC_DEFINE([HAVE_ADT], [], [Adt audit API])
1136    ADT_LIBS="-lbsm"
1137    LIBS="-lbsm $LIBS"
1138    AC_MSG_RESULT(yes)
1139 else
1140    AC_MSG_RESULT(no)
1141 fi
1142 AC_SUBST([ADT_LIBS])
1143
1144 # Check for SCM_RIGHTS
1145 AC_MSG_CHECKING([for SCM_RIGHTS])
1146 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1147 #include <sys/socket.h>
1148 #include <sys/un.h>
1149 static int x = SCM_RIGHTS;
1150 ]], [[]])],
1151 [ AC_MSG_RESULT([supported])
1152   AC_DEFINE([HAVE_UNIX_FD_PASSING], [1], [Supports sending UNIX file descriptors]) ],
1153 [ AC_MSG_RESULT([not supported]) ])
1154
1155 NETWORK_libs=
1156 if test x$dbus_win = xyes ; then
1157   if test x$dbus_wince = xyes ; then
1158     NETWORK_libs="-lws2"
1159   else
1160     NETWORK_libs="-lws2_32"
1161   fi
1162 fi
1163
1164 AC_SUBST([NETWORK_libs])
1165
1166 #### Set up final flags
1167 LIBDBUS_LIBS="$THREAD_LIBS $NETWORK_libs"
1168 AC_SUBST([LIBDBUS_LIBS])
1169
1170 ### X11 detection
1171 DBUS_X_LIBS=
1172 DBUS_X_CFLAGS=
1173
1174 AC_ARG_ENABLE([x11-autolaunch],
1175   AS_HELP_STRING([--enable-x11-autolaunch], [build with X11 auto-launch support]),
1176   [], [enable_x11_autolaunch=auto])
1177
1178 if test "x$dbus_win" = xyes; then
1179     if test "x$enable_x11_autolaunch" = xyes; then
1180         AC_MSG_ERROR([X11 auto-launch is not supported on Windows])
1181     fi
1182
1183     enable_x11_autolaunch=no
1184     have_x11=no
1185 else
1186     AC_PATH_XTRA
1187
1188     if test "x$no_x" = xyes; then
1189         have_x11=no
1190     else
1191         have_x11=yes
1192         DBUS_X_LIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
1193         DBUS_X_CFLAGS="$X_CFLAGS"
1194     fi
1195 fi
1196
1197 if test "x$enable_x11_autolaunch,$have_x11" = xyes,no; then
1198     AC_MSG_ERROR([X11 auto-launch requires X headers/libraries])
1199 else
1200     # move from "auto" to "yes" or "no" if necessary
1201     if test "x$enable_x11_autolaunch" != xno; then
1202         enable_x11_autolaunch="$have_x11"
1203     fi
1204 fi
1205
1206 if test "x$have_x11" = xyes ; then
1207    AC_DEFINE([DBUS_BUILD_X11], [1], [Define to build X11 functionality])
1208 fi
1209
1210 if test "x$enable_x11_autolaunch" = xyes ; then
1211    AC_DEFINE([DBUS_ENABLE_X11_AUTOLAUNCH], [1], [Define to enable X11 auto-launch])
1212 fi
1213
1214 AC_SUBST([DBUS_X_CFLAGS])
1215 AC_SUBST([DBUS_X_LIBS])
1216
1217 #### gcc warning flags
1218
1219 cc_supports_flag() {
1220   AC_MSG_CHECKING(whether $CC supports "$*")
1221   save_CFLAGS="$CFLAGS"
1222   CFLAGS="$*"
1223   AC_TRY_COMPILE([], [], [rc=yes], [rc=no])
1224   CFLAGS="$save_CFLAGS"
1225   AC_MSG_RESULT([$rc])
1226   test "x$rc" = xyes
1227 }
1228
1229 TP_COMPILER_WARNINGS([WARNING_CFLAGS],
1230   dnl Use -Werror by default if:
1231   dnl - we're not on Windows (too many warnings), and
1232   dnl - we're in maintainer mode (a D-Bus developer, not a distro or end-user)
1233   dnl Override with --enable-Werror or --disable-Werror
1234   [test x$dbus_win != xyes -a x$dbus_cygwin != xyes -a x$USE_MAINTAINER_MODE = xyes],
1235
1236   dnl enable these warnings if possible:
1237   [all \
1238    char-subscripts \
1239    missing-declarations \
1240    missing-prototypes \
1241    nested-externs \
1242    pointer-arith \
1243    cast-align \
1244    no-address \
1245    float-equal \
1246    declaration-after-statement \
1247   ],
1248
1249   dnl disable these warnings if possible, make them non-fatal if possible,
1250   dnl and don't enable -Werror unless we succeeded:
1251   dnl (unused is by design, sign-compare and pointer-sign are fd.o #17433)
1252   [unused \
1253    sign-compare \
1254    pointer-sign \
1255   ])
1256
1257 if test "x$GCC" = "xyes"; then
1258   # We're treating -fno-common like a warning: it makes the linker more
1259   # strict, because on some systems the linker is *always* this strict
1260   TP_ADD_COMPILER_FLAG([WARNING_CFLAGS], [-fno-common])
1261
1262   # http://bugs.freedesktop.org/show_bug.cgi?id=10599
1263   TP_ADD_COMPILER_FLAG([WARNING_CFLAGS], [-fno-strict-aliasing])
1264
1265   if test "x$enable_ansi" = "xyes"; then
1266     TP_ADD_COMPILER_FLAG([WARNING_CFLAGS],
1267       [-ansi -D_POSIX_C_SOURCE=199309L -D_BSD_SOURCE -pedantic])
1268   fi
1269 fi
1270
1271 dnl In principle we should put WARNING_CFLAGS in each Makefile.am like
1272 dnl telepathy-glib does, since CFLAGS is meant to be reserved for the user...
1273 dnl but prepending to CFLAGS (so the user can override it with later CFLAGS)
1274 dnl is the next best thing
1275 CFLAGS="$WARNING_CFLAGS $CFLAGS"
1276
1277 case $host_os in
1278     solaris*)
1279         # Solaris' C library apparently needs these runes to be threadsafe...
1280         CFLAGS="$CFLAGS -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT"
1281         # ... and this opt-in to get file descriptor passing support
1282         CFLAGS="$CFLAGS -D_XOPEN_SOURCE=500"
1283         ;;
1284 esac
1285
1286 ### Doxygen Documentation
1287
1288 AC_PATH_PROG(DOXYGEN, doxygen, no)
1289
1290 AC_MSG_CHECKING([whether to build Doxygen documentation])
1291
1292 if test x$DOXYGEN = xno ; then
1293     have_doxygen=no
1294 else
1295     have_doxygen=yes
1296 fi
1297
1298 if test x$enable_doxygen_docs = xauto ; then
1299     if test x$have_doxygen = xno ; then
1300         enable_doxygen_docs=no
1301     else
1302         enable_doxygen_docs=yes
1303     fi
1304 fi
1305
1306 if test x$enable_doxygen_docs = xyes; then
1307     if test x$have_doxygen = xno; then
1308         AC_MSG_ERROR([Building Doxygen docs explicitly required, but Doxygen not found])
1309     fi
1310 fi
1311
1312 AM_CONDITIONAL(DBUS_DOXYGEN_DOCS_ENABLED, test x$enable_doxygen_docs = xyes)
1313 AC_MSG_RESULT($enable_doxygen_docs)
1314
1315 AC_CHECK_PROGS([XSLTPROC], [xsltproc])
1316 AM_CONDITIONAL([DBUS_HAVE_XSLTPROC], [test "x$XSLTPROC" != "x"])
1317
1318 ### XML Documentation
1319
1320 AC_PATH_PROG(XMLTO, xmlto, no)
1321
1322 AC_MSG_CHECKING([whether to build XML documentation])
1323
1324 if test x$XMLTO = xno ; then
1325     have_xmlto=no
1326 else
1327     have_xmlto=yes
1328 fi
1329
1330 if test x$enable_xml_docs = xauto ; then
1331     if test x$have_xmlto = xno ; then
1332         enable_xml_docs=no
1333     else
1334         enable_xml_docs=yes
1335     fi
1336 fi
1337
1338 if test x$enable_xml_docs = xyes; then
1339     if test x$have_xmlto = xno; then
1340         AC_MSG_ERROR([Building XML docs explicitly required, but xmlto not found])
1341     fi
1342 fi
1343
1344 AM_CONDITIONAL(DBUS_XML_DOCS_ENABLED, test x$enable_xml_docs = xyes)
1345 AC_MSG_RESULT($enable_xml_docs)
1346
1347 AC_PATH_PROG([MAN2HTML], [man2html])
1348 AC_ARG_VAR([MAN2HTML], [Path to man2html (optional)])
1349 AM_CONDITIONAL(DBUS_HAVE_MAN2HTML, test x$MAN2HTML != x)
1350
1351 AM_CONDITIONAL(DBUS_CAN_UPLOAD_DOCS,
1352     test x$enable_doxygen_docs = xyes -a x$enable_xml_docs = xyes -a \
1353          x$MAN2HTML != x)
1354
1355 #### Have to go $localstatedir->$prefix/var->/usr/local/var
1356
1357 #### find the actual value for $prefix that we'll end up with
1358 ##   (I know this is broken and should be done in the Makefile, but
1359 ##    that's a major pain and almost nobody actually seems to care)
1360 AS_AC_EXPAND(EXPANDED_PREFIX, "$prefix")
1361 AS_AC_EXPAND(EXPANDED_LOCALSTATEDIR, "$localstatedir")
1362 AS_AC_EXPAND(EXPANDED_SYSCONFDIR, "$sysconfdir")
1363 AS_AC_EXPAND(EXPANDED_BINDIR, "$bindir")
1364 AS_AC_EXPAND(EXPANDED_LIBDIR, "$libdir")
1365 AS_AC_EXPAND(EXPANDED_LIBEXECDIR, "$libexecdir")
1366 AS_AC_EXPAND(EXPANDED_DATADIR, "$datadir")
1367
1368 #### Check our operating system
1369 operating_system=unknown
1370 if test -f /etc/redhat-release || test -f $EXPANDED_SYSCONFDIR/redhat-release ; then
1371    operating_system=redhat
1372 fi
1373
1374 if test -f /etc/slackware-version || test -f $EXPANDED_SYSCONFDIR/slackware-version ; then
1375    operating_system=slackware
1376 fi
1377
1378 if test -f /usr/bin/cygwin1.dll || test -f $EXPANDED_BINDIR/cygwin1.dll ; then
1379    operating_system=cygwin
1380 fi
1381
1382 #### Sort out init scripts
1383
1384 if test x$with_init_scripts = x; then
1385     case x$operating_system in
1386         xredhat)        with_init_scripts=redhat ;;
1387         xslackware)     with_init_scripts=slackware ;;
1388         xcygwin)        with_init_scripts=cygwin ;;
1389         *)                      with_init_scripts=none ;;
1390     esac
1391 fi
1392
1393 AM_CONDITIONAL(DBUS_INIT_SCRIPTS_RED_HAT, test x$with_init_scripts = xredhat)
1394 AM_CONDITIONAL(DBUS_INIT_SCRIPTS_SLACKWARE, test x$with_init_scripts = xslackware)
1395 AM_CONDITIONAL(DBUS_INIT_SCRIPTS_CYGWIN, test x$with_init_scripts = xcygwin)
1396
1397 ##### systemd unit files
1398 AC_ARG_WITH([systemdsystemunitdir],
1399 AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files]),
1400     [],
1401     [
1402     PKG_CHECK_EXISTS([systemd],
1403       [with_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)],
1404       [with_systemdsystemunitdir=no])
1405     ])
1406 if test "x$with_systemdsystemunitdir" != xno; then
1407    AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])
1408 fi
1409 AM_CONDITIONAL(HAVE_SYSTEMD, [test -n "$with_systemdsystemunitdir" -a "x$with_systemdsystemunitdir" != xno ])
1410
1411 ##### Set up location for system bus socket
1412 if ! test -z "$with_system_socket"; then
1413    DBUS_SYSTEM_SOCKET=$with_system_socket
1414 else
1415    DBUS_SYSTEM_SOCKET=${EXPANDED_LOCALSTATEDIR}/run/dbus/system_bus_socket
1416 fi
1417
1418 AC_SUBST(DBUS_SYSTEM_SOCKET)
1419 AC_DEFINE_UNQUOTED(DBUS_SYSTEM_SOCKET,"$DBUS_SYSTEM_SOCKET",[The name of the socket the system bus listens on by default])
1420
1421 ## system bus only listens on local domain sockets, and never
1422 ## on an abstract socket (so only root can create the socket)
1423 DBUS_SYSTEM_BUS_DEFAULT_ADDRESS="unix:path=$DBUS_SYSTEM_SOCKET"
1424 AC_SUBST(DBUS_SYSTEM_BUS_DEFAULT_ADDRESS)
1425 AC_DEFINE_UNQUOTED(DBUS_SYSTEM_BUS_DEFAULT_ADDRESS, "$DBUS_SYSTEM_BUS_DEFAULT_ADDRESS",[The default D-Bus address of the system bus])
1426
1427 #### Set up the pid file
1428 if ! test -z "$with_system_pid_file"; then
1429    DBUS_SYSTEM_PID_FILE=$with_system_pid_file
1430 elif test x$with_init_scripts = xredhat ; then
1431    DBUS_SYSTEM_PID_FILE=${EXPANDED_LOCALSTATEDIR}/run/messagebus.pid
1432 else
1433    DBUS_SYSTEM_PID_FILE=${EXPANDED_LOCALSTATEDIR}/run/dbus/pid
1434 fi
1435
1436 AC_SUBST(DBUS_SYSTEM_PID_FILE)
1437
1438 #### Directory to check for console ownership
1439 if ! test -z "$with_console_auth_dir"; then
1440    DBUS_CONSOLE_AUTH_DIR=$with_console_auth_dir
1441 else
1442    DBUS_CONSOLE_AUTH_DIR=/var/run/console/
1443 fi
1444
1445 AC_SUBST(DBUS_CONSOLE_AUTH_DIR)
1446 AC_DEFINE_UNQUOTED(DBUS_CONSOLE_AUTH_DIR, "$DBUS_CONSOLE_AUTH_DIR", [Directory to check for console ownerhip])
1447
1448 #### File to check for console ownership
1449 if test x$have_console_owner_file = xyes; then
1450    if ! test -z "$with_console_owner_file"; then
1451       DBUS_CONSOLE_OWNER_FILE=$with_console_owner_file
1452    else
1453       DBUS_CONSOLE_OWNER_FILE=/dev/console
1454    fi
1455 else
1456   DBUS_CONSOLE_OWNER_FILE=
1457 fi
1458
1459 AC_SUBST(DBUS_CONSOLE_OWNER_FILE)
1460 AC_DEFINE_UNQUOTED(DBUS_CONSOLE_OWNER_FILE, "$DBUS_CONSOLE_OWNER_FILE", [File to check for console ownerhip])
1461
1462 #### User to start the system bus as
1463 if test -z "$with_dbus_user" ; then
1464     DBUS_USER=messagebus
1465 else
1466     DBUS_USER=$with_dbus_user
1467 fi
1468 AC_SUBST(DBUS_USER)
1469 AC_DEFINE_UNQUOTED(DBUS_USER,"$DBUS_USER", [User for running the system BUS daemon])
1470
1471 #### Prefix to install into
1472 DBUS_PREFIX=$EXPANDED_PREFIX
1473 AC_SUBST(DBUS_PREFIX)
1474 AC_DEFINE_UNQUOTED(DBUS_PREFIX,"$DBUS_PREFIX", [Prefix for installing DBUS])
1475
1476 #### Direcotry to install data files into
1477 DBUS_DATADIR=$EXPANDED_DATADIR
1478 AC_SUBST(DBUS_DATADIR)
1479 AC_DEFINE_UNQUOTED(DBUS_DATADIR,"$DBUS_DATADIR", [Directory for installing DBUS data files])
1480
1481 #### Directory to install dbus-daemon
1482 if test -z "$with_dbus_daemondir" ; then
1483     DBUS_DAEMONDIR=$EXPANDED_BINDIR
1484 else
1485     DBUS_DAEMONDIR=$with_dbus_daemondir
1486 fi
1487 AC_SUBST(DBUS_DAEMONDIR)
1488 AC_DEFINE_UNQUOTED(DBUS_DAEMONDIR,"$DBUS_DAEMONDIR", [Directory for installing the DBUS daemon])
1489
1490 #### Directory to install the other binaries
1491 DBUS_BINDIR="$EXPANDED_BINDIR"
1492 AC_SUBST(DBUS_BINDIR)
1493 AC_DEFINE_UNQUOTED(DBUS_BINDIR,"$DBUS_BINDIR", [Directory for installing the binaries])
1494
1495 #### Directory to install the libexec binaries
1496 DBUS_LIBEXECDIR="$EXPANDED_LIBEXECDIR"
1497 AC_SUBST(DBUS_LIBEXECDIR)
1498 AC_DEFINE_UNQUOTED(DBUS_LIBEXECDIR,"$DBUS_LIBEXECDIR", [Directory for installing the libexec binaries])
1499
1500 #### Tell tests where to find certain stuff in builddir
1501
1502 DBUS_PWD=`pwd`
1503 # Useful in a cross-compilation environment, where the tests are run on the host system.
1504 AC_ARG_WITH(dbus-test-dir, AS_HELP_STRING([--with-dbus-test-dir=[dirname]],[path where the tests tools are available]),
1505                            DBUS_PWD=$withval)
1506 AC_DEFUN([TEST_PATH], [
1507 TEST_$1=${DBUS_PWD}/test/$2
1508 AC_DEFINE_UNQUOTED(TEST_$1, "$TEST_$1",
1509                    [Full path to test file test/$2 in builddir])
1510 AC_SUBST(TEST_$1)
1511 ])
1512 AC_DEFUN([TEST_PROG], [
1513 TEST_$1=${DBUS_PWD}/test/$2
1514 AC_DEFINE_UNQUOTED(TEST_$1, "$TEST_$1$EXEEXT",
1515                    [Full path to test file test/$2 in builddir])
1516 AC_SUBST(TEST_$1)
1517 ])
1518
1519 TEST_PATH(VALID_SERVICE_DIR, data/valid-service-files)
1520 TEST_PATH(INVALID_SERVICE_DIR, data/invalid-service-files)
1521 TEST_PATH(VALID_SERVICE_SYSTEM_DIR, data/valid-service-files-system)
1522 TEST_PATH(INVALID_SERVICE_SYSTEM_DIR, data/invalid-service-files-system)
1523 TEST_PROG(SERVICE_BINARY, test-service)
1524 TEST_PROG(SHELL_SERVICE_BINARY, test-shell-service)
1525 TEST_PROG(EXIT_BINARY, test-exit)
1526 TEST_PROG(SEGFAULT_BINARY, test-segfault)
1527 TEST_PROG(SLEEP_FOREVER_BINARY, test-sleep-forever)
1528 TEST_PROG(PRIVSERVER_BINARY, name-test/test-privserver)
1529
1530 AC_DEFINE_UNQUOTED(TEST_BUS_BINARY, "$DBUS_PWD/bus/dbus-daemon$EXEEXT",
1531                    [Full path to the daemon in the builddir])
1532 AC_SUBST(TEST_BUS_BINARY)
1533
1534 ## Export the non-setuid external helper
1535 TEST_LAUNCH_HELPER_BINARY="$DBUS_PWD/bus/dbus-daemon-launch-helper-test$EXEEXT"
1536 AC_SUBST(TEST_LAUNCH_HELPER_BINARY)
1537 AC_DEFINE_UNQUOTED(DBUS_TEST_LAUNCH_HELPER_BINARY, "$TEST_LAUNCH_HELPER_BINARY",
1538                    [Full path to the launch helper test program in the builddir])
1539
1540 #### Find socket directories
1541 if ! test -z "$TMPDIR" ; then
1542    DEFAULT_SOCKET_DIR=$TMPDIR
1543 elif ! test -z "$TEMP" ; then
1544    DEFAULT_SOCKET_DIR=$TEMP
1545 elif ! test -z "$TMP" ; then
1546    DEFAULT_SOCKET_DIR=$TMP
1547 else
1548    DEFAULT_SOCKET_DIR=/tmp
1549 fi
1550
1551 DEFAULT_SOCKET_DIR=`echo $DEFAULT_SOCKET_DIR | sed 's/+/%2B/g'`
1552
1553 if ! test -z "$with_test_socket_dir" ; then
1554    TEST_SOCKET_DIR="$with_test_socket_dir"
1555 else
1556    TEST_SOCKET_DIR=$DEFAULT_SOCKET_DIR
1557 fi
1558 AC_SUBST(TEST_SOCKET_DIR)
1559 AC_DEFINE_UNQUOTED(DBUS_TEST_SOCKET_DIR, "$TEST_SOCKET_DIR", [Where to put test sockets])
1560
1561 if ! test -z "$with_session_socket_dir" ; then
1562    DBUS_SESSION_SOCKET_DIR="$with_session_socket_dir"
1563 else
1564    DBUS_SESSION_SOCKET_DIR=$DEFAULT_SOCKET_DIR
1565 fi
1566 AC_DEFINE_UNQUOTED(DBUS_SESSION_SOCKET_DIR, "$DBUS_SESSION_SOCKET_DIR", [Where per-session bus puts its sockets])
1567 AC_SUBST(DBUS_SESSION_SOCKET_DIR)
1568
1569 if test x$dbus_win = xyes; then
1570         DBUS_SESSION_BUS_DEFAULT_ADDRESS="nonce-tcp:"
1571 elif test x$have_launchd = xyes; then
1572         DBUS_SESSION_BUS_DEFAULT_ADDRESS="launchd:env=DBUS_LAUNCHD_SESSION_BUS_SOCKET"
1573 else
1574         DBUS_SESSION_BUS_DEFAULT_ADDRESS="unix:tmpdir=$DBUS_SESSION_SOCKET_DIR"
1575 fi
1576 AC_SUBST(DBUS_SESSION_BUS_DEFAULT_ADDRESS)
1577
1578 # darwin needs this to initialize the environment
1579 AC_CHECK_HEADERS(crt_externs.h)
1580 AC_CHECK_FUNC(_NSGetEnviron, [AC_DEFINE(HAVE_NSGETENVIRON, 1, [Define if your system needs _NSGetEnviron to set up the environment])])
1581 AH_VERBATIM(_DARWIN_ENVIRON,
1582 [
1583 #if defined(HAVE_NSGETENVIRON) && defined(HAVE_CRT_EXTERNS_H)
1584 # include <sys/time.h>
1585 # include <crt_externs.h>
1586 # define environ (*_NSGetEnviron())
1587 #endif
1588 ])
1589
1590 AC_ARG_ENABLE([stats],
1591   [AS_HELP_STRING([--enable-stats],
1592     [enable bus daemon usage statistics])],
1593   [], [enable_stats=no])
1594 if test "x$enable_stats" = xyes; then
1595   AC_DEFINE([DBUS_ENABLE_STATS], [1],
1596     [Define to enable bus daemon usage statistics])
1597 fi
1598
1599 AC_CONFIG_FILES([
1600 Doxyfile
1601 dbus/versioninfo.rc
1602 dbus/dbus-arch-deps.h
1603 bus/system.conf
1604 bus/session.conf
1605 bus/messagebus
1606 bus/messagebus-config
1607 bus/org.freedesktop.dbus-session.plist
1608 bus/rc.messagebus
1609 bus/dbus.service
1610 bus/dbus.socket
1611 Makefile
1612 dbus/Makefile
1613 bus/Makefile
1614 tools/Makefile
1615 test/Makefile
1616 test/name-test/Makefile
1617 doc/Makefile
1618 doc/dbus-daemon.1
1619 dbus-1.pc
1620 dbus-1-uninstalled.pc
1621 test/data/valid-config-files/debug-allow-all.conf
1622 test/data/valid-config-files/debug-allow-all-sha1.conf
1623 test/data/valid-config-files-system/debug-allow-all-pass.conf
1624 test/data/valid-config-files-system/debug-allow-all-fail.conf
1625 test/data/valid-service-files/org.freedesktop.DBus.TestSuite.PrivServer.service
1626 test/data/valid-service-files/org.freedesktop.DBus.TestSuiteEchoService.service
1627 test/data/valid-service-files/org.freedesktop.DBus.TestSuiteForkingEchoService.service
1628 test/data/valid-service-files/org.freedesktop.DBus.TestSuiteSegfaultService.service
1629 test/data/valid-service-files/org.freedesktop.DBus.TestSuiteShellEchoServiceSuccess.service
1630 test/data/valid-service-files/org.freedesktop.DBus.TestSuiteShellEchoServiceFail.service
1631 test/data/valid-service-files-system/org.freedesktop.DBus.TestSuiteEchoService.service
1632 test/data/valid-service-files-system/org.freedesktop.DBus.TestSuiteSegfaultService.service
1633 test/data/valid-service-files-system/org.freedesktop.DBus.TestSuiteShellEchoServiceSuccess.service
1634 test/data/valid-service-files-system/org.freedesktop.DBus.TestSuiteShellEchoServiceFail.service
1635 test/data/invalid-service-files-system/org.freedesktop.DBus.TestSuiteNoExec.service
1636 test/data/invalid-service-files-system/org.freedesktop.DBus.TestSuiteNoUser.service
1637 test/data/invalid-service-files-system/org.freedesktop.DBus.TestSuiteNoService.service
1638 ])
1639 AC_OUTPUT
1640
1641 dnl ==========================================================================
1642 echo "
1643                     D-Bus $VERSION
1644                   ==============
1645
1646         prefix:                   ${EXPANDED_PREFIX}
1647         exec_prefix:              ${exec_prefix}
1648         libdir:                   ${EXPANDED_LIBDIR}
1649         libexecdir:               ${EXPANDED_LIBEXECDIR}
1650         bindir:                   ${EXPANDED_BINDIR}
1651         sysconfdir:               ${EXPANDED_SYSCONFDIR}
1652         localstatedir:            ${EXPANDED_LOCALSTATEDIR}
1653         datadir:                  ${EXPANDED_DATADIR}
1654         source code location:     ${srcdir}
1655         compiler:                 ${CC}
1656         cflags:                   ${CFLAGS}
1657         cppflags:                 ${CPPFLAGS}
1658         cxxflags:                 ${CXXFLAGS}
1659         64-bit int:               ${DBUS_INT64_TYPE}
1660         32-bit int:               ${DBUS_INT32_TYPE}
1661         16-bit int:               ${DBUS_INT16_TYPE}
1662         Doxygen:                  ${DOXYGEN:-not found}
1663         xmlto:                    ${XMLTO:-not found}
1664         man2html:                 ${MAN2HTML:-not found}"
1665
1666 echo "
1667         Maintainer mode:          ${USE_MAINTAINER_MODE}
1668         gcc coverage profiling:   ${enable_compiler_coverage}
1669         Building embedded tests:  ${enable_embedded_tests}
1670         Building modular tests:   ${enable_modular_tests}
1671         Building verbose mode:    ${enable_verbose_mode}
1672         Building assertions:      ${enable_asserts}
1673         Building checks:          ${enable_checks}
1674         Building bus stats API:   ${enable_stats}
1675         Building SELinux support: ${have_selinux}
1676         Building inotify support: ${have_inotify}
1677         Building dnotify support: ${have_dnotify}
1678         Building kqueue support:  ${have_kqueue}
1679         Building X11 code:        ${enable_x11}
1680         Building Doxygen docs:    ${enable_doxygen_docs}
1681         Building XML docs:        ${enable_xml_docs}
1682         Building cache support:   ${enable_userdb_cache}
1683         Building launchd support: ${have_launchd}
1684         Using XML parser:         ${with_xml}
1685         Init scripts style:       ${with_init_scripts}
1686         Abstract socket names:    ${ac_cv_have_abstract_sockets}
1687         System bus socket:        ${DBUS_SYSTEM_SOCKET}
1688         System bus address:       ${DBUS_SYSTEM_BUS_DEFAULT_ADDRESS}
1689         System bus PID file:      ${DBUS_SYSTEM_PID_FILE}
1690         Session bus address:      ${DBUS_SESSION_BUS_DEFAULT_ADDRESS}
1691         Console auth dir:         ${DBUS_CONSOLE_AUTH_DIR}
1692         Console owner file:       ${have_console_owner_file}
1693         Console owner file path:  ${DBUS_CONSOLE_OWNER_FILE}
1694         System bus user:          ${DBUS_USER}
1695         Session bus services dir: ${EXPANDED_DATADIR}/dbus-1/services
1696         'make check' socket dir:  ${TEST_SOCKET_DIR}
1697 "
1698 if test x$have_launchd = xyes; then
1699         echo "        launchd agent dir:        ${LAUNCHD_AGENT_DIR}"
1700 fi
1701 echo
1702
1703 if test x$enable_embedded_tests = xyes; then
1704         echo "NOTE: building with unit tests increases the size of the installed library and renders it insecure."
1705 fi
1706 if test x$enable_embedded_tests = xyes -a x$enable_asserts = xno; then
1707         echo "NOTE: building with embedded tests but without assertions means tests may not properly report failures (this configuration is only useful when doing something like profiling the tests)"
1708 fi
1709 if test x$enable_compiler_coverage = xyes; then
1710         echo "NOTE: building with coverage profiling is definitely for developers only."
1711 fi
1712 if test x$enable_verbose_mode = xyes; then
1713         echo "NOTE: building with verbose mode increases library size, may slightly increase security risk, and decreases performance."
1714 fi
1715 if test x$enable_asserts = xyes; then
1716         echo "NOTE: building with assertions increases library size and decreases performance."
1717 fi
1718 if test x$enable_checks = xno; then
1719         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."
1720 fi
1721 if test x$dbus_use_libxml = xtrue; then
1722         echo
1723         echo "WARNING: You have chosen to use libxml as your xml parser however this code path is not maintained by the D-Bus developers and if it breaks you get to keep the pieces.  If you have selected this option in err please reconfigure with expat (e.g. --with-xml=expat)."
1724 fi
1725
1726 if test "x$DBUS_HAVE_INT64" = x0; then
1727   AC_MSG_WARN([You have disabled 64-bit integers via --without-64-bit.
1728
1729   This removes parts of the standard D-Bus API and ABI (the 't' and 'x'
1730   typecodes, the dbus_int64_t and dbus_uint64_t types, etc.) and should only be
1731   used if your compiler lacks support for 64-bit integers. Please report a bug
1732   with details of your platform and compiler.
1733
1734   This option is likely to be removed in future, unless the D-Bus developers
1735   receive reports that it is still needed.
1736   ])
1737 fi