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