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