_dbus_listen_tcp_socket: unify cleanup for EADDRINUSE and other failures
[platform/upstream/dbus.git] / configure.in
1 dnl -*- mode: m4 -*-
2 AC_PREREQ(2.52)
3
4 m4_define([dbus_major_version], [1])
5 m4_define([dbus_minor_version], [4])
6 m4_define([dbus_micro_version], [3])
7 m4_define([dbus_version],
8           [dbus_major_version.dbus_minor_version.dbus_micro_version])
9 AC_INIT(dbus, [dbus_version])
10
11 AC_CANONICAL_HOST
12 AC_LIBTOOL_WIN32_DLL
13 AC_LIBTOOL_RC
14
15 AC_CONFIG_MACRO_DIR([m4])
16
17 AM_INIT_AUTOMAKE([1.9 tar-ustar -Wno-portability])
18 AM_CONFIG_HEADER(config.h)
19
20 # Honor aclocal flags
21 ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
22
23 GETTEXT_PACKAGE=dbus-1
24 AC_SUBST(GETTEXT_PACKAGE)
25 AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[The name of the gettext domain])
26
27  ## must come before we use the $USE_MAINTAINER_MODE variable later
28 AM_MAINTAINER_MODE
29
30 m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
31
32 AC_DEFINE_UNQUOTED(DBUS_DAEMON_NAME,"dbus-daemon",[Name of executable])
33
34 # libtool versioning - this applies to libdbus
35 #
36 # See http://sources.redhat.com/autobook/autobook/autobook_91.html#SEC91 for details
37 #
38
39 ## increment if the interface has additions, changes, removals.
40 LT_CURRENT=8
41
42 ## increment any time the source changes; set to
43 ##  0 if you increment CURRENT
44 LT_REVISION=3
45
46 ## increment if any interfaces have been added; set to 0
47 ## if any interfaces have been changed or removed. removal has
48 ## precedence over adding, so set to 0 if both happened.
49 LT_AGE=5
50
51 AC_SUBST(LT_CURRENT)
52 AC_SUBST(LT_REVISION)
53 AC_SUBST(LT_AGE)
54
55 DBUS_MAJOR_VERSION=dbus_major_version
56 DBUS_MINOR_VERSION=dbus_minor_version
57 DBUS_MICRO_VERSION=dbus_micro_version
58 DBUS_VERSION=dbus_major_version.dbus_minor_version.dbus_micro_version
59
60 AC_SUBST(DBUS_MAJOR_VERSION)
61 AC_SUBST(DBUS_MINOR_VERSION)
62 AC_SUBST(DBUS_MICRO_VERSION)
63 AC_SUBST(DBUS_VERSION)
64
65 AC_PROG_CC
66 AM_PROG_CC_C_O
67 AC_PROG_CXX
68 AC_USE_SYSTEM_EXTENSIONS
69 AC_ISC_POSIX
70 AC_HEADER_STDC
71 AC_C_INLINE
72 AM_PROG_LIBTOOL
73 AC_PROG_MKDIR_P
74
75 # Set some internal variables depending on the platform for later use.
76 dbus_win=no
77 dbus_cygwin=no
78 dbus_unix=no
79 case "${host}" in
80     *-mingw32ce*)
81         dbus_win=yes
82         dbus_wince=yes
83         ;;
84     *-mingw32*)
85         dbus_win=yes
86         ;;
87     *-cygwin*)
88         dbus_cygwin=yes
89         dbus_unix=yes
90         ;;
91     *)
92         dbus_unix=yes
93        ;;
94 esac
95
96 # Special defines for certain platforms
97 if test "$dbus_win" = yes; then
98     AC_DEFINE(DBUS_WIN,1,[Defined if we run on a W32 API based system])
99     BUILD_TIMESTAMP=`date --iso-8601=minutes`
100     AC_SUBST(BUILD_TIMESTAMP)
101     # Assume DBUS_VERSION is always three numbers
102     BUILD_FILEVERSION=`echo "$DBUS_VERSION" | sed -e 's/\./,/g'`,0
103     AC_SUBST(BUILD_FILEVERSION)
104     AC_CHECK_TOOL(WINDRES, windres, no)
105     if test "$WINDRES" = no; then
106       AC_MSG_ERROR([*** Could not find an implementation of windres in your PATH.])
107     fi
108     if test "$dbus_wince" = yes; then
109       AC_DEFINE(DBUS_WINCE,1,[Defined if we run on a W32 CE API based system])
110       AC_DEFINE(_WIN32_WCE, 0x0502, [Defined to get newer W32 CE APIs])
111     fi
112 else
113     AC_DEFINE(DBUS_UNIX,1,[Defined if we run on a Unix-based system])
114 fi
115 if test "$dbus_cygwin" = yes; then
116     AC_DEFINE(DBUS_CYGWIN,1,[Defined if we run on a cygwin API based system])
117 fi
118
119 AM_CONDITIONAL(DBUS_WIN, test "$dbus_win" = yes)
120 AM_CONDITIONAL(DBUS_WINCE, test "$dbus_wince" = yes)
121 AM_CONDITIONAL(DBUS_UNIX, test "$dbus_unix" = yes)
122 AM_CONDITIONAL(DBUS_CYGWIN, test "$dbus_cygwin" = yes)
123
124 AC_ARG_ENABLE(tests, AS_HELP_STRING([--enable-tests],[enable unit test code]),enable_tests=$enableval,enable_tests=$USE_MAINTAINER_MODE)
125 AC_ARG_ENABLE(ansi, AS_HELP_STRING([--enable-ansi],[enable -ansi -pedantic gcc flags]),enable_ansi=$enableval,enable_ansi=no)
126 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)
127 AC_ARG_ENABLE(asserts, AS_HELP_STRING([--enable-asserts],[include assertion checks]),enable_asserts=$enableval,enable_asserts=$USE_MAINTAINER_MODE)
128 AC_ARG_ENABLE(checks, AS_HELP_STRING([--enable-checks],[include sanity checks on public API]),enable_checks=$enableval,enable_checks=yes)
129 AC_ARG_ENABLE(xml-docs, AS_HELP_STRING([--enable-xml-docs],[build XML documentation (requires xmlto)]),enable_xml_docs=$enableval,enable_xml_docs=auto)
130 AC_ARG_ENABLE(doxygen-docs, AS_HELP_STRING([--enable-doxygen-docs],[build DOXYGEN documentation (requires Doxygen)]),enable_doxygen_docs=$enableval,enable_doxygen_docs=auto)
131 AC_ARG_ENABLE(gcov, AS_HELP_STRING([--enable-gcov],[compile with coverage profiling instrumentation (gcc only)]),enable_gcov=$enableval,enable_gcov=no)
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     AC_DEFINE(G_DISABLE_ASSERT,1,[Disable GLib assertion macros])
168     R_DYNAMIC_LDFLAG=""
169 else
170     # -rdynamic is needed for glibc's backtrace_symbols to work.
171     # No clue how much overhead this adds, but it's useful
172     # to do this on any assertion failure,
173     # so for now it's enabled anytime asserts are (currently not
174     # in production builds).
175
176     # To get -rdynamic you pass -export-dynamic to libtool.
177     AC_DEFINE(DBUS_BUILT_R_DYNAMIC,1,[whether -export-dynamic was passed to libtool])
178     R_DYNAMIC_LDFLAG=-export-dynamic
179 fi
180 AC_SUBST(R_DYNAMIC_LDFLAG)
181
182 if test x$enable_checks = xno; then
183     AC_DEFINE(DBUS_DISABLE_CHECKS,1,[Disable public API sanity checking])
184     AC_DEFINE(G_DISABLE_CHECKS,1,[Disable GLib public API sanity checking])
185 fi
186
187 if test x$enable_userdb_cache = xyes; then
188     AC_DEFINE(DBUS_ENABLE_USERDB_CACHE,1,[Build with caching of user data])
189 fi
190
191 if test x$enable_gcov = xyes; then
192      ## so that config.h changes when you toggle gcov support
193      AC_DEFINE_UNQUOTED(DBUS_GCOV_ENABLED, 1, [Defined if gcov is enabled to force a rebuild due to config.h changing])
194
195      AC_MSG_CHECKING([for gcc 3.3 version of gcov file format])
196      have_gcc33_gcov=no
197      AC_RUN_IFELSE( [AC_LANG_PROGRAM( , [[ if (__GNUC__ >=3 && __GNUC_MINOR__ >= 3) exit (0); else exit (1); ]])],
198                    have_gcc33_gcov=yes)
199      if test x$have_gcc33_gcov = xyes ; then
200          AC_DEFINE_UNQUOTED(DBUS_HAVE_GCC33_GCOV, 1, [Defined if we have gcc 3.3 and thus the new gcov format])
201      fi
202      AC_MSG_RESULT($have_gcc33_gcov)
203 fi
204 AM_CONDITIONAL(DBUS_GCOV_ENABLED, test x$enable_gcov = xyes)
205
206 # glibc21.m4 serial 3
207 dnl Copyright (C) 2000-2002, 2004 Free Software Foundation, Inc.
208 dnl This file is free software; the Free Software Foundation
209 dnl gives unlimited permission to copy and/or distribute it,
210 dnl with or without modifications, as long as this notice is preserved.
211
212 # Test for the GNU C Library, version 2.1 or newer.
213 # From Bruno Haible.
214
215 AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer,
216   ac_cv_gnu_library_2_1,
217   [AC_EGREP_CPP([Lucky GNU user],
218     [
219 #include <features.h>
220 #ifdef __GNU_LIBRARY__
221  #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
222   Lucky GNU user
223  #endif
224 #endif
225     ],
226     ac_cv_gnu_library_2_1=yes,
227     ac_cv_gnu_library_2_1=no)
228   ]
229 )
230
231 #### Integer sizes
232
233 AC_CHECK_SIZEOF(char)
234 AC_CHECK_SIZEOF(short)
235 AC_CHECK_SIZEOF(long)
236 AC_CHECK_SIZEOF(int)
237 AC_CHECK_SIZEOF(void *)
238 AC_CHECK_SIZEOF(long long)
239 AC_CHECK_SIZEOF(__int64)
240
241 ### See what our 64 bit type is called
242 AC_MSG_CHECKING([64-bit integer type])
243
244 case 8 in
245 $ac_cv_sizeof_int)
246   dbusint64=int
247   dbusint64_constant='(val)'
248   dbusuint64_constant='(val)'
249   dbusint64_printf_modifier='""'
250   ;;
251 $ac_cv_sizeof_long)
252   dbusint64=long
253   dbusint64_constant='(val##L)'
254   dbusuint64_constant='(val##UL)'
255   dbusint64_printf_modifier='"l"'
256   ;;
257 $ac_cv_sizeof_long_long)
258   dbusint64='long long'
259   dbusint64_constant='(val##LL)'
260   dbusuint64_constant='(val##ULL)'
261   # Ideally we discover what the format is, but this is
262   # only used in verbose mode, so eh...
263   if test x"$ac_cv_gnu_library_2_1" = xyes; then
264     dbusint64_printf_modifier='"ll"'
265   fi
266   ;;
267 $ac_cv_sizeof___int64)
268   dbusint64=__int64
269   dbusint64_constant='(val##i64)'
270   dbusuint64_constant='(val##ui64)'
271   # See above case
272   if test x"$ac_cv_gnu_library_2_1" = xyes; then
273     dbusint64_printf_modifier='"ll"'
274   fi
275   ;;
276 esac
277
278 if test -z "$dbusint64" ; then
279         DBUS_INT64_TYPE="no_int64_type_detected"
280         DBUS_HAVE_INT64=0
281         DBUS_INT64_CONSTANT=
282         DBUS_UINT64_CONSTANT=
283         AC_MSG_RESULT([none found])
284 else
285         DBUS_INT64_TYPE="$dbusint64"
286         DBUS_HAVE_INT64=1
287         DBUS_INT64_CONSTANT="$dbusint64_constant"
288         DBUS_UINT64_CONSTANT="$dbusuint64_constant"
289         if test x"$dbusint64_printf_modifier" != x; then
290                 AC_DEFINE_UNQUOTED(DBUS_INT64_PRINTF_MODIFIER, [$dbusint64_printf_modifier], [Define to printf modifier for 64 bit integer type])
291         fi
292         AC_MSG_RESULT($DBUS_INT64_TYPE)
293 fi
294
295 AC_SUBST(DBUS_INT64_TYPE)
296 AC_SUBST(DBUS_INT64_CONSTANT)
297 AC_SUBST(DBUS_UINT64_CONSTANT)
298 AC_SUBST(DBUS_HAVE_INT64)
299
300 ### see what 32-bit int is called
301 AC_MSG_CHECKING([32-bit integer type])
302
303 case 4 in
304 $ac_cv_sizeof_short)
305   dbusint32=int
306   ;;
307 $ac_cv_sizeof_int)
308   dbusint32=int
309   ;;
310 $ac_cv_sizeof_long)
311   dbusint32=long
312   ;;
313 esac
314
315 if test -z "$dbusint32" ; then
316         DBUS_INT32_TYPE="no_int32_type_detected"
317         AC_MSG_ERROR([No 32-bit integer type found])
318 else
319         DBUS_INT32_TYPE="$dbusint32"
320         AC_MSG_RESULT($DBUS_INT32_TYPE)
321 fi
322
323 AC_SUBST(DBUS_INT32_TYPE)
324
325 ### see what 16-bit int is called
326 AC_MSG_CHECKING([16-bit integer type])
327
328 case 2 in
329 $ac_cv_sizeof_short)
330   dbusint16=short
331   ;;
332 $ac_cv_sizeof_int)
333   dbusint16=int
334   ;;
335 esac
336
337 if test -z "$dbusint16" ; then
338         DBUS_INT16_TYPE="no_int16_type_detected"
339         AC_MSG_ERROR([No 16-bit integer type found])
340 else
341         DBUS_INT16_TYPE="$dbusint16"
342         AC_MSG_RESULT($DBUS_INT16_TYPE)
343 fi
344
345 AC_SUBST(DBUS_INT16_TYPE)
346
347 ## byte order
348 case $host_os in
349         darwin*)
350                 # check at compile-time, so that it is possible to build universal
351                 # (with multiple architectures at once on the compile line)
352                 AH_VERBATIM([WORDS_BIGENDIAN_DARWIN], [
353                         /* Use the compiler-provided endianness defines to allow universal compiling. */
354                         #if defined(__BIG_ENDIAN__)
355                         #define WORDS_BIGENDIAN 1
356                         #endif
357                 ])
358                 ;;
359         *)
360                 AC_C_BIGENDIAN
361                 ;;
362 esac
363
364 dnl **********************************
365 dnl *** va_copy checks (from GLib) ***
366 dnl **********************************
367 dnl we currently check for all three va_copy possibilities, so we get
368 dnl all results in config.log for bug reports.
369 AC_CACHE_CHECK([for an implementation of va_copy()],dbus_cv_va_copy,[
370         AC_LINK_IFELSE([#include <stdarg.h>
371 #include <stdlib.h>
372         static void f (int i, ...) {
373         va_list args1, args2;
374         va_start (args1, i);
375         va_copy (args2, args1);
376         if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
377           exit (1);
378         va_end (args1); va_end (args2);
379         }
380         int main() {
381           f (0, 42);
382           return 0;
383         }],
384         [dbus_cv_va_copy=yes],
385         [dbus_cv_va_copy=no])
386 ])
387 AC_CACHE_CHECK([for an implementation of __va_copy()],dbus_cv___va_copy,[
388         AC_LINK_IFELSE([#include <stdarg.h>
389 #include <stdlib.h>
390         static void f (int i, ...) {
391         va_list args1, args2;
392         va_start (args1, i);
393         __va_copy (args2, args1);
394         if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
395           exit (1);
396         va_end (args1); va_end (args2);
397         }
398         int main() {
399           f (0, 42);
400           return 0;
401         }],
402         [dbus_cv___va_copy=yes],
403         [dbus_cv___va_copy=no])
404 ])
405
406 if test "x$dbus_cv_va_copy" = "xyes"; then
407   dbus_va_copy_func=va_copy
408 else if test "x$dbus_cv___va_copy" = "xyes"; then
409   dbus_va_copy_func=__va_copy
410 fi
411 fi
412
413 if test -n "$dbus_va_copy_func"; then
414   AC_DEFINE_UNQUOTED(DBUS_VA_COPY,$dbus_va_copy_func,[A 'va_copy' style function])
415 fi
416
417 AC_LANG_PUSH(C)
418 AC_CACHE_CHECK([whether va_lists can be copied by value],
419         dbus_cv_va_val_copy,
420         [AC_RUN_IFELSE([AC_LANG_PROGRAM(
421 [[
422         #include <stdarg.h>
423         #include <stdlib.h>
424 ]],
425 [[
426         static void f (int i, ...) {
427         va_list args1, args2;
428         va_start (args1, i);
429         args2 = args1;
430         if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
431           exit (1);
432         va_end (args1); va_end (args2);
433         }
434         int main() {
435           f (0, 42);
436           return 0;
437         }
438 ]])],
439         [dbus_cv_va_val_copy=yes],
440         [dbus_cv_va_val_copy=no],
441         [dbus_cv_va_val_copy=yes])
442 ])
443 AC_LANG_POP(C)
444
445 if test "x$dbus_cv_va_val_copy" = "xno"; then
446   AC_DEFINE(DBUS_VA_COPY_AS_ARRAY,1, ['va_lists' cannot be copies as values])
447 fi
448
449
450 #### Atomic integers
451
452 AC_CACHE_CHECK([whether $CC knows __sync_sub_and_fetch()],
453   dbus_cv_sync_sub_and_fetch,
454   [AC_LINK_IFELSE(
455      AC_LANG_PROGRAM([], [[int a = 4; int b = __sync_sub_and_fetch(&a, 4); exit(b); ]]),
456      [dbus_cv_sync_sub_and_fetch=yes],
457      [dbus_cv_sync_sub_and_fetch=no])
458   ])
459
460 if test "x$dbus_cv_sync_sub_and_fetch" = "xyes" ; then
461    have_sync=1
462 else
463    have_sync=0
464 fi
465
466 AC_DEFINE_UNQUOTED([DBUS_USE_SYNC], [$have_sync], [Use the gcc __sync extension])
467
468 #### Various functions
469 AC_SEARCH_LIBS(socket,[socket network])
470 AC_CHECK_FUNC(gethostbyname,,[AC_CHECK_LIB(nsl,gethostbyname)])
471
472 AC_CHECK_FUNCS(vsnprintf vasprintf nanosleep usleep setenv clearenv unsetenv socketpair getgrouplist fpathconf setrlimit poll setlocale localeconv strtoll strtoull)
473
474 #### Check for broken poll; taken from Glib's configure
475
476 AC_MSG_CHECKING([for broken poll])
477 AC_RUN_IFELSE([AC_LANG_SOURCE([[
478     #include <stdlib.h>
479     #include <fcntl.h>
480     #include <poll.h>
481     #ifdef HAVE_SYS_POLL_H
482     #include <sys/poll.h>
483     #endif
484     int main(void) {
485       struct pollfd fds[1];
486       int fd;
487       fd = open("/dev/null", 1);
488       fds[0].fd = fd;
489       fds[0].events = POLLIN;
490       fds[0].revents = 0;
491       if (poll(fds, 1, 0) < 0 || (fds[0].revents & POLLNVAL) != 0) {
492             exit(1);  /* Does not work for devices -- fail */
493       }
494       exit(0);
495     }]])],
496   [broken_poll=no],
497   [broken_poll=yes
498    AC_DEFINE(BROKEN_POLL,1,[poll doesn't work on devices])],
499   [broken_poll="no (cross compiling)"])
500 AC_MSG_RESULT($broken_poll)
501
502 AC_MSG_CHECKING(for dirfd)
503 AC_TRY_LINK([
504 #include <sys/types.h>
505 #include <dirent.h>
506 ],[
507 DIR *dirp;
508 dirp = opendir(".");
509 dirfd(dirp);
510 closedir(dirp);
511 ],
512 dbus_have_dirfd=yes, dbus_have_dirfd=no)
513 AC_MSG_RESULT($dbus_have_dirfd)
514 if test "$dbus_have_dirfd" = yes; then
515         AC_DEFINE(HAVE_DIRFD,1,[Have dirfd function])
516 else
517         AC_MSG_CHECKING(for DIR *dirp->dd_fd)
518         AC_TRY_LINK([
519 #include <sys/types.h>
520 #include <dirent.h>
521         ],[
522 DIR *dirp;
523 int fd;
524 dirp = opendir(".");
525 fd = dirp->dd_fd;
526 closedir(dirp);
527         ],
528         dbus_have_ddfd=yes, dbus_have_ddfd=no)
529         AC_MSG_RESULT($dbus_have_ddfd)
530         if test "$dbus_have_ddfd" = yes; then
531                 AC_DEFINE(HAVE_DDFD,1,[Have the ddfd member of DIR])
532         fi
533 fi
534
535 AC_CHECK_HEADERS(dirent.h)
536
537 AC_CHECK_HEADERS(execinfo.h, [AC_CHECK_FUNCS(backtrace)])
538
539 AC_CHECK_HEADERS(errno.h)
540
541 AC_CHECK_HEADERS(signal.h)
542
543 AC_CHECK_HEADERS(locale.h)
544
545 AC_CHECK_HEADERS(byteswap.h)
546
547 AC_CHECK_HEADERS(unistd.h)
548
549 AC_CHECK_HEADERS(ws2tcpip.h)
550
551 AC_CHECK_HEADERS(wspiapi.h)
552
553 # Add -D_POSIX_PTHREAD_SEMANTICS if on Solaris
554 #
555 case $host_os in
556     solaris*)
557        CFLAGS="$CFLAGS -D_POSIX_PTHREAD_SEMANTICS" ;;
558 esac
559
560 # checking for a posix version of getpwnam_r
561 # if we are cross compiling and can not run the test
562 # assume getpwnam_r is the posix version
563 # it is up to the person cross compiling to change
564 # this behavior if desired
565 AC_LANG_PUSH(C)
566 AC_CACHE_CHECK([for posix getpwnam_r],
567                 ac_cv_func_posix_getpwnam_r,
568                 [AC_RUN_IFELSE([AC_LANG_PROGRAM(
569 [[
570 #include <errno.h>
571 #include <pwd.h>
572 ]],
573 [[
574     char buffer[10000];
575     struct passwd pwd, *pwptr = &pwd;
576     int error;
577     errno = 0;
578     error = getpwnam_r ("", &pwd, buffer,
579                         sizeof (buffer), &pwptr);
580    return (error < 0 && errno == ENOSYS)
581            || error == ENOSYS;
582 ]])],
583         [ac_cv_func_posix_getpwnam_r=yes],
584         [ac_cv_func_posix_getpwnam_r=no],
585         [ac_cv_func_posix_getpwnam_r=yes]
586 )])
587 AC_LANG_POP(C)
588
589 if test "$ac_cv_func_posix_getpwnam_r" = yes; then
590         AC_DEFINE(HAVE_POSIX_GETPWNAM_R,1,
591                 [Have POSIX function getpwnam_r])
592 else
593         AC_CACHE_CHECK([for nonposix getpwnam_r],
594                 ac_cv_func_nonposix_getpwnam_r,
595                 [AC_TRY_LINK([#include <pwd.h>],
596                         [char buffer[10000];
597                         struct passwd pwd;
598                         getpwnam_r ("", &pwd, buffer,
599                                         sizeof (buffer));],
600                         [ac_cv_func_nonposix_getpwnam_r=yes],
601                         [ac_cv_func_nonposix_getpwnam_r=no])])
602                 if test "$ac_cv_func_nonposix_getpwnam_r" = yes; then
603                 AC_DEFINE(HAVE_NONPOSIX_GETPWNAM_R,1,
604                         [Have non-POSIX function getpwnam_r])
605         fi
606 fi
607
608 dnl check for socklen_t
609 AC_MSG_CHECKING(whether socklen_t is defined)
610 AC_TRY_COMPILE([
611 #include <sys/types.h>
612 #include <sys/socket.h>
613 #include <netdb.h>
614 ],[
615 socklen_t foo;
616 foo = 1;
617 ],dbus_have_socklen_t=yes,dbus_have_socklen_t=no)
618 AC_MSG_RESULT($dbus_have_socklen_t)
619
620 if test "x$dbus_have_socklen_t" = "xyes"; then
621     AC_DEFINE(HAVE_SOCKLEN_T,1,[Have socklen_t type])
622 fi
623
624 dnl check for writev header and writev function so we're
625 dnl good to go if HAVE_WRITEV gets defined.
626 AC_CHECK_HEADERS(sys/uio.h, [AC_CHECK_FUNCS(writev)])
627
628 dnl needed on darwin for NAME_MAX
629 AC_CHECK_HEADERS(sys/syslimits.h)
630
631 dnl Make it easy to check if we have MSG_NOSIGNAL without actually having to include sys/socket.h
632 AC_CHECK_DECLS([MSG_NOSIGNAL], [], [], [[ #include <sys/socket.h> ]])
633
634 dnl check for flavours of varargs macros (test from GLib)
635 AC_MSG_CHECKING(for ISO C99 varargs macros in C)
636 AC_TRY_COMPILE([],[
637 int a(int p1, int p2, int p3);
638 #define call_a(...) a(1,__VA_ARGS__)
639 call_a(2,3);
640 ],dbus_have_iso_c_varargs=yes,dbus_have_iso_c_varargs=no)
641 AC_MSG_RESULT($dbus_have_iso_c_varargs)
642
643 AC_MSG_CHECKING(for GNUC varargs macros)
644 AC_TRY_COMPILE([],[
645 int a(int p1, int p2, int p3);
646 #define call_a(params...) a(1,params)
647 call_a(2,3);
648 ],dbus_have_gnuc_varargs=yes,dbus_have_gnuc_varargs=no)
649 AC_MSG_RESULT($dbus_have_gnuc_varargs)
650
651 dnl Output varargs tests
652 if test x$dbus_have_iso_c_varargs = xyes; then
653     AC_DEFINE(HAVE_ISO_VARARGS,1,[Have ISO C99 varargs macros])
654 fi
655 if test x$dbus_have_gnuc_varargs = xyes; then
656     AC_DEFINE(HAVE_GNUC_VARARGS,1,[Have GNU-style varargs macros])
657 fi
658
659 dnl Check for various credentials.
660 AC_MSG_CHECKING(for struct cmsgcred)
661 AC_TRY_COMPILE([
662 #include <sys/types.h>
663 #include <sys/socket.h>
664 ],[
665 struct cmsgcred cred;
666
667 cred.cmcred_pid = 0;
668 ],dbus_have_struct_cmsgcred=yes,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_TRY_COMPILE([#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 ], have_clock_monotonic=true, have_clock_monotonic=false)
827 if test x$have_clock_monotonic = xtrue; then
828     AC_MSG_RESULT([found])
829     AC_DEFINE(HAVE_MONOTONIC_CLOCK, 1, [Define if we have CLOCK_MONOTONIC])
830 else
831     AC_MSG_RESULT([not found])
832 fi
833 fi
834 LIBS="$save_libs"
835
836 # SELinux detection
837 if test x$enable_selinux = xno ; then
838     have_selinux=no;
839 else
840     # See if we have SELinux library
841     AC_CHECK_LIB(selinux, is_selinux_enabled,
842                  have_selinux=yes, have_selinux=no)
843
844     # see if we have the SELinux header with the new D-Bus stuff in it
845     if test x$have_selinux = xyes ; then
846         AC_MSG_CHECKING([for DBUS Flask permissions in selinux/av_permissions.h])
847         AC_TRY_COMPILE([#include <selinux/av_permissions.h>],
848                         [#ifdef DBUS__ACQUIRE_SVC return 0;
849                          #else
850                          #error DBUS__ACQUIRE_SVC not defined
851                          #endif],
852                         have_selinux=yes, have_selinux=no)
853         AC_MSG_RESULT($have_selinux)
854     fi
855
856     if test x$enable_selinux = xauto ; then
857         if test x$have_selinux = xno ; then
858                 AC_MSG_WARN([Sufficiently new SELinux library not found])
859         fi
860     else
861         if test x$have_selinux = xno ; then
862                 AC_MSG_ERROR([SElinux explicitly required, and SELinux library not found])
863         fi
864     fi
865 fi
866
867 AM_CONDITIONAL(HAVE_SELINUX, test x$have_selinux = xyes)
868
869 if test x$have_selinux = xyes ; then
870     # the selinux code creates threads
871     # which requires libpthread even on linux
872     AC_CHECK_FUNC(pthread_create,,[AC_CHECK_LIB(pthread,pthread_create,
873                                                 [SELINUX_THREAD_LIBS="-lpthread"])])
874
875     SELINUX_LIBS="-lselinux $SELINUX_THREAD_LIBS"
876     AC_DEFINE(HAVE_SELINUX,1,[SELinux support])
877 else
878     SELINUX_LIBS=
879 fi
880
881 # inotify checks
882 if test x$enable_inotify = xno ; then
883     have_inotify=no;
884 else
885     AC_CHECK_HEADERS(sys/inotify.h, have_inotify=yes, have_inotify=no)
886 fi
887
888 dnl check if inotify backend is enabled
889 if test x$have_inotify = xyes; then
890    AC_DEFINE(DBUS_BUS_ENABLE_INOTIFY,1,[Use inotify])
891    AC_CHECK_FUNCS(inotify_init1)
892 fi
893
894 AM_CONDITIONAL(DBUS_BUS_ENABLE_INOTIFY, test x$have_inotify = xyes)
895
896 # dnotify checks
897 if test x$enable_dnotify = xno ; then
898     have_dnotify=no;
899 else
900     if test x$have_inotify = xno -a x$host_os = xlinux-gnu -o x$host_os = xlinux; then
901         have_dnotify=yes;
902     else
903         have_dnotify=no;
904     fi
905 fi
906
907 dnl check if dnotify backend is enabled
908 if test x$have_dnotify = xyes; then
909    AC_DEFINE(DBUS_BUS_ENABLE_DNOTIFY_ON_LINUX,1,[Use dnotify on Linux])
910 fi
911
912 AM_CONDITIONAL(DBUS_BUS_ENABLE_DNOTIFY_ON_LINUX, test x$have_dnotify = xyes)
913
914 # kqueue checks
915 if test x$enable_kqueue = xno ; then
916     have_kqueue=no
917 else
918     have_kqueue=yes
919     AC_CHECK_HEADER(sys/event.h, , have_kqueue=no)
920     AC_CHECK_FUNC(kqueue, , have_kqueue=no)
921
922     if test x$enable_kqueue = xyes -a x$have_kqueue = xno; then
923         AC_MSG_ERROR(kqueue support explicitly enabled but not available)
924     fi
925 fi
926
927 dnl check if kqueue backend is enabled
928 if test x$have_kqueue = xyes; then
929    AC_DEFINE(DBUS_BUS_ENABLE_KQUEUE,1,[Use kqueue])
930 fi
931
932 AM_CONDITIONAL(DBUS_BUS_ENABLE_KQUEUE, test x$have_kqueue = xyes)
933
934 # launchd checks
935 if test x$enable_launchd = xno ; then
936     have_launchd=no
937 else
938     have_launchd=yes
939     AC_CHECK_HEADER([launch.h], , have_launchd=no)
940     AC_PATH_PROG([LAUNCHCTL], [launchctl])
941     if test "x$LAUNCHCTL" = "x"; then
942         have_launchd=no
943     fi
944
945     if test x$enable_launchd = xyes && test x$have_launchd = xno ; then
946         AC_MSG_ERROR([launchd support explicitly enabled but not available])
947     fi
948 fi
949
950 dnl check if launchd is enabled
951 if test x$have_launchd = xyes; then
952     AC_DEFINE(DBUS_ENABLE_LAUNCHD,1,[Use launchd autolaunch])
953 fi
954
955 AM_CONDITIONAL(DBUS_ENABLE_LAUNCHD, test x$have_launchd = xyes)
956
957 #### Directory to place launchd agent file
958 if test "x$with_launchd_agent_dir" = "x"; then
959    LAUNCHD_AGENT_DIR="/Library/LaunchAgents"
960 else
961    LAUNCHD_AGENT_DIR="$with_launchd_agent_dir"
962 fi
963
964 AC_SUBST(LAUNCHD_AGENT_DIR)
965
966 dnl console owner file
967 if test x$enable_console_owner_file = xno ; then
968     have_console_owner_file=no;
969 else
970     case $host_os in
971     solaris*)
972         have_console_owner_file=yes;
973         AC_DEFINE(HAVE_CONSOLE_OWNER_FILE,1,[Have console owner file])
974         ;;
975     *)
976         have_console_owner_file=no;;
977     esac
978 fi
979
980 AM_CONDITIONAL(HAVE_CONSOLE_OWNER_FILE, test x$have_console_owner_file = xyes)
981
982 # libaudit detection
983 if test x$enable_libaudit = xno ; then
984     have_libaudit=no;
985 else
986     # See if we have audit daemon & capabilities library
987     AC_CHECK_LIB(audit, audit_log_user_avc_message,
988                  have_libaudit=yes, have_libaudit=no)
989     if test x$have_libaudit = xyes ; then
990         AC_CHECK_LIB(cap-ng, capng_clear,
991                  have_libaudit=yes, have_libaudit=no)
992     fi
993 fi
994
995 AM_CONDITIONAL(HAVE_LIBAUDIT, test x$have_libaudit = xyes)
996
997 if test x$have_libaudit = xyes ; then
998     SELINUX_LIBS="$SELINUX_LIBS -laudit -lcap-ng"
999     AC_DEFINE(HAVE_LIBAUDIT,1,[audit daemon SELinux support])
1000 fi
1001
1002 # Check for ADT API
1003 AC_MSG_CHECKING(for ADT API)
1004 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1005 #include <bsm/adt.h>
1006 adt_user_context = ADT_USER;
1007 ]], [[]])], [ check_adt_audit=yes ], [ check_adt_audit=no ])
1008
1009 if test ${check_adt_audit} = yes
1010 then
1011    AC_DEFINE([HAVE_ADT], [], [Adt audit API])
1012    ADT_LIBS="-lbsm"
1013    LIBS="-lbsm $LIBS"
1014    AC_MSG_RESULT(yes)
1015 else
1016    AC_MSG_RESULT(no)
1017 fi
1018
1019 # Check for SCM_RIGHTS
1020 AC_MSG_CHECKING([for SCM_RIGHTS])
1021 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1022 #include <sys/socket.h>
1023 #include <sys/un.h>
1024 static int x = SCM_RIGHTS;
1025 ]], [[]])],
1026 [ AC_MSG_RESULT([supported])
1027   AC_DEFINE([HAVE_UNIX_FD_PASSING], [1], [Supports sending UNIX file descriptors]) ],
1028 [ AC_MSG_RESULT([not supported]) ])
1029
1030 NETWORK_libs=
1031 if test x$dbus_win = xyes ; then
1032   if test x$dbus_wince = xyes ; then
1033     NETWORK_libs="-lws2"
1034   else
1035     NETWORK_libs="-lws2_32"
1036   fi
1037 fi
1038
1039 #### Set up final flags
1040 DBUS_CLIENT_CFLAGS=
1041 DBUS_CLIENT_LIBS="$THREAD_LIBS $NETWORK_libs"
1042 AC_SUBST(DBUS_CLIENT_CFLAGS)
1043 AC_SUBST(DBUS_CLIENT_LIBS)
1044
1045 DBUS_BUS_CFLAGS="$XML_CFLAGS"
1046 DBUS_BUS_LIBS="$XML_LIBS $SELINUX_LIBS $THREAD_LIBS $ADT_LIBS $NETWORK_libs"
1047 AC_SUBST(DBUS_BUS_CFLAGS)
1048 AC_SUBST(DBUS_BUS_LIBS)
1049
1050 DBUS_LAUNCHER_CFLAGS="$XML_CFLAGS"
1051 DBUS_LAUNCHER_LIBS="$XML_LIBS $THREAD_LIBS $NETWORK_libs"
1052 AC_SUBST(DBUS_LAUNCHER_CFLAGS)
1053 AC_SUBST(DBUS_LAUNCHER_LIBS)
1054
1055 DBUS_TEST_CFLAGS=
1056 DBUS_TEST_LIBS="$THREAD_LIBS $NETWORK_libs"
1057 AC_SUBST(DBUS_TEST_CFLAGS)
1058 AC_SUBST(DBUS_TEST_LIBS)
1059
1060 ### X11 detection
1061 if test x$dbus_win = xyes ; then
1062    enable_x11=no
1063 else
1064 AC_PATH_XTRA
1065
1066 ## for now enable_x11 just tracks have_x11,
1067 ## there's no --enable-x11
1068 if test x$no_x = xyes ; then
1069    have_x11=no
1070    enable_x11=no
1071 else
1072    have_x11=yes
1073    enable_x11=yes
1074 fi
1075
1076 if test x$enable_x11 = xyes ; then
1077    AC_DEFINE(DBUS_BUILD_X11,1,[Build X11-dependent code])
1078    DBUS_X_LIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
1079    DBUS_X_CFLAGS="$X_CFLAGS"
1080 else
1081    DBUS_X_LIBS=
1082    DBUS_X_CFLAGS=
1083 fi
1084
1085 AC_SUBST(DBUS_X_CFLAGS)
1086 AC_SUBST(DBUS_X_LIBS)
1087 fi
1088
1089
1090 #### gcc warning flags
1091
1092 cc_supports_flag() {
1093   AC_MSG_CHECKING(whether $CC supports "$*")
1094   save_CFLAGS="$CFLAGS"
1095   CFLAGS="$*"
1096   AC_TRY_COMPILE([], [], [rc=yes], [rc=no])
1097   CFLAGS="$save_CFLAGS"
1098   AC_MSG_RESULT([$rc])
1099   test "x$rc" = xyes
1100 }
1101
1102 ld_supports_flag() {
1103   AC_MSG_CHECKING([whether $LD supports "$@"])
1104   AC_TRY_LINK([
1105     int one(void) { return 1; }
1106     int two(void) { return 2; }
1107   ], [ two(); ] , [_ac_ld_flag_supported=yes], [_ac_ld_flag_supported=no])
1108
1109   if test "$_ac_ld_flag_supported" = "yes"; then
1110     rm -f conftest.c
1111     touch conftest.c
1112     if $CC -c conftest.c; then
1113       ld_out=`$LD $@ -o conftest conftest.o 2>&1`
1114       ld_ret=$?
1115       if test $ld_ret -ne 0 ; then
1116         _ac_ld_flag_supported=no
1117       elif echo "$ld_out" | egrep 'option ignored|^usage:|unrecognized option|illegal option' >/dev/null ; then
1118         _ac_ld_flag_supported=no
1119       fi
1120     fi
1121     rm -f conftest.c conftest.o conftest
1122   fi
1123
1124   AC_MSG_RESULT($_ac_ld_flag_supported)
1125   if test "$_ac_ld_flag_supported" = "yes" ; then
1126     return 0
1127   else
1128     return 1
1129   fi
1130 }
1131
1132 # Don't bother with -Werror on Windows for now, too many warnings
1133 if test x$dbus_win != xyes -a x$dbus_cygwin != xyes -a x$USE_MAINTAINER_MODE = xyes; then
1134   if cc_supports_flag "-Werror"; then
1135     CFLAGS="$CFLAGS -Werror"
1136   fi
1137 fi
1138
1139 if test "x$GCC" = "xyes"; then
1140   changequote(,)dnl
1141   case " $CFLAGS " in
1142   *[\ \ ]-Wall[\ \      ]*) ;;
1143   *) CFLAGS="$CFLAGS -Wall" ;;
1144   esac
1145
1146   case " $CFLAGS " in
1147   *[\ \ ]-Wchar-subscripts[\ \  ]*) ;;
1148   *) CFLAGS="$CFLAGS -Wchar-subscripts" ;;
1149   esac
1150
1151   case " $CFLAGS " in
1152   *[\ \ ]-Wmissing-declarations[\ \     ]*) ;;
1153   *) CFLAGS="$CFLAGS -Wmissing-declarations" ;;
1154   esac
1155
1156   case " $CFLAGS " in
1157   *[\ \ ]-Wmissing-prototypes[\ \       ]*) ;;
1158   *) CFLAGS="$CFLAGS -Wmissing-prototypes" ;;
1159   esac
1160
1161   case " $CFLAGS " in
1162   *[\ \ ]-Wnested-externs[\ \   ]*) ;;
1163   *) CFLAGS="$CFLAGS -Wnested-externs" ;;
1164   esac
1165
1166   case " $CFLAGS " in
1167   *[\ \ ]-Wpointer-arith[\ \    ]*) ;;
1168   *) CFLAGS="$CFLAGS -Wpointer-arith" ;;
1169   esac
1170
1171   case " $CFLAGS " in
1172   *[\ \ ]-Wcast-align[\ \       ]*) ;;
1173   *) CFLAGS="$CFLAGS -Wcast-align" ;;
1174   esac
1175
1176   case " $CFLAGS " in
1177   *[\ \ ]-Wfloat-equal[\ \      ]*) ;;
1178   *) if cc_supports_flag -Wfloat-equal; then
1179         CFLAGS="$CFLAGS -Wfloat-equal"
1180      fi
1181      ;;
1182   esac
1183
1184   case " $CFLAGS " in
1185   *[\ \ ]-Wdeclaration-after-statement[\ \      ]*) ;;
1186   *) if cc_supports_flag -Wdeclaration-after-statement; then
1187         CFLAGS="$CFLAGS -Wdeclaration-after-statement"
1188      fi
1189      ;;
1190   esac
1191
1192   case " $CFLAGS " in
1193   *[\ \ ]-fno-common[\ \        ]*) ;;
1194   *) if cc_supports_flag -fno-common; then
1195         CFLAGS="$CFLAGS -fno-common"
1196      fi
1197      ;;
1198   esac
1199
1200   case " $CFLAGS " in
1201   *[\ \ ]-fPIC[\ \      ]*) ;;
1202   *) if test x$dbus_win = xno && cc_supports_flag -fPIC; then
1203         PIC_CFLAGS="-fPIC"
1204         if ld_supports_flag -z,relro; then
1205            PIC_LDFLAGS="-Wl,-z,relro"
1206         fi
1207      fi
1208      ;;
1209   esac
1210
1211   case " $CFLAGS " in
1212   *[\ \ ]-fPIE[\ \      ]*) ;;
1213   *) if test x$dbus_win = xno && cc_supports_flag -fPIE; then
1214         PIE_CFLAGS="-fPIE"
1215         if ld_supports_flag -z,relro; then
1216            PIE_LDFLAGS="-pie -Wl,-z,relro"
1217         else
1218            PIE_LDFLAGS="-pie"
1219         fi
1220      fi
1221      ;;
1222   esac
1223
1224   ### Disabled warnings, and compiler flag overrides
1225
1226   # Let's just ignore unused for now
1227   case " $CFLAGS " in
1228   *[\ \ ]-Wno-unused[\ \        ]*) ;;
1229   *) CFLAGS="$CFLAGS -Wno-unused" ;;
1230   esac
1231
1232   # This group is for warnings we currently don't pass.
1233   # We would like to, however.  Please fix.
1234
1235   # http://bugs.freedesktop.org/show_bug.cgi?id=17433
1236   case " $CFLAGS " in
1237   *[\ \ ]-Wno-sign-compare[\ \  ]*) ;;
1238   *) CFLAGS="$CFLAGS -Wno-sign-compare" ;;
1239   esac
1240   case " $CFLAGS " in
1241   *[\ \ ]-Wno-pointer-sign[\ \  ]*) ;;
1242   *) if cc_supports_flag -Wno-pointer-sign; then
1243         CFLAGS="$CFLAGS -Wno-pointer-sign"
1244      fi
1245      ;;
1246   esac
1247
1248   # This one is special - it's not a warning override.
1249   # http://bugs.freedesktop.org/show_bug.cgi?id=10599
1250   case " $CFLAGS " in
1251   *[\ \ ]-fno-strict-aliasing[\ \       ]*) ;;
1252   *) CFLAGS="$CFLAGS -fno-strict-aliasing" ;;
1253   esac
1254   ### End disabled warnings
1255
1256   if test "x$enable_ansi" = "xyes"; then
1257     case " $CFLAGS " in
1258     *[\ \       ]-ansi[\ \      ]*) ;;
1259     *) CFLAGS="$CFLAGS -ansi" ;;
1260     esac
1261
1262     case " $CFLAGS " in
1263     *[\ \       ]-D_POSIX_C_SOURCE*) ;;
1264     *) CFLAGS="$CFLAGS -D_POSIX_C_SOURCE=199309L" ;;
1265     esac
1266
1267     case " $CFLAGS " in
1268     *[\ \       ]-D_BSD_SOURCE[\ \      ]*) ;;
1269     *) CFLAGS="$CFLAGS -D_BSD_SOURCE" ;;
1270     esac
1271
1272     case " $CFLAGS " in
1273     *[\ \       ]-pedantic[\ \  ]*) ;;
1274     *) CFLAGS="$CFLAGS -pedantic" ;;
1275     esac
1276   fi
1277   if test x$enable_gcov = xyes; then
1278     case " $CFLAGS " in
1279     *[\ \       ]-fprofile-arcs[\ \     ]*) ;;
1280     *) CFLAGS="$CFLAGS -fprofile-arcs" ;;
1281     esac
1282     case " $CFLAGS " in
1283     *[\ \       ]-ftest-coverage[\ \    ]*) ;;
1284     *) CFLAGS="$CFLAGS -ftest-coverage" ;;
1285     esac
1286
1287     ## remove optimization
1288     CFLAGS=`echo "$CFLAGS" | sed -e 's/-O[0-9]*//g'`
1289   fi
1290   changequote([,])dnl
1291 else
1292   if test x$enable_gcov = xyes; then
1293     AC_MSG_ERROR([--enable-gcov can only be used with gcc])
1294   fi
1295 fi
1296
1297 AC_SUBST(PIC_CFLAGS)
1298 AC_SUBST(PIC_LDFLAGS)
1299 AC_SUBST(PIE_CFLAGS)
1300 AC_SUBST(PIE_LDFLAGS)
1301
1302 if ld_supports_flag --gc-sections; then
1303   SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
1304   CFLAGS="-ffunction-sections -fdata-sections $CFLAGS"
1305 fi
1306 AC_SUBST(SECTION_FLAGS)
1307 AC_SUBST(SECTION_LDFLAGS)
1308 AC_MSG_RESULT($ac_gcsections)
1309
1310 # Add -D_POSIX_PTHREAD_SEMANTICS if on Solaris
1311 #
1312 case $host_os in
1313     solaris*)
1314        CFLAGS="$CFLAGS -D_POSIX_PTHREAD_SEMANTICS" ;;
1315 esac
1316
1317 changequote(,)dnl
1318 # compress spaces in flags
1319 CFLAGS=`echo "$CFLAGS" | sed -e 's/ +/ /g'`
1320 CXXFLAGS=`echo "$CXXFLAGS" | sed -e 's/ +/ /g'`
1321 CPPFLAGS=`echo "$CPPFLAGS" | sed -e 's/ +/ /g'`
1322 changequote([,])dnl
1323
1324 ### Doxygen Documentation
1325
1326 AC_PATH_PROG(DOXYGEN, doxygen, no)
1327
1328 AC_MSG_CHECKING([whether to build Doxygen documentation])
1329
1330 if test x$DOXYGEN = xno ; then
1331     have_doxygen=no
1332 else
1333     have_doxygen=yes
1334 fi
1335
1336 if test x$enable_doxygen_docs = xauto ; then
1337     if test x$have_doxygen = xno ; then
1338         enable_doxygen_docs=no
1339     else
1340         enable_doxygen_docs=yes
1341     fi
1342 fi
1343
1344 if test x$enable_doxygen_docs = xyes; then
1345     if test x$have_doxygen = xno; then
1346         AC_MSG_ERROR([Building Doxygen docs explicitly required, but Doxygen not found])
1347     fi
1348 fi
1349
1350 AM_CONDITIONAL(DBUS_DOXYGEN_DOCS_ENABLED, test x$enable_doxygen_docs = xyes)
1351 AC_MSG_RESULT($enable_doxygen_docs)
1352
1353 ### XML Documentation
1354
1355 AC_PATH_PROG(XMLTO, xmlto, no)
1356
1357 AC_MSG_CHECKING([whether to build XML documentation])
1358
1359 if test x$XMLTO = xno ; then
1360     have_xmlto=no
1361 else
1362     have_xmlto=yes
1363 fi
1364
1365 if test x$enable_xml_docs = xauto ; then
1366     if test x$have_xmlto = xno ; then
1367         enable_xml_docs=no
1368     else
1369         enable_xml_docs=yes
1370     fi
1371 fi
1372
1373 if test x$enable_xml_docs = xyes; then
1374     if test x$have_xmlto = xno; then
1375         AC_MSG_ERROR([Building XML docs explicitly required, but xmlto not found])
1376     fi
1377 fi
1378
1379 AM_CONDITIONAL(DBUS_XML_DOCS_ENABLED, test x$enable_xml_docs = xyes)
1380 AC_MSG_RESULT($enable_xml_docs)
1381
1382 AC_PATH_PROG([MAN2HTML], [man2html])
1383 AC_ARG_VAR([MAN2HTML], [Path to man2html (optional)])
1384 AM_CONDITIONAL(DBUS_HAVE_MAN2HTML, test x$MAN2HTML != x)
1385
1386 AM_CONDITIONAL(DBUS_CAN_UPLOAD_DOCS,
1387     test x$enable_doxygen_docs = xyes -a x$enable_xml_docs = xyes -a \
1388          x$MAN2HTML != x)
1389
1390 #### Have to go $localstatedir->$prefix/var->/usr/local/var
1391
1392 #### find the actual value for $prefix that we'll end up with
1393 ##   (I know this is broken and should be done in the Makefile, but
1394 ##    that's a major pain and almost nobody actually seems to care)
1395 AS_AC_EXPAND(EXPANDED_PREFIX, "$prefix")
1396 AS_AC_EXPAND(EXPANDED_LOCALSTATEDIR, "$localstatedir")
1397 AS_AC_EXPAND(EXPANDED_SYSCONFDIR, "$sysconfdir")
1398 AS_AC_EXPAND(EXPANDED_BINDIR, "$bindir")
1399 AS_AC_EXPAND(EXPANDED_LIBDIR, "$libdir")
1400 AS_AC_EXPAND(EXPANDED_LIBEXECDIR, "$libexecdir")
1401 AS_AC_EXPAND(EXPANDED_DATADIR, "$datadir")
1402
1403 #### Check our operating system
1404 operating_system=unknown
1405 if test -f /etc/redhat-release || test -f $EXPANDED_SYSCONFDIR/redhat-release ; then
1406    operating_system=redhat
1407 fi
1408
1409 if test -f /etc/slackware-version || test -f $EXPANDED_SYSCONFDIR/slackware-version ; then
1410    operating_system=slackware
1411 fi
1412
1413 if test -f /usr/bin/cygwin1.dll || test -f $EXPANDED_BINDIR/cygwin1.dll ; then
1414    operating_system=cygwin
1415 fi
1416
1417 #### Sort out init scripts
1418
1419 if test x$with_init_scripts = x; then
1420     case x$operating_system in
1421         xredhat)        with_init_scripts=redhat ;;
1422         xslackware)     with_init_scripts=slackware ;;
1423         xcygwin)        with_init_scripts=cygwin ;;
1424         *)                      with_init_scripts=none ;;
1425     esac
1426 fi
1427
1428 AM_CONDITIONAL(DBUS_INIT_SCRIPTS_RED_HAT, test x$with_init_scripts = xredhat)
1429 AM_CONDITIONAL(DBUS_INIT_SCRIPTS_SLACKWARE, test x$with_init_scripts = xslackware)
1430 AM_CONDITIONAL(DBUS_INIT_SCRIPTS_CYGWIN, test x$with_init_scripts = xcygwin)
1431
1432 ##### systemd unit files
1433 AC_ARG_WITH([systemdsystemunitdir],
1434 AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files]),
1435         [], [with_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)])
1436 if test "x$with_systemdsystemunitdir" != xno; then
1437    AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])
1438 fi
1439 AM_CONDITIONAL(HAVE_SYSTEMD, [test -n "$with_systemdsystemunitdir" -a "x$with_systemdsystemunitdir" != xno ])
1440
1441 ##### Set up location for system bus socket
1442 if ! test -z "$with_system_socket"; then
1443    DBUS_SYSTEM_SOCKET=$with_system_socket
1444 else
1445    DBUS_SYSTEM_SOCKET=${EXPANDED_LOCALSTATEDIR}/run/dbus/system_bus_socket
1446 fi
1447
1448 AC_SUBST(DBUS_SYSTEM_SOCKET)
1449 AC_DEFINE_UNQUOTED(DBUS_SYSTEM_SOCKET,"$DBUS_SYSTEM_SOCKET",[The name of the socket the system bus listens on by default])
1450
1451 ## system bus only listens on local domain sockets, and never
1452 ## on an abstract socket (so only root can create the socket)
1453 DBUS_SYSTEM_BUS_DEFAULT_ADDRESS="unix:path=$DBUS_SYSTEM_SOCKET"
1454 AC_SUBST(DBUS_SYSTEM_BUS_DEFAULT_ADDRESS)
1455 AC_DEFINE_UNQUOTED(DBUS_SYSTEM_BUS_DEFAULT_ADDRESS, "$DBUS_SYSTEM_BUS_DEFAULT_ADDRESS",[The default D-Bus address of the system bus])
1456
1457 #### Set up the pid file
1458 if ! test -z "$with_system_pid_file"; then
1459    DBUS_SYSTEM_PID_FILE=$with_system_pid_file
1460 elif test x$with_init_scripts = xredhat ; then
1461    DBUS_SYSTEM_PID_FILE=${EXPANDED_LOCALSTATEDIR}/run/messagebus.pid
1462 else
1463    DBUS_SYSTEM_PID_FILE=${EXPANDED_LOCALSTATEDIR}/run/dbus/pid
1464 fi
1465
1466 AC_SUBST(DBUS_SYSTEM_PID_FILE)
1467
1468 #### Directory to check for console ownership
1469 if ! test -z "$with_console_auth_dir"; then
1470    DBUS_CONSOLE_AUTH_DIR=$with_console_auth_dir
1471 else
1472    DBUS_CONSOLE_AUTH_DIR=/var/run/console/
1473 fi
1474
1475 AC_SUBST(DBUS_CONSOLE_AUTH_DIR)
1476 AC_DEFINE_UNQUOTED(DBUS_CONSOLE_AUTH_DIR, "$DBUS_CONSOLE_AUTH_DIR", [Directory to check for console ownerhip])
1477
1478 #### File to check for console ownership
1479 if test x$have_console_owner_file = xyes; then
1480    if ! test -z "$with_console_owner_file"; then
1481       DBUS_CONSOLE_OWNER_FILE=$with_console_owner_file
1482    else
1483       DBUS_CONSOLE_OWNER_FILE=/dev/console
1484    fi
1485 else
1486   DBUS_CONSOLE_OWNER_FILE=
1487 fi
1488
1489 AC_SUBST(DBUS_CONSOLE_OWNER_FILE)
1490 AC_DEFINE_UNQUOTED(DBUS_CONSOLE_OWNER_FILE, "$DBUS_CONSOLE_OWNER_FILE", [File to check for console ownerhip])
1491
1492 #### User to start the system bus as
1493 if test -z "$with_dbus_user" ; then
1494     DBUS_USER=messagebus
1495 else
1496     DBUS_USER=$with_dbus_user
1497 fi
1498 AC_SUBST(DBUS_USER)
1499 AC_DEFINE_UNQUOTED(DBUS_USER,"$DBUS_USER", [User for running the system BUS daemon])
1500
1501 #### Prefix to install into
1502 DBUS_PREFIX=$EXPANDED_PREFIX
1503 AC_SUBST(DBUS_PREFIX)
1504 AC_DEFINE_UNQUOTED(DBUS_PREFIX,"$DBUS_PREFIX", [Prefix for installing DBUS])
1505
1506 #### Direcotry to install data files into
1507 DBUS_DATADIR=$EXPANDED_DATADIR
1508 AC_SUBST(DBUS_DATADIR)
1509 AC_DEFINE_UNQUOTED(DBUS_DATADIR,"$DBUS_DATADIR", [Directory for installing DBUS data files])
1510
1511 #### Directory to install dbus-daemon
1512 if test -z "$with_dbus_daemondir" ; then
1513     DBUS_DAEMONDIR=$EXPANDED_BINDIR
1514 else
1515     DBUS_DAEMONDIR=$with_dbus_daemondir
1516 fi
1517 AC_SUBST(DBUS_DAEMONDIR)
1518 AC_DEFINE_UNQUOTED(DBUS_DAEMONDIR,"$DBUS_DAEMONDIR", [Directory for installing the DBUS daemon])
1519
1520 #### Directory to install the other binaries
1521 DBUS_BINDIR="$EXPANDED_BINDIR"
1522 AC_SUBST(DBUS_BINDIR)
1523 AC_DEFINE_UNQUOTED(DBUS_BINDIR,"$DBUS_BINDIR", [Directory for installing the binaries])
1524
1525 #### Directory to install the libexec binaries
1526 DBUS_LIBEXECDIR="$EXPANDED_LIBEXECDIR"
1527 AC_SUBST(DBUS_LIBEXECDIR)
1528 AC_DEFINE_UNQUOTED(DBUS_LIBEXECDIR,"$DBUS_LIBEXECDIR", [Directory for installing the libexec binaries])
1529
1530 #### Tell tests where to find certain stuff in builddir
1531
1532 DBUS_PWD=`pwd`
1533 # Useful in a cross-compilation environment, where the tests are run on the host system.
1534 AC_ARG_WITH(dbus-test-dir, AS_HELP_STRING([--with-dbus-test-dir=[dirname]],[path where the tests tools are available]),
1535                            DBUS_PWD=$withval)
1536 AC_DEFUN([TEST_PATH], [
1537 TEST_$1=${DBUS_PWD}/test/$2
1538 AC_DEFINE_UNQUOTED(TEST_$1, "$TEST_$1",
1539                    [Full path to test file test/$2 in builddir])
1540 AC_SUBST(TEST_$1)
1541 ])
1542 AC_DEFUN([TEST_PROG], [
1543 TEST_$1=${DBUS_PWD}/test/$2
1544 AC_DEFINE_UNQUOTED(TEST_$1, "$TEST_$1$EXEEXT",
1545                    [Full path to test file test/$2 in builddir])
1546 AC_SUBST(TEST_$1)
1547 ])
1548
1549 TEST_PATH(VALID_SERVICE_DIR, data/valid-service-files)
1550 TEST_PATH(INVALID_SERVICE_DIR, data/invalid-service-files)
1551 TEST_PATH(VALID_SERVICE_SYSTEM_DIR, data/valid-service-files-system)
1552 TEST_PATH(INVALID_SERVICE_SYSTEM_DIR, data/invalid-service-files-system)
1553 TEST_PROG(SERVICE_BINARY, test-service)
1554 TEST_PROG(SHELL_SERVICE_BINARY, test-shell-service)
1555 TEST_PROG(EXIT_BINARY, test-exit)
1556 TEST_PROG(SEGFAULT_BINARY, test-segfault)
1557 TEST_PROG(SLEEP_FOREVER_BINARY, test-sleep-forever)
1558 TEST_PROG(PRIVSERVER_BINARY, name-test/test-privserver)
1559
1560 AC_DEFINE_UNQUOTED(TEST_BUS_BINARY, "$DBUS_PWD/bus/dbus-daemon$EXEEXT",
1561                    [Full path to the daemon in the builddir])
1562 AC_SUBST(TEST_BUS_BINARY)
1563
1564 ## Export the non-setuid external helper
1565 TEST_LAUNCH_HELPER_BINARY="$DBUS_PWD/bus/dbus-daemon-launch-helper-test$EXEEXT"
1566 AC_SUBST(TEST_LAUNCH_HELPER_BINARY)
1567 AC_DEFINE_UNQUOTED(DBUS_TEST_LAUNCH_HELPER_BINARY, "$TEST_LAUNCH_HELPER_BINARY",
1568                    [Full path to the launch helper test program in the builddir])
1569
1570 #### Find socket directories
1571 if ! test -z "$TMPDIR" ; then
1572    DEFAULT_SOCKET_DIR=$TMPDIR
1573 elif ! test -z "$TEMP" ; then
1574    DEFAULT_SOCKET_DIR=$TEMP
1575 elif ! test -z "$TMP" ; then
1576    DEFAULT_SOCKET_DIR=$TMP
1577 else
1578    DEFAULT_SOCKET_DIR=/tmp
1579 fi
1580
1581 DEFAULT_SOCKET_DIR=`echo $DEFAULT_SOCKET_DIR | sed 's/+/%2B/g'`
1582
1583 if ! test -z "$with_test_socket_dir" ; then
1584    TEST_SOCKET_DIR="$with_test_socket_dir"
1585 else
1586    TEST_SOCKET_DIR=$DEFAULT_SOCKET_DIR
1587 fi
1588 AC_SUBST(TEST_SOCKET_DIR)
1589 AC_DEFINE_UNQUOTED(DBUS_TEST_SOCKET_DIR, "$TEST_SOCKET_DIR", [Where to put test sockets])
1590
1591 if ! test -z "$with_session_socket_dir" ; then
1592    DBUS_SESSION_SOCKET_DIR="$with_session_socket_dir"
1593 else
1594    DBUS_SESSION_SOCKET_DIR=$DEFAULT_SOCKET_DIR
1595 fi
1596 AC_DEFINE_UNQUOTED(DBUS_SESSION_SOCKET_DIR, "$DBUS_SESSION_SOCKET_DIR", [Where per-session bus puts its sockets])
1597 AC_SUBST(DBUS_SESSION_SOCKET_DIR)
1598
1599 if test x$dbus_win = xyes; then
1600         DBUS_SESSION_BUS_DEFAULT_ADDRESS="nonce-tcp:"
1601 elif test x$have_launchd = xyes; then
1602         DBUS_SESSION_BUS_DEFAULT_ADDRESS="launchd:env=DBUS_LAUNCHD_SESSION_BUS_SOCKET"
1603 else
1604         DBUS_SESSION_BUS_DEFAULT_ADDRESS="unix:tmpdir=$DBUS_SESSION_SOCKET_DIR"
1605 fi
1606 AC_SUBST(DBUS_SESSION_BUS_DEFAULT_ADDRESS)
1607
1608 # darwin needs this to initialize the environment
1609 AC_CHECK_HEADERS(crt_externs.h)
1610 AC_CHECK_FUNC(_NSGetEnviron, [AC_DEFINE(HAVE_NSGETENVIRON, 1, [Define if your system needs _NSGetEnviron to set up the environment])])
1611 AH_VERBATIM(_DARWIN_ENVIRON,
1612 [
1613 #if defined(HAVE_NSGETENVIRON) && defined(HAVE_CRT_EXTERNS_H)
1614 # include <sys/time.h>
1615 # include <crt_externs.h>
1616 # define environ (*_NSGetEnviron())
1617 #endif
1618 ])
1619
1620 AC_OUTPUT([
1621 Doxyfile
1622 dbus/versioninfo.rc
1623 dbus/dbus-arch-deps.h
1624 bus/system.conf
1625 bus/session.conf
1626 bus/messagebus
1627 bus/messagebus-config
1628 bus/org.freedesktop.dbus-session.plist
1629 bus/rc.messagebus
1630 bus/dbus.service
1631 bus/dbus.socket
1632 Makefile
1633 dbus/Makefile
1634 bus/Makefile
1635 tools/Makefile
1636 test/Makefile
1637 test/name-test/Makefile
1638 doc/Makefile
1639 doc/dbus-daemon.1
1640 dbus-1.pc
1641 test/data/valid-config-files/debug-allow-all.conf
1642 test/data/valid-config-files/debug-allow-all-sha1.conf
1643 test/data/valid-config-files-system/debug-allow-all-pass.conf
1644 test/data/valid-config-files-system/debug-allow-all-fail.conf
1645 test/data/valid-service-files/org.freedesktop.DBus.TestSuite.PrivServer.service
1646 test/data/valid-service-files/org.freedesktop.DBus.TestSuiteEchoService.service
1647 test/data/valid-service-files/org.freedesktop.DBus.TestSuiteForkingEchoService.service
1648 test/data/valid-service-files/org.freedesktop.DBus.TestSuiteSegfaultService.service
1649 test/data/valid-service-files/org.freedesktop.DBus.TestSuiteShellEchoServiceSuccess.service
1650 test/data/valid-service-files/org.freedesktop.DBus.TestSuiteShellEchoServiceFail.service
1651 test/data/valid-service-files-system/org.freedesktop.DBus.TestSuiteEchoService.service
1652 test/data/valid-service-files-system/org.freedesktop.DBus.TestSuiteSegfaultService.service
1653 test/data/valid-service-files-system/org.freedesktop.DBus.TestSuiteShellEchoServiceSuccess.service
1654 test/data/valid-service-files-system/org.freedesktop.DBus.TestSuiteShellEchoServiceFail.service
1655 test/data/invalid-service-files-system/org.freedesktop.DBus.TestSuiteNoExec.service
1656 test/data/invalid-service-files-system/org.freedesktop.DBus.TestSuiteNoUser.service
1657 test/data/invalid-service-files-system/org.freedesktop.DBus.TestSuiteNoService.service
1658 ])
1659
1660 dnl ==========================================================================
1661 echo "
1662                     D-Bus $VERSION
1663                   ==============
1664
1665         prefix:                   ${EXPANDED_PREFIX}
1666         exec_prefix:              ${exec_prefix}
1667         libdir:                   ${EXPANDED_LIBDIR}
1668         libexecdir:               ${EXPANDED_LIBEXECDIR}
1669         bindir:                   ${EXPANDED_BINDIR}
1670         sysconfdir:               ${EXPANDED_SYSCONFDIR}
1671         localstatedir:            ${EXPANDED_LOCALSTATEDIR}
1672         datadir:                  ${EXPANDED_DATADIR}
1673         source code location:     ${srcdir}
1674         compiler:                 ${CC}
1675         cflags:                   ${CFLAGS}
1676         cppflags:                 ${CPPFLAGS}
1677         cxxflags:                 ${CXXFLAGS}
1678         64-bit int:               ${DBUS_INT64_TYPE}
1679         32-bit int:               ${DBUS_INT32_TYPE}
1680         16-bit int:               ${DBUS_INT16_TYPE}
1681         Doxygen:                  ${DOXYGEN:-not found}
1682         xmlto:                    ${XMLTO:-not found}
1683         man2html:                 ${MAN2HTML:-not found}"
1684
1685 echo "
1686         Maintainer mode:          ${USE_MAINTAINER_MODE}
1687         gcc coverage profiling:   ${enable_gcov}
1688         Building unit tests:      ${enable_tests}
1689         Building verbose mode:    ${enable_verbose_mode}
1690         Building assertions:      ${enable_asserts}
1691         Building checks:          ${enable_checks}
1692         Building SELinux support: ${have_selinux}
1693         Building inotify support: ${have_inotify}
1694         Building dnotify support: ${have_dnotify}
1695         Building kqueue support:  ${have_kqueue}
1696         Building X11 code:        ${enable_x11}
1697         Building Doxygen docs:    ${enable_doxygen_docs}
1698         Building XML docs:        ${enable_xml_docs}
1699         Building cache support:   ${enable_userdb_cache}
1700         Building launchd support: ${have_launchd}
1701         Using XML parser:         ${with_xml}
1702         Init scripts style:       ${with_init_scripts}
1703         Abstract socket names:    ${ac_cv_have_abstract_sockets}
1704         System bus socket:        ${DBUS_SYSTEM_SOCKET}
1705         System bus address:       ${DBUS_SYSTEM_BUS_DEFAULT_ADDRESS}
1706         System bus PID file:      ${DBUS_SYSTEM_PID_FILE}
1707         Session bus address:      ${DBUS_SESSION_BUS_DEFAULT_ADDRESS}
1708         Console auth dir:         ${DBUS_CONSOLE_AUTH_DIR}
1709         Console owner file:       ${have_console_owner_file}
1710         Console owner file path:  ${DBUS_CONSOLE_OWNER_FILE}
1711         System bus user:          ${DBUS_USER}
1712         Session bus services dir: ${EXPANDED_DATADIR}/dbus-1/services
1713         'make check' socket dir:  ${TEST_SOCKET_DIR}
1714 "
1715 if test x$have_launchd = xyes; then
1716         echo "        launchd agent dir:        ${LAUNCHD_AGENT_DIR}"
1717 fi
1718 echo
1719
1720 if test x$enable_tests = xyes; then
1721         echo "NOTE: building with unit tests increases the size of the installed library and renders it insecure."
1722 fi
1723 if test x$enable_tests = xyes -a x$enable_asserts = xno; then
1724         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)"
1725 fi
1726 if test x$enable_gcov = xyes; then
1727         echo "NOTE: building with coverage profiling is definitely for developers only."
1728 fi
1729 if test x$enable_verbose_mode = xyes; then
1730         echo "NOTE: building with verbose mode increases library size, may slightly increase security risk, and decreases performance."
1731 fi
1732 if test x$enable_asserts = xyes; then
1733         echo "NOTE: building with assertions increases library size and decreases performance."
1734 fi
1735 if test x$enable_checks = xno; then
1736         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."
1737 fi
1738 if test x$dbus_use_libxml = xtrue; then
1739         echo
1740         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)."
1741 fi