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