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