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