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