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