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