Use a stamp file to represent the Doxygen output
[platform/upstream/dbus.git] / configure.in
1 dnl -*- mode: m4 -*-
2 AC_PREREQ(2.60)
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   int listen_fd;
698   struct sockaddr_un addr;
699
700   listen_fd = socket (PF_UNIX, SOCK_STREAM, 0);
701
702   if (listen_fd < 0)
703     {
704       fprintf (stderr, "socket() failed: %s\n", strerror (errno));
705       exit (1);
706     }
707
708   memset (&addr, '\0', sizeof (addr));
709   addr.sun_family = AF_UNIX;
710   strcpy (addr.sun_path, "X/tmp/dbus-fake-socket-path-used-in-configure-test");
711   addr.sun_path[0] = '\0'; /* this is what makes it abstract */
712
713   if (bind (listen_fd, (struct sockaddr*) &addr, SUN_LEN (&addr)) < 0)
714     {
715        fprintf (stderr, "Abstract socket namespace bind() failed: %s\n",
716                 strerror (errno));
717        exit (1);
718     }
719   else
720     exit (0);
721 ]])],
722               [ac_cv_have_abstract_sockets=yes],
723               [ac_cv_have_abstract_sockets=no],
724               [
725                 ac_cv_have_abstract_sockets=no
726                 warn_on_xcompile=yes
727               ]
728 )])
729 if test x$warn_on_xcompile = xyes ; then
730   AC_MSG_WARN([Cannot check for abstract sockets when cross-compiling, please use --enable-abstract-sockets])
731 fi
732 AC_LANG_POP(C)
733 fi
734
735 if test x$enable_abstract_sockets = xyes; then
736     if test x$ac_cv_have_abstract_sockets = xno; then
737         AC_MSG_ERROR([Abstract sockets explicitly required, and support not detected.])
738     fi
739 fi
740
741 if test x$enable_abstract_sockets = xno; then
742    ac_cv_have_abstract_sockets=no;
743 fi
744
745 if test x$ac_cv_have_abstract_sockets = xyes ; then
746    DBUS_PATH_OR_ABSTRACT=abstract
747    AC_DEFINE(HAVE_ABSTRACT_SOCKETS,1,[Have abstract socket namespace])
748 else
749    DBUS_PATH_OR_ABSTRACT=path
750 fi
751
752 # this is used in addresses to prefer abstract, e.g.
753 # unix:path=/foo or unix:abstract=/foo
754 AC_SUBST(DBUS_PATH_OR_ABSTRACT)
755
756 PKG_PROG_PKG_CONFIG
757
758 #### Sort out XML library
759
760 # see what we have
761 AC_CHECK_LIB(expat, XML_ParserCreate_MM,
762              [ AC_CHECK_HEADERS(expat.h, have_expat=true, have_expat=false) ],
763              have_expat=false)
764
765 # see what we want to use
766 dbus_use_libxml=false
767 dbus_use_expat=false
768 if test x$with_xml = xexpat; then
769         if ! $have_expat ; then
770            AC_MSG_ERROR([Explicitly requested expat but expat not found])
771         fi
772         dbus_use_expat=true
773 elif test x$with_xml = xlibxml; then
774         PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.6.0, have_libxml=true, have_libxml=false)
775         if ! $have_libxml ; then
776            AC_MSG_ERROR([Explicitly requested libxml but libxml not found])
777         fi
778         dbus_use_libxml=true
779 else
780         ### expat is the default because libxml can't currently survive
781         ### our brutal OOM-handling unit test setup.
782         ### http://bugzilla.gnome.org/show_bug.cgi?id=109368
783         if test x$have_expat = xfalse; then
784                 AC_MSG_ERROR([Could not find expat.h, check config.log for failed attempts])
785         fi
786         ### By default, only use Expat since it's tested and known to work.  If you're a
787         ### general-purpose OS vendor, please don't enable libxml.  For embedded use
788         ### if your OS is built around libxml, that's another case.
789         dbus_use_expat=true
790 fi
791
792 AM_CONDITIONAL(DBUS_USE_EXPAT, $dbus_use_expat)
793 AM_CONDITIONAL(DBUS_USE_LIBXML, $dbus_use_libxml)
794
795 if $dbus_use_expat; then
796    XML_LIBS=-lexpat
797    XML_CFLAGS=
798 fi
799 if $dbus_use_libxml; then
800    XML_LIBS=$LIBXML_LIBS
801    XML_CFLAGS=$LIBXML_CFLAGS
802 fi
803
804 # Thread lib detection
805 AC_CHECK_FUNC(pthread_cond_timedwait,[AC_CHECK_LIB(pthread,pthread_cond_timedwait,
806                                                     [THREAD_LIBS="-lpthread"])])
807 save_libs="$LIBS"
808 LIBS="$LIBS $THREAD_LIBS"
809 AC_CHECK_FUNC(pthread_condattr_setclock,have_pthread_condattr_setclock=true,have_pthread_condattr_setclock=false)
810 if test x$have_pthread_condattr_setclock = xtrue; then
811     AC_SEARCH_LIBS([clock_getres],[rt],[THREAD_LIBS="$THREAD_LIBS -lrt"])
812     AC_MSG_CHECKING([for CLOCK_MONOTONIC])
813     AC_TRY_COMPILE([#include <time.h>
814 #include <pthread.h>
815 ], [
816 struct timespec monotonic_timer;
817 pthread_condattr_t attr;
818 pthread_condattr_init (&attr);
819 pthread_condattr_setclock (&attr, CLOCK_MONOTONIC);
820 clock_getres (CLOCK_MONOTONIC,&monotonic_timer);
821 ], have_clock_monotonic=true, have_clock_monotonic=false)
822 if test x$have_clock_monotonic = xtrue; then
823     AC_MSG_RESULT([found])
824     AC_DEFINE(HAVE_MONOTONIC_CLOCK, 1, [Define if we have CLOCK_MONOTONIC])
825 else
826     AC_MSG_RESULT([not found])
827 fi
828 fi
829 LIBS="$save_libs"
830
831 # SELinux detection
832 if test x$enable_selinux = xno ; then
833     have_selinux=no;
834 else
835     # See if we have SELinux library
836     AC_CHECK_LIB(selinux, is_selinux_enabled,
837                  have_selinux=yes, have_selinux=no)
838
839     # see if we have the SELinux header with the new D-Bus stuff in it
840     if test x$have_selinux = xyes ; then
841         AC_MSG_CHECKING([for DBUS Flask permissions in selinux/av_permissions.h])
842         AC_TRY_COMPILE([#include <selinux/av_permissions.h>],
843                         [#ifdef DBUS__ACQUIRE_SVC return 0;
844                          #else
845                          #error DBUS__ACQUIRE_SVC not defined
846                          #endif],
847                         have_selinux=yes, have_selinux=no)
848         AC_MSG_RESULT($have_selinux)
849     fi
850
851     if test x$enable_selinux = xauto ; then
852         if test x$have_selinux = xno ; then
853                 AC_MSG_WARN([Sufficiently new SELinux library not found])
854         fi
855     else
856         if test x$have_selinux = xno ; then
857                 AC_MSG_ERROR([SElinux explicitly required, and SELinux library not found])
858         fi
859     fi
860 fi
861
862 AM_CONDITIONAL(HAVE_SELINUX, test x$have_selinux = xyes)
863
864 if test x$have_selinux = xyes ; then
865     # the selinux code creates threads
866     # which requires libpthread even on linux
867     AC_CHECK_FUNC(pthread_create,,[AC_CHECK_LIB(pthread,pthread_create,
868                                                 [SELINUX_THREAD_LIBS="-lpthread"])])
869
870     SELINUX_LIBS="-lselinux $SELINUX_THREAD_LIBS"
871     AC_DEFINE(HAVE_SELINUX,1,[SELinux support])
872 else
873     SELINUX_LIBS=
874 fi
875
876 # inotify checks
877 if test x$enable_inotify = xno ; then
878     have_inotify=no;
879 else
880     AC_CHECK_HEADERS(sys/inotify.h, have_inotify=yes, have_inotify=no)
881 fi
882
883 dnl check if inotify backend is enabled
884 if test x$have_inotify = xyes; then
885    AC_DEFINE(DBUS_BUS_ENABLE_INOTIFY,1,[Use inotify])
886    AC_CHECK_FUNCS(inotify_init1)
887 fi
888
889 AM_CONDITIONAL(DBUS_BUS_ENABLE_INOTIFY, test x$have_inotify = xyes)
890
891 # dnotify checks
892 if test x$enable_dnotify = xno ; then
893     have_dnotify=no;
894 else
895     if test x$have_inotify = xno -a x$host_os = xlinux-gnu -o x$host_os = xlinux; then
896         have_dnotify=yes;
897     else
898         have_dnotify=no;
899     fi
900 fi
901
902 dnl check if dnotify backend is enabled
903 if test x$have_dnotify = xyes; then
904    AC_DEFINE(DBUS_BUS_ENABLE_DNOTIFY_ON_LINUX,1,[Use dnotify on Linux])
905 fi
906
907 AM_CONDITIONAL(DBUS_BUS_ENABLE_DNOTIFY_ON_LINUX, test x$have_dnotify = xyes)
908
909 # kqueue checks
910 if test x$enable_kqueue = xno ; then
911     have_kqueue=no
912 else
913     have_kqueue=yes
914     AC_CHECK_HEADER(sys/event.h, , have_kqueue=no)
915     AC_CHECK_FUNC(kqueue, , have_kqueue=no)
916
917     if test x$enable_kqueue = xyes -a x$have_kqueue = xno; then
918         AC_MSG_ERROR(kqueue support explicitly enabled but not available)
919     fi
920 fi
921
922 dnl check if kqueue backend is enabled
923 if test x$have_kqueue = xyes; then
924    AC_DEFINE(DBUS_BUS_ENABLE_KQUEUE,1,[Use kqueue])
925 fi
926
927 AM_CONDITIONAL(DBUS_BUS_ENABLE_KQUEUE, test x$have_kqueue = xyes)
928
929 # launchd checks
930 if test x$enable_launchd = xno ; then
931     have_launchd=no
932 else
933     have_launchd=yes
934     AC_CHECK_HEADER([launch.h], , have_launchd=no)
935     AC_PATH_PROG([LAUNCHCTL], [launchctl])
936     if test "x$LAUNCHCTL" = "x"; then
937         have_launchd=no
938     fi
939
940     if test x$enable_launchd = xyes && test x$have_launchd = xno ; then
941         AC_MSG_ERROR([launchd support explicitly enabled but not available])
942     fi
943 fi
944
945 dnl check if launchd is enabled
946 if test x$have_launchd = xyes; then
947     AC_DEFINE(DBUS_ENABLE_LAUNCHD,1,[Use launchd autolaunch])
948 fi
949
950 AM_CONDITIONAL(DBUS_ENABLE_LAUNCHD, test x$have_launchd = xyes)
951
952 #### Directory to place launchd agent file
953 if test "x$with_launchd_agent_dir" = "x"; then
954    LAUNCHD_AGENT_DIR="/Library/LaunchAgents"
955 else
956    LAUNCHD_AGENT_DIR="$with_launchd_agent_dir"
957 fi
958
959 AC_SUBST(LAUNCHD_AGENT_DIR)
960
961 dnl console owner file
962 if test x$enable_console_owner_file = xno ; then
963     have_console_owner_file=no;
964 else
965     case $host_os in
966     solaris*)
967         have_console_owner_file=yes;
968         AC_DEFINE(HAVE_CONSOLE_OWNER_FILE,1,[Have console owner file])
969         ;;
970     *)
971         have_console_owner_file=no;;
972     esac
973 fi
974
975 AM_CONDITIONAL(HAVE_CONSOLE_OWNER_FILE, test x$have_console_owner_file = xyes)
976
977 # libaudit detection
978 if test x$enable_libaudit = xno ; then
979     have_libaudit=no;
980 else
981     # See if we have audit daemon & capabilities library
982     AC_CHECK_LIB(audit, audit_log_user_avc_message,
983                  have_libaudit=yes, have_libaudit=no)
984     if test x$have_libaudit = xyes ; then
985         AC_CHECK_LIB(cap-ng, capng_clear,
986                  have_libaudit=yes, have_libaudit=no)
987     fi
988 fi
989
990 AM_CONDITIONAL(HAVE_LIBAUDIT, test x$have_libaudit = xyes)
991
992 if test x$have_libaudit = xyes ; then
993     SELINUX_LIBS="$SELINUX_LIBS -laudit -lcap-ng"
994     AC_DEFINE(HAVE_LIBAUDIT,1,[audit daemon SELinux support])
995 fi
996
997 # Check for ADT API
998 AC_MSG_CHECKING(for ADT API)
999 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1000 #include <bsm/adt.h>
1001 adt_user_context = ADT_USER;
1002 ]], [[]])], [ check_adt_audit=yes ], [ check_adt_audit=no ])
1003
1004 if test ${check_adt_audit} = yes
1005 then
1006    AC_DEFINE([HAVE_ADT], [], [Adt audit API])
1007    ADT_LIBS="-lbsm"
1008    LIBS="-lbsm $LIBS"
1009    AC_MSG_RESULT(yes)
1010 else
1011    AC_MSG_RESULT(no)
1012 fi
1013
1014 # Check for SCM_RIGHTS
1015 AC_MSG_CHECKING([for SCM_RIGHTS])
1016 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1017 #include <sys/socket.h>
1018 #include <sys/un.h>
1019 static int x = SCM_RIGHTS;
1020 ]], [[]])],
1021 [ AC_MSG_RESULT([supported])
1022   AC_DEFINE([HAVE_UNIX_FD_PASSING], [1], [Supports sending UNIX file descriptors]) ],
1023 [ AC_MSG_RESULT([not supported]) ])
1024
1025 NETWORK_libs=
1026 if test x$dbus_win = xyes ; then
1027   if test x$dbus_wince = xyes ; then
1028     NETWORK_libs="-lws2"
1029   else
1030     NETWORK_libs="-lws2_32"
1031   fi
1032 fi
1033
1034 #### Set up final flags
1035 DBUS_CLIENT_CFLAGS=
1036 DBUS_CLIENT_LIBS="$THREAD_LIBS $NETWORK_libs"
1037 AC_SUBST(DBUS_CLIENT_CFLAGS)
1038 AC_SUBST(DBUS_CLIENT_LIBS)
1039
1040 DBUS_BUS_CFLAGS="$XML_CFLAGS"
1041 DBUS_BUS_LIBS="$XML_LIBS $SELINUX_LIBS $INTLLIBS $THREAD_LIBS $ADT_LIBS $NETWORK_libs"
1042 AC_SUBST(DBUS_BUS_CFLAGS)
1043 AC_SUBST(DBUS_BUS_LIBS)
1044
1045 DBUS_LAUNCHER_CFLAGS="$XML_CFLAGS"
1046 DBUS_LAUNCHER_LIBS="$XML_LIBS $THREAD_LIBS $NETWORK_libs"
1047 AC_SUBST(DBUS_LAUNCHER_CFLAGS)
1048 AC_SUBST(DBUS_LAUNCHER_LIBS)
1049
1050 DBUS_TEST_CFLAGS=
1051 DBUS_TEST_LIBS="$THREAD_LIBS $NETWORK_libs"
1052 AC_SUBST(DBUS_TEST_CFLAGS)
1053 AC_SUBST(DBUS_TEST_LIBS)
1054
1055 ### X11 detection
1056 if test x$dbus_win = xyes ; then
1057    enable_x11=no
1058 else
1059 AC_PATH_XTRA
1060
1061 ## for now enable_x11 just tracks have_x11,
1062 ## there's no --enable-x11
1063 if test x$no_x = xyes ; then
1064    have_x11=no
1065    enable_x11=no
1066 else
1067    have_x11=yes
1068    enable_x11=yes
1069 fi
1070
1071 if test x$enable_x11 = xyes ; then
1072    AC_DEFINE(DBUS_BUILD_X11,1,[Build X11-dependent code])
1073    DBUS_X_LIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
1074    DBUS_X_CFLAGS="$X_CFLAGS"
1075 else
1076    DBUS_X_LIBS=
1077    DBUS_X_CFLAGS=
1078 fi
1079
1080 AC_SUBST(DBUS_X_CFLAGS)
1081 AC_SUBST(DBUS_X_LIBS)
1082 fi
1083
1084
1085 #### gcc warning flags
1086
1087 cc_supports_flag() {
1088   AC_MSG_CHECKING(whether $CC supports "$@")
1089   Cfile=/tmp/foo${$}
1090   touch ${Cfile}.c
1091   $CC -c "$@" ${Cfile}.c -o ${Cfile}.o >/dev/null 2>&1
1092   rc=$?
1093   rm -f ${Cfile}.c ${Cfile}.o
1094   case $rc in
1095     0) AC_MSG_RESULT(yes);;
1096     *) AC_MSG_RESULT(no);;
1097   esac
1098   return $rc
1099 }
1100
1101 ld_supports_flag() {
1102   AC_MSG_CHECKING([whether $LD supports "$@"])
1103   AC_TRY_LINK([
1104     int one(void) { return 1; }
1105     int two(void) { return 2; }
1106   ], [ two(); ] , [_ac_ld_flag_supported=yes], [_ac_ld_flag_supported=no])
1107
1108   if test "$_ac_ld_flag_supported" = "yes"; then
1109     rm -f conftest.c
1110     touch conftest.c
1111     if $CC -c conftest.c; then
1112       ld_out=`$LD $@ -o conftest conftest.o 2>&1`
1113       ld_ret=$?
1114       if test $ld_ret -ne 0 ; then
1115         _ac_ld_flag_supported=no
1116       elif echo "$ld_out" | egrep 'option ignored|^usage:|unrecognized option|illegal option' >/dev/null ; then
1117         _ac_ld_flag_supported=no
1118       fi
1119     fi
1120     rm -f conftest.c conftest.o conftest
1121   fi
1122
1123   AC_MSG_RESULT($_ac_ld_flag_supported)
1124   if test "$_ac_ld_flag_supported" = "yes" ; then
1125     return 0
1126   else
1127     return 1
1128   fi
1129 }
1130
1131 # Don't bother with -Werror on Windows for now, too many warnings
1132 if test x$dbus_win != xyes -a x$dbus_cygwin != xyes -a x$USE_MAINTAINER_MODE = xyes; then
1133   if cc_supports_flag "-Werror"; then
1134     CFLAGS="$CFLAGS -Werror"
1135   fi
1136 fi
1137
1138 if test "x$GCC" = "xyes"; then
1139   changequote(,)dnl
1140   case " $CFLAGS " in
1141   *[\ \ ]-Wall[\ \      ]*) ;;
1142   *) CFLAGS="$CFLAGS -Wall" ;;
1143   esac
1144
1145   case " $CFLAGS " in
1146   *[\ \ ]-Wchar-subscripts[\ \  ]*) ;;
1147   *) CFLAGS="$CFLAGS -Wchar-subscripts" ;;
1148   esac
1149
1150   case " $CFLAGS " in
1151   *[\ \ ]-Wmissing-declarations[\ \     ]*) ;;
1152   *) CFLAGS="$CFLAGS -Wmissing-declarations" ;;
1153   esac
1154
1155   case " $CFLAGS " in
1156   *[\ \ ]-Wmissing-prototypes[\ \       ]*) ;;
1157   *) CFLAGS="$CFLAGS -Wmissing-prototypes" ;;
1158   esac
1159
1160   case " $CFLAGS " in
1161   *[\ \ ]-Wnested-externs[\ \   ]*) ;;
1162   *) CFLAGS="$CFLAGS -Wnested-externs" ;;
1163   esac
1164
1165   case " $CFLAGS " in
1166   *[\ \ ]-Wpointer-arith[\ \    ]*) ;;
1167   *) CFLAGS="$CFLAGS -Wpointer-arith" ;;
1168   esac
1169
1170   case " $CFLAGS " in
1171   *[\ \ ]-Wcast-align[\ \       ]*) ;;
1172   *) CFLAGS="$CFLAGS -Wcast-align" ;;
1173   esac
1174
1175   case " $CFLAGS " in
1176   *[\ \ ]-Wfloat-equal[\ \      ]*) ;;
1177   *) if cc_supports_flag -Wfloat-equals; then
1178         CFLAGS="$CFLAGS -Wfloat-equal"
1179      fi
1180      ;;
1181   esac
1182
1183   case " $CFLAGS " in
1184   *[\ \ ]-Wdeclaration-after-statement[\ \      ]*) ;;
1185   *) if cc_supports_flag -Wdeclaration-after-statement; then
1186         CFLAGS="$CFLAGS -Wdeclaration-after-statement"
1187      fi
1188      ;;
1189   esac
1190
1191   case " $CFLAGS " in
1192   *[\ \ ]-fno-common[\ \        ]*) ;;
1193   *) if cc_supports_flag -fno-common; then
1194         CFLAGS="$CFLAGS -fno-common"
1195      fi
1196      ;;
1197   esac
1198
1199   case " $CFLAGS " in
1200   *[\ \ ]-fPIC[\ \      ]*) ;;
1201   *) if test x$dbus_win = xno && cc_supports_flag -fPIC; then
1202         PIC_CFLAGS="-fPIC"
1203         if ld_supports_flag -z,relro; then
1204            PIC_LDFLAGS="-Wl,-z,relro"
1205         fi
1206      fi
1207      ;;
1208   esac
1209
1210   case " $CFLAGS " in
1211   *[\ \ ]-fPIE[\ \      ]*) ;;
1212   *) if test x$dbus_win = xno && cc_supports_flag -fPIE; then
1213         PIE_CFLAGS="-fPIE"
1214         if ld_supports_flag -z,relro; then
1215            PIE_LDFLAGS="-pie -Wl,-z,relro"
1216         else
1217            PIE_LDFLAGS="-pie"
1218         fi
1219      fi
1220      ;;
1221   esac
1222
1223   ### Disabled warnings, and compiler flag overrides
1224
1225   # Let's just ignore unused for now
1226   case " $CFLAGS " in
1227   *[\ \ ]-Wno-unused[\ \        ]*) ;;
1228   *) CFLAGS="$CFLAGS -Wno-unused" ;;
1229   esac
1230
1231   # This group is for warnings we currently don't pass.
1232   # We would like to, however.  Please fix.
1233
1234   # http://bugs.freedesktop.org/show_bug.cgi?id=17433
1235   case " $CFLAGS " in
1236   *[\ \ ]-Wno-sign-compare[\ \  ]*) ;;
1237   *) CFLAGS="$CFLAGS -Wno-sign-compare" ;;
1238   esac
1239   case " $CFLAGS " in
1240   *[\ \ ]-Wno-pointer-sign[\ \  ]*) ;;
1241   *) if cc_supports_flag -Wno-pointer-sign; then
1242         CFLAGS="$CFLAGS -Wno-pointer-sign"
1243      fi
1244      ;;
1245   esac
1246
1247   # This one is special - it's not a warning override.
1248   # http://bugs.freedesktop.org/show_bug.cgi?id=10599
1249   case " $CFLAGS " in
1250   *[\ \ ]-fno-strict-aliasing[\ \       ]*) ;;
1251   *) CFLAGS="$CFLAGS -fno-strict-aliasing" ;;
1252   esac
1253   ### End disabled warnings
1254
1255   if test "x$enable_ansi" = "xyes"; then
1256     case " $CFLAGS " in
1257     *[\ \       ]-ansi[\ \      ]*) ;;
1258     *) CFLAGS="$CFLAGS -ansi" ;;
1259     esac
1260
1261     case " $CFLAGS " in
1262     *[\ \       ]-D_POSIX_C_SOURCE*) ;;
1263     *) CFLAGS="$CFLAGS -D_POSIX_C_SOURCE=199309L" ;;
1264     esac
1265
1266     case " $CFLAGS " in
1267     *[\ \       ]-D_BSD_SOURCE[\ \      ]*) ;;
1268     *) CFLAGS="$CFLAGS -D_BSD_SOURCE" ;;
1269     esac
1270
1271     case " $CFLAGS " in
1272     *[\ \       ]-pedantic[\ \  ]*) ;;
1273     *) CFLAGS="$CFLAGS -pedantic" ;;
1274     esac
1275   fi
1276   if test x$enable_gcov = xyes; then
1277     case " $CFLAGS " in
1278     *[\ \       ]-fprofile-arcs[\ \     ]*) ;;
1279     *) CFLAGS="$CFLAGS -fprofile-arcs" ;;
1280     esac
1281     case " $CFLAGS " in
1282     *[\ \       ]-ftest-coverage[\ \    ]*) ;;
1283     *) CFLAGS="$CFLAGS -ftest-coverage" ;;
1284     esac
1285
1286     ## remove optimization
1287     CFLAGS=`echo "$CFLAGS" | sed -e 's/-O[0-9]*//g'`
1288   fi
1289   changequote([,])dnl
1290 else
1291   if test x$enable_gcov = xyes; then
1292     AC_MSG_ERROR([--enable-gcov can only be used with gcc])
1293   fi
1294 fi
1295
1296 AC_SUBST(PIC_CFLAGS)
1297 AC_SUBST(PIC_LDFLAGS)
1298 AC_SUBST(PIE_CFLAGS)
1299 AC_SUBST(PIE_LDFLAGS)
1300
1301 if ld_supports_flag --gc-sections; then
1302   SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
1303   CFLAGS="-ffunction-sections -fdata-sections $CFLAGS"
1304 fi
1305 AC_SUBST(SECTION_FLAGS)
1306 AC_SUBST(SECTION_LDFLAGS)
1307 AC_MSG_RESULT($ac_gcsections)
1308
1309 # Add -D_POSIX_PTHREAD_SEMANTICS if on Solaris
1310 #
1311 case $host_os in
1312     solaris*)
1313        CFLAGS="$CFLAGS -D_POSIX_PTHREAD_SEMANTICS" ;;
1314 esac
1315
1316 changequote(,)dnl
1317 # compress spaces in flags
1318 CFLAGS=`echo "$CFLAGS" | sed -e 's/ +/ /g'`
1319 CXXFLAGS=`echo "$CXXFLAGS" | sed -e 's/ +/ /g'`
1320 CPPFLAGS=`echo "$CPPFLAGS" | sed -e 's/ +/ /g'`
1321 changequote([,])dnl
1322
1323 ### Doxygen Documentation
1324
1325 AC_PATH_PROG(DOXYGEN, doxygen, no)
1326
1327 AC_MSG_CHECKING([whether to build Doxygen documentation])
1328
1329 if test x$DOXYGEN = xno ; then
1330     have_doxygen=no
1331 else
1332     have_doxygen=yes
1333 fi
1334
1335 if test x$enable_doxygen_docs = xauto ; then
1336     if test x$have_doxygen = xno ; then
1337         enable_doxygen_docs=no
1338     else
1339         enable_doxygen_docs=yes
1340     fi
1341 fi
1342
1343 if test x$enable_doxygen_docs = xyes; then
1344     if test x$have_doxygen = xno; then
1345         AC_MSG_ERROR([Building Doxygen docs explicitly required, but Doxygen not found])
1346     fi
1347 fi
1348
1349 AM_CONDITIONAL(DBUS_DOXYGEN_DOCS_ENABLED, test x$enable_doxygen_docs = xyes)
1350 AC_MSG_RESULT($enable_doxygen_docs)
1351
1352 XSLTPROC=false
1353 AC_CHECK_PROGS([XSLTPROC], [xsltproc])
1354 AM_CONDITIONAL(DBUS_HAVE_XSLTPROC, test "$XSLTPROC" != false)
1355
1356 ### XML Documentation
1357
1358 AC_PATH_PROG(XMLTO, xmlto, no)
1359
1360 AC_MSG_CHECKING([whether to build XML documentation])
1361
1362 if test x$XMLTO = xno ; then
1363     have_xmlto=no
1364 else
1365     have_xmlto=yes
1366 fi
1367
1368 if test x$enable_xml_docs = xauto ; then
1369     if test x$have_xmlto = xno ; then
1370         enable_xml_docs=no
1371     else
1372         enable_xml_docs=yes
1373     fi
1374 fi
1375
1376 if test x$enable_xml_docs = xyes; then
1377     if test x$have_xmlto = xno; then
1378         AC_MSG_ERROR([Building XML docs explicitly required, but xmlto not found])
1379     fi
1380 fi
1381
1382 AM_CONDITIONAL(DBUS_XML_DOCS_ENABLED, test x$enable_xml_docs = xyes)
1383 AC_MSG_RESULT($enable_xml_docs)
1384
1385 AC_PATH_PROG([MAN2HTML], [man2html])
1386 AC_ARG_VAR([MAN2HTML], [Path to man2html (optional)])
1387 AM_CONDITIONAL(DBUS_HAVE_MAN2HTML, test x$MAN2HTML != x)
1388
1389 AM_CONDITIONAL(DBUS_CAN_UPLOAD_DOCS,
1390     test x$enable_doxygen_docs = xyes -a x$enable_xml_docs = xyes -a \
1391          x$MAN2HTML != x)
1392
1393 #### Have to go $localstatedir->$prefix/var->/usr/local/var
1394
1395 #### find the actual value for $prefix that we'll end up with
1396 ##   (I know this is broken and should be done in the Makefile, but
1397 ##    that's a major pain and almost nobody actually seems to care)
1398 AS_AC_EXPAND(EXPANDED_PREFIX, "$prefix")
1399 AS_AC_EXPAND(EXPANDED_LOCALSTATEDIR, "$localstatedir")
1400 AS_AC_EXPAND(EXPANDED_SYSCONFDIR, "$sysconfdir")
1401 AS_AC_EXPAND(EXPANDED_BINDIR, "$bindir")
1402 AS_AC_EXPAND(EXPANDED_LIBDIR, "$libdir")
1403 AS_AC_EXPAND(EXPANDED_LIBEXECDIR, "$libexecdir")
1404 AS_AC_EXPAND(EXPANDED_DATADIR, "$datadir")
1405
1406 #### Check our operating system
1407 operating_system=unknown
1408 if test -f /etc/redhat-release || test -f $EXPANDED_SYSCONFDIR/redhat-release ; then
1409    operating_system=redhat
1410 fi
1411
1412 if test -f /etc/slackware-version || test -f $EXPANDED_SYSCONFDIR/slackware-version ; then
1413    operating_system=slackware
1414 fi
1415
1416 if test -f /usr/bin/cygwin1.dll || test -f $EXPANDED_BINDIR/cygwin1.dll ; then
1417    operating_system=cygwin
1418 fi
1419
1420 #### Sort out init scripts
1421
1422 if test x$with_init_scripts = x; then
1423     case x$operating_system in
1424         xredhat)        with_init_scripts=redhat ;;
1425         xslackware)     with_init_scripts=slackware ;;
1426         xcygwin)        with_init_scripts=cygwin ;;
1427         *)                      with_init_scripts=none ;;
1428     esac
1429 fi
1430
1431 AM_CONDITIONAL(DBUS_INIT_SCRIPTS_RED_HAT, test x$with_init_scripts = xredhat)
1432 AM_CONDITIONAL(DBUS_INIT_SCRIPTS_SLACKWARE, test x$with_init_scripts = xslackware)
1433 AM_CONDITIONAL(DBUS_INIT_SCRIPTS_CYGWIN, test x$with_init_scripts = xcygwin)
1434
1435 ##### systemd unit files
1436 AC_ARG_WITH([systemdsystemunitdir],
1437 AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files]),
1438         [], [with_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)])
1439 if test "x$with_systemdsystemunitdir" != xno; then
1440    AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])
1441 fi
1442 AM_CONDITIONAL(HAVE_SYSTEMD, [test -n "$with_systemdsystemunitdir" -a "x$with_systemdsystemunitdir" != xno ])
1443
1444 ##### Set up location for system bus socket
1445 if ! test -z "$with_system_socket"; then
1446    DBUS_SYSTEM_SOCKET=$with_system_socket
1447 else
1448    DBUS_SYSTEM_SOCKET=${EXPANDED_LOCALSTATEDIR}/run/dbus/system_bus_socket
1449 fi
1450
1451 AC_SUBST(DBUS_SYSTEM_SOCKET)
1452 AC_DEFINE_UNQUOTED(DBUS_SYSTEM_SOCKET,"$DBUS_SYSTEM_SOCKET",[The name of the socket the system bus listens on by default])
1453
1454 ## system bus only listens on local domain sockets, and never
1455 ## on an abstract socket (so only root can create the socket)
1456 DBUS_SYSTEM_BUS_DEFAULT_ADDRESS="unix:path=$DBUS_SYSTEM_SOCKET"
1457 AC_SUBST(DBUS_SYSTEM_BUS_DEFAULT_ADDRESS)
1458 AC_DEFINE_UNQUOTED(DBUS_SYSTEM_BUS_DEFAULT_ADDRESS, "$DBUS_SYSTEM_BUS_DEFAULT_ADDRESS",[The default D-Bus address of the system bus])
1459
1460 #### Set up the pid file
1461 if ! test -z "$with_system_pid_file"; then
1462    DBUS_SYSTEM_PID_FILE=$with_system_pid_file
1463 elif test x$with_init_scripts = xredhat ; then
1464    DBUS_SYSTEM_PID_FILE=${EXPANDED_LOCALSTATEDIR}/run/messagebus.pid
1465 else
1466    DBUS_SYSTEM_PID_FILE=${EXPANDED_LOCALSTATEDIR}/run/dbus/pid
1467 fi
1468
1469 AC_SUBST(DBUS_SYSTEM_PID_FILE)
1470
1471 #### Directory to check for console ownership
1472 if ! test -z "$with_console_auth_dir"; then
1473    DBUS_CONSOLE_AUTH_DIR=$with_console_auth_dir
1474 else
1475    DBUS_CONSOLE_AUTH_DIR=/var/run/console/
1476 fi
1477
1478 AC_SUBST(DBUS_CONSOLE_AUTH_DIR)
1479 AC_DEFINE_UNQUOTED(DBUS_CONSOLE_AUTH_DIR, "$DBUS_CONSOLE_AUTH_DIR", [Directory to check for console ownerhip])
1480
1481 #### File to check for console ownership
1482 if test x$have_console_owner_file = xyes; then
1483    if ! test -z "$with_console_owner_file"; then
1484       DBUS_CONSOLE_OWNER_FILE=$with_console_owner_file
1485    else
1486       DBUS_CONSOLE_OWNER_FILE=/dev/console
1487    fi
1488 else
1489   DBUS_CONSOLE_OWNER_FILE=
1490 fi
1491
1492 AC_SUBST(DBUS_CONSOLE_OWNER_FILE)
1493 AC_DEFINE_UNQUOTED(DBUS_CONSOLE_OWNER_FILE, "$DBUS_CONSOLE_OWNER_FILE", [File to check for console ownerhip])
1494
1495 #### User to start the system bus as
1496 if test -z "$with_dbus_user" ; then
1497     DBUS_USER=messagebus
1498 else
1499     DBUS_USER=$with_dbus_user
1500 fi
1501 AC_SUBST(DBUS_USER)
1502 AC_DEFINE_UNQUOTED(DBUS_USER,"$DBUS_USER", [User for running the system BUS daemon])
1503
1504 #### Prefix to install into
1505 DBUS_PREFIX=$EXPANDED_PREFIX
1506 AC_SUBST(DBUS_PREFIX)
1507 AC_DEFINE_UNQUOTED(DBUS_PREFIX,"$DBUS_PREFIX", [Prefix for installing DBUS])
1508
1509 #### Direcotry to install data files into
1510 DBUS_DATADIR=$EXPANDED_DATADIR
1511 AC_SUBST(DBUS_DATADIR)
1512 AC_DEFINE_UNQUOTED(DBUS_DATADIR,"$DBUS_DATADIR", [Directory for installing DBUS data files])
1513
1514 #### Directory to install dbus-daemon
1515 if test -z "$with_dbus_daemondir" ; then
1516     DBUS_DAEMONDIR=$EXPANDED_BINDIR
1517 else
1518     DBUS_DAEMONDIR=$with_dbus_daemondir
1519 fi
1520 AC_SUBST(DBUS_DAEMONDIR)
1521 AC_DEFINE_UNQUOTED(DBUS_DAEMONDIR,"$DBUS_DAEMONDIR", [Directory for installing the DBUS daemon])
1522
1523 #### Directory to install the other binaries
1524 DBUS_BINDIR="$EXPANDED_BINDIR"
1525 AC_SUBST(DBUS_BINDIR)
1526 AC_DEFINE_UNQUOTED(DBUS_BINDIR,"$DBUS_BINDIR", [Directory for installing the binaries])
1527
1528 #### Directory to install the libexec binaries
1529 DBUS_LIBEXECDIR="$EXPANDED_LIBEXECDIR"
1530 AC_SUBST(DBUS_LIBEXECDIR)
1531 AC_DEFINE_UNQUOTED(DBUS_LIBEXECDIR,"$DBUS_LIBEXECDIR", [Directory for installing the libexec binaries])
1532
1533 #### Tell tests where to find certain stuff in builddir
1534
1535 DBUS_PWD=`pwd`
1536 # Useful in a cross-compilation environment, where the tests are run on the host system.
1537 AC_ARG_WITH(dbus-test-dir, AS_HELP_STRING([--with-dbus-test-dir=[dirname]],[path where the tests tools are available]),
1538                            DBUS_PWD=$withval)
1539 AC_DEFUN([TEST_PATH], [
1540 TEST_$1=${DBUS_PWD}/test/$2
1541 AC_DEFINE_UNQUOTED(TEST_$1, "$TEST_$1",
1542                    [Full path to test file test/$2 in builddir])
1543 AC_SUBST(TEST_$1)
1544 ])
1545 AC_DEFUN([TEST_PROG], [
1546 TEST_$1=${DBUS_PWD}/test/$2
1547 AC_DEFINE_UNQUOTED(TEST_$1, "$TEST_$1$EXEEXT",
1548                    [Full path to test file test/$2 in builddir])
1549 AC_SUBST(TEST_$1)
1550 ])
1551
1552 TEST_PATH(VALID_SERVICE_DIR, data/valid-service-files)
1553 TEST_PATH(INVALID_SERVICE_DIR, data/invalid-service-files)
1554 TEST_PATH(VALID_SERVICE_SYSTEM_DIR, data/valid-service-files-system)
1555 TEST_PATH(INVALID_SERVICE_SYSTEM_DIR, data/invalid-service-files-system)
1556 TEST_PROG(SERVICE_BINARY, test-service)
1557 TEST_PROG(SHELL_SERVICE_BINARY, test-shell-service)
1558 TEST_PROG(EXIT_BINARY, test-exit)
1559 TEST_PROG(SEGFAULT_BINARY, test-segfault)
1560 TEST_PROG(SLEEP_FOREVER_BINARY, test-sleep-forever)
1561 TEST_PROG(PRIVSERVER_BINARY, name-test/test-privserver)
1562
1563 AC_DEFINE_UNQUOTED(TEST_BUS_BINARY, "$DBUS_PWD/bus/dbus-daemon$EXEEXT",
1564                    [Full path to the daemon in the builddir])
1565 AC_SUBST(TEST_BUS_BINARY)
1566
1567 ## Export the non-setuid external helper
1568 TEST_LAUNCH_HELPER_BINARY="$DBUS_PWD/bus/dbus-daemon-launch-helper-test$EXEEXT"
1569 AC_SUBST(TEST_LAUNCH_HELPER_BINARY)
1570 AC_DEFINE_UNQUOTED(DBUS_TEST_LAUNCH_HELPER_BINARY, "$TEST_LAUNCH_HELPER_BINARY",
1571                    [Full path to the launch helper test program in the builddir])
1572
1573 #### Find socket directories
1574 if ! test -z "$TMPDIR" ; then
1575    DEFAULT_SOCKET_DIR=$TMPDIR
1576 elif ! test -z "$TEMP" ; then
1577    DEFAULT_SOCKET_DIR=$TEMP
1578 elif ! test -z "$TMP" ; then
1579    DEFAULT_SOCKET_DIR=$TMP
1580 else
1581    DEFAULT_SOCKET_DIR=/tmp
1582 fi
1583
1584 DEFAULT_SOCKET_DIR=`echo $DEFAULT_SOCKET_DIR | sed 's/+/%2B/g'`
1585
1586 if ! test -z "$with_test_socket_dir" ; then
1587    TEST_SOCKET_DIR="$with_test_socket_dir"
1588 else
1589    TEST_SOCKET_DIR=$DEFAULT_SOCKET_DIR
1590 fi
1591 AC_SUBST(TEST_SOCKET_DIR)
1592 AC_DEFINE_UNQUOTED(DBUS_TEST_SOCKET_DIR, "$TEST_SOCKET_DIR", [Where to put test sockets])
1593
1594 if ! test -z "$with_session_socket_dir" ; then
1595    DBUS_SESSION_SOCKET_DIR="$with_session_socket_dir"
1596 else
1597    DBUS_SESSION_SOCKET_DIR=$DEFAULT_SOCKET_DIR
1598 fi
1599 AC_DEFINE_UNQUOTED(DBUS_SESSION_SOCKET_DIR, "$DBUS_SESSION_SOCKET_DIR", [Where per-session bus puts its sockets])
1600 AC_SUBST(DBUS_SESSION_SOCKET_DIR)
1601
1602 if test x$dbus_win = xyes; then
1603         DBUS_SESSION_BUS_DEFAULT_ADDRESS="nonce-tcp:"
1604 elif test x$have_launchd = xyes; then
1605         DBUS_SESSION_BUS_DEFAULT_ADDRESS="launchd:env=DBUS_LAUNCHD_SESSION_BUS_SOCKET"
1606 else
1607         DBUS_SESSION_BUS_DEFAULT_ADDRESS="unix:tmpdir=$DBUS_SESSION_SOCKET_DIR"
1608 fi
1609 AC_SUBST(DBUS_SESSION_BUS_DEFAULT_ADDRESS)
1610
1611 # darwin needs this to initialize the environment
1612 AC_CHECK_HEADERS(crt_externs.h)
1613 AC_CHECK_FUNC(_NSGetEnviron, [AC_DEFINE(HAVE_NSGETENVIRON, 1, [Define if your system needs _NSGetEnviron to set up the environment])])
1614 AH_VERBATIM(_DARWIN_ENVIRON,
1615 [
1616 #if defined(HAVE_NSGETENVIRON) && defined(HAVE_CRT_EXTERNS_H)
1617 # include <sys/time.h>
1618 # include <crt_externs.h>
1619 # define environ (*_NSGetEnviron())
1620 #endif
1621 ])
1622
1623 AC_OUTPUT([
1624 Doxyfile
1625 dbus/versioninfo.rc
1626 dbus/dbus-arch-deps.h
1627 bus/system.conf
1628 bus/session.conf
1629 bus/messagebus
1630 bus/messagebus-config
1631 bus/org.freedesktop.dbus-session.plist
1632 bus/rc.messagebus
1633 bus/dbus.service
1634 bus/dbus.socket
1635 Makefile
1636 dbus/Makefile
1637 bus/Makefile
1638 tools/Makefile
1639 test/Makefile
1640 test/name-test/Makefile
1641 doc/Makefile
1642 doc/dbus-daemon.1
1643 dbus-1.pc
1644 test/data/valid-config-files/debug-allow-all.conf
1645 test/data/valid-config-files/debug-allow-all-sha1.conf
1646 test/data/valid-config-files-system/debug-allow-all-pass.conf
1647 test/data/valid-config-files-system/debug-allow-all-fail.conf
1648 test/data/valid-service-files/org.freedesktop.DBus.TestSuite.PrivServer.service
1649 test/data/valid-service-files/org.freedesktop.DBus.TestSuiteEchoService.service
1650 test/data/valid-service-files/org.freedesktop.DBus.TestSuiteForkingEchoService.service
1651 test/data/valid-service-files/org.freedesktop.DBus.TestSuiteSegfaultService.service
1652 test/data/valid-service-files/org.freedesktop.DBus.TestSuiteShellEchoServiceSuccess.service
1653 test/data/valid-service-files/org.freedesktop.DBus.TestSuiteShellEchoServiceFail.service
1654 test/data/valid-service-files-system/org.freedesktop.DBus.TestSuiteEchoService.service
1655 test/data/valid-service-files-system/org.freedesktop.DBus.TestSuiteSegfaultService.service
1656 test/data/valid-service-files-system/org.freedesktop.DBus.TestSuiteShellEchoServiceSuccess.service
1657 test/data/valid-service-files-system/org.freedesktop.DBus.TestSuiteShellEchoServiceFail.service
1658 test/data/invalid-service-files-system/org.freedesktop.DBus.TestSuiteNoExec.service
1659 test/data/invalid-service-files-system/org.freedesktop.DBus.TestSuiteNoUser.service
1660 test/data/invalid-service-files-system/org.freedesktop.DBus.TestSuiteNoService.service
1661 ])
1662
1663 dnl ==========================================================================
1664 echo "
1665                     D-Bus $VERSION
1666                   ==============
1667
1668         prefix:                   ${EXPANDED_PREFIX}
1669         exec_prefix:              ${exec_prefix}
1670         libdir:                   ${EXPANDED_LIBDIR}
1671         libexecdir:               ${EXPANDED_LIBEXECDIR}
1672         bindir:                   ${EXPANDED_BINDIR}
1673         sysconfdir:               ${EXPANDED_SYSCONFDIR}
1674         localstatedir:            ${EXPANDED_LOCALSTATEDIR}
1675         datadir:                  ${EXPANDED_DATADIR}
1676         source code location:     ${srcdir}
1677         compiler:                 ${CC}
1678         cflags:                   ${CFLAGS}
1679         cppflags:                 ${CPPFLAGS}
1680         cxxflags:                 ${CXXFLAGS}
1681         64-bit int:               ${DBUS_INT64_TYPE}
1682         32-bit int:               ${DBUS_INT32_TYPE}
1683         16-bit int:               ${DBUS_INT16_TYPE}
1684         Doxygen:                  ${DOXYGEN:-not found}
1685         xmlto:                    ${XMLTO:-not found}
1686         man2html:                 ${MAN2HTML:-not found}"
1687
1688 echo "
1689         Maintainer mode:          ${USE_MAINTAINER_MODE}
1690         gcc coverage profiling:   ${enable_gcov}
1691         Building unit tests:      ${enable_tests}
1692         Building verbose mode:    ${enable_verbose_mode}
1693         Building assertions:      ${enable_asserts}
1694         Building checks:          ${enable_checks}
1695         Building SELinux support: ${have_selinux}
1696         Building inotify support: ${have_inotify}
1697         Building dnotify support: ${have_dnotify}
1698         Building kqueue support:  ${have_kqueue}
1699         Building X11 code:        ${enable_x11}
1700         Building Doxygen docs:    ${enable_doxygen_docs}
1701         Building XML docs:        ${enable_xml_docs}
1702         Building cache support:   ${enable_userdb_cache}
1703         Building launchd support: ${have_launchd}
1704         Gettext libs (empty OK):  ${INTLLIBS}
1705         Using XML parser:         ${with_xml}
1706         Init scripts style:       ${with_init_scripts}
1707         Abstract socket names:    ${ac_cv_have_abstract_sockets}
1708         System bus socket:        ${DBUS_SYSTEM_SOCKET}
1709         System bus address:       ${DBUS_SYSTEM_BUS_DEFAULT_ADDRESS}
1710         System bus PID file:      ${DBUS_SYSTEM_PID_FILE}
1711         Session bus address:      ${DBUS_SESSION_BUS_DEFAULT_ADDRESS}
1712         Console auth dir:         ${DBUS_CONSOLE_AUTH_DIR}
1713         Console owner file:       ${have_console_owner_file}
1714         Console owner file path:  ${DBUS_CONSOLE_OWNER_FILE}
1715         System bus user:          ${DBUS_USER}
1716         Session bus services dir: ${EXPANDED_DATADIR}/dbus-1/services
1717         'make check' socket dir:  ${TEST_SOCKET_DIR}
1718 "
1719 if test x$have_launchd = xyes; then
1720         echo "        launchd agent dir:        ${LAUNCHD_AGENT_DIR}"
1721 fi
1722 echo
1723
1724 if test x$enable_tests = xyes; then
1725         echo "NOTE: building with unit tests increases the size of the installed library and renders it insecure."
1726 fi
1727 if test x$enable_tests = xyes -a x$enable_asserts = xno; then
1728         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)"
1729 fi
1730 if test x$enable_gcov = xyes; then
1731         echo "NOTE: building with coverage profiling is definitely for developers only."
1732 fi
1733 if test x$enable_verbose_mode = xyes; then
1734         echo "NOTE: building with verbose mode increases library size, may slightly increase security risk, and decreases performance."
1735 fi
1736 if test x$enable_asserts = xyes; then
1737         echo "NOTE: building with assertions increases library size and decreases performance."
1738 fi
1739 if test x$enable_checks = xno; then
1740         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."
1741 fi
1742 if test x$dbus_use_libxml = xtrue; then
1743         echo
1744         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)."
1745 fi