Add "PrivServer" test which exercises DBusServer and dbus_shutdown
[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         dbus_use_expat=true
855         if ! $have_expat ; then
856            AC_MSG_ERROR([Explicitly requested expat but expat not found])
857         fi
858 elif test x$with_xml = xlibxml; then
859         dbus_use_libxml=true
860         PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.6.0, have_libxml=true, have_libxml=false)
861
862         if ! $have_libxml ; then
863            AC_MSG_ERROR([Explicitly requested libxml but libxml not found])
864         fi
865 else
866         ### expat is the default because libxml can't currently survive 
867         ### our brutal OOM-handling unit test setup.
868         ### http://bugzilla.gnome.org/show_bug.cgi?id=109368
869         if $have_expat ; then
870                 with_xml=expat
871                 dbus_use_expat=true
872         elif $have_libxml ; then
873                 with_xml=libxml
874                 dbus_use_libxml=true
875         else
876                 AC_MSG_ERROR([No XML library found, check config.log for failed attempts])
877         fi
878 fi
879
880 AM_CONDITIONAL(DBUS_USE_EXPAT, $dbus_use_expat)
881 AM_CONDITIONAL(DBUS_USE_LIBXML, $dbus_use_libxml)
882
883 if $dbus_use_expat; then
884    XML_LIBS=-lexpat
885    XML_CFLAGS=
886 fi
887 if $dbus_use_libxml; then
888    XML_LIBS=$LIBXML_LIBS
889    XML_CFLAGS=$LIBXML_CFLAGS
890 fi
891
892 # Thread lib detection
893 AC_CHECK_FUNC(pthread_cond_timedwait,,[AC_CHECK_LIB(pthread,pthread_cond_timedwait,
894                                                     [THREAD_LIBS="-lpthread"])])
895
896 # SELinux detection
897 if test x$enable_selinux = xno ; then
898     have_selinux=no;
899 else
900     # See if we have SELinux library
901     AC_CHECK_LIB(selinux, is_selinux_enabled, 
902                  have_selinux=yes, have_selinux=no)
903
904     # see if we have the SELinux header with the new D-Bus stuff in it
905     if test x$have_selinux = xyes ; then
906         AC_MSG_CHECKING([for DBUS Flask permissions in selinux/av_permissions.h])
907         AC_TRY_COMPILE([#include <selinux/av_permissions.h>],
908                         [#ifdef DBUS__ACQUIRE_SVC return 0;
909                          #else
910                          #error DBUS__ACQUIRE_SVC not defined
911                          #endif],
912                         have_selinux=yes, have_selinux=no)
913         AC_MSG_RESULT($have_selinux)
914     fi
915
916     if test x$enable_selinux = xauto ; then
917         if test x$have_selinux = xno ; then
918                 AC_MSG_WARN([Sufficiently new SELinux library not found])
919         fi
920     else 
921         if test x$have_selinux = xno ; then
922                 AC_MSG_ERROR([SElinux explicitly required, and SELinux library not found])
923         fi
924     fi
925 fi
926
927 AM_CONDITIONAL(HAVE_SELINUX, test x$have_selinux = xyes)
928
929 if test x$have_selinux = xyes ; then
930     # the selinux code creates threads
931     # which requires libpthread even on linux
932     AC_CHECK_FUNC(pthread_create,,[AC_CHECK_LIB(pthread,pthread_create,
933                                                 [SELINUX_THREAD_LIBS="-lpthread"])])
934
935     SELINUX_LIBS="-lselinux $SELINUX_THREAD_LIBS"
936     AC_DEFINE(HAVE_SELINUX,1,[SELinux support])
937 else
938     SELINUX_LIBS=
939 fi
940
941 # inotify checks
942 if test x$enable_inotify = xno ; then
943     have_inotify=no;
944 else
945     AC_CHECK_HEADERS(sys/inotify.h, have_inotify=yes, have_inotify=no)
946 fi
947
948 dnl check if inotify backend is enabled
949 if test x$have_inotify = xyes; then
950    AC_DEFINE(DBUS_BUS_ENABLE_INOTIFY,1,[Use inotify])
951
952 fi
953
954 AM_CONDITIONAL(DBUS_BUS_ENABLE_INOTIFY, test x$have_inotify = xyes)
955
956 # dnotify checks
957 if test x$enable_dnotify = xno ; then
958     have_dnotify=no;
959 else
960     if test x$have_inotify = xno -a x$target_os = xlinux-gnu -o x$target_os = xlinux; then
961         have_dnotify=yes;       
962     else
963         have_dnotify=no;
964     fi
965 fi
966
967 dnl check if dnotify backend is enabled
968 if test x$have_dnotify = xyes; then
969    AC_DEFINE(DBUS_BUS_ENABLE_DNOTIFY_ON_LINUX,1,[Use dnotify on Linux])
970 fi
971
972 AM_CONDITIONAL(DBUS_BUS_ENABLE_DNOTIFY_ON_LINUX, test x$have_dnotify = xyes)
973
974 # kqueue checks
975 if test x$enable_kqueue = xno ; then
976     have_kqueue=no
977 else
978     have_kqueue=yes
979     AC_CHECK_HEADER(sys/event.h, , have_kqueue=no)
980     AC_CHECK_FUNC(kqueue, , have_kqueue=no)
981
982     if test x$enable_kqueue = xyes -a x$have_kqueue = xno; then
983         AC_MSG_ERROR(kqueue support explicitly enabled but not available)
984     fi
985 fi
986
987 dnl check if kqueue backend is enabled
988 if test x$have_kqueue = xyes; then
989    AC_DEFINE(DBUS_BUS_ENABLE_KQUEUE,1,[Use kqueue])
990 fi
991
992 AM_CONDITIONAL(DBUS_BUS_ENABLE_KQUEUE, test x$have_kqueue = xyes) 
993
994 dnl console owner file
995 if test x$enable_console_owner_file = xno ; then
996     have_console_owner_file=no;
997 else
998     case $target_os in
999     solaris*)
1000         have_console_owner_file=yes;
1001         AC_DEFINE(HAVE_CONSOLE_OWNER_FILE,1,[Have console owner file])
1002         ;;
1003     *)
1004         have_console_owner_file=no;;
1005     esac
1006 fi
1007
1008 AM_CONDITIONAL(HAVE_CONSOLE_OWNER_FILE, test x$have_console_owner_file = xyes)
1009
1010 # libaudit detection
1011 if test x$enable_libaudit = xno ; then
1012     have_libaudit=no;
1013 else
1014     # See if we have audit daemon & capabilities library
1015     AC_CHECK_LIB(audit, audit_log_user_avc_message, 
1016                  have_libaudit=yes, have_libaudit=no)
1017     if test x$have_libaudit = xyes ; then
1018         AC_CHECK_LIB(cap, cap_set_proc, 
1019                  have_libaudit=yes, have_libaudit=no)
1020     fi
1021 fi
1022
1023 AM_CONDITIONAL(HAVE_LIBAUDIT, test x$have_libaudit = xyes)
1024
1025 if test x$have_libaudit = xyes ; then
1026     SELINUX_LIBS="$SELINUX_LIBS -laudit"
1027     LIBS="-lcap $LIBS"
1028     AC_DEFINE(HAVE_LIBAUDIT,1,[audit daemon SELinux support])
1029 fi
1030
1031 #### Set up final flags
1032 DBUS_CLIENT_CFLAGS=
1033 DBUS_CLIENT_LIBS="$THREAD_LIBS"
1034 AC_SUBST(DBUS_CLIENT_CFLAGS)
1035 AC_SUBST(DBUS_CLIENT_LIBS)
1036
1037 DBUS_BUS_CFLAGS="$XML_CFLAGS"
1038 DBUS_BUS_LIBS="$XML_LIBS $SELINUX_LIBS $INTLLIBS $THREAD_LIBS"
1039 AC_SUBST(DBUS_BUS_CFLAGS)
1040 AC_SUBST(DBUS_BUS_LIBS)
1041
1042 DBUS_LAUNCHER_CFLAGS="$XML_CFLAGS"
1043 DBUS_LAUNCHER_LIBS="$XML_LIBS $THREAD_LIBS"
1044 AC_SUBST(DBUS_LAUNCHER_CFLAGS)
1045 AC_SUBST(DBUS_LAUNCHER_LIBS)
1046
1047 DBUS_TEST_CFLAGS=
1048 DBUS_TEST_LIBS="$THREAD_LIBS"
1049 AC_SUBST(DBUS_TEST_CFLAGS)
1050 AC_SUBST(DBUS_TEST_LIBS)
1051
1052 ### X11 detection
1053 AC_PATH_XTRA
1054
1055 ## for now enable_x11 just tracks have_x11, 
1056 ## there's no --enable-x11
1057 if test x$no_x = xyes ; then
1058    have_x11=no
1059    enable_x11=no
1060 else
1061    have_x11=yes
1062    enable_x11=yes
1063 fi
1064
1065 if test x$enable_x11 = xyes ; then
1066    AC_DEFINE(DBUS_BUILD_X11,1,[Build X11-dependent code])
1067    DBUS_X_LIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
1068    DBUS_X_CFLAGS="$X_CFLAGS"
1069 else
1070    DBUS_X_LIBS=
1071    DBUS_X_CFLAGS=
1072 fi
1073
1074 AC_SUBST(DBUS_X_CFLAGS)
1075 AC_SUBST(DBUS_X_LIBS)
1076
1077 ### Doxygen Documentation
1078
1079 AC_PATH_PROG(DOXYGEN, doxygen, no)
1080
1081 AC_MSG_CHECKING([whether to build Doxygen documentation])
1082
1083 if test x$DOXYGEN = xno ; then
1084     have_doxygen=no
1085 else
1086     have_doxygen=yes
1087 fi
1088
1089 if test x$enable_doxygen_docs = xauto ; then
1090     if test x$have_doxygen = xno ; then
1091         enable_doxygen_docs=no
1092     else
1093         enable_doxygen_docs=yes
1094     fi
1095 fi
1096
1097 if test x$enable_doxygen_docs = xyes; then
1098     if test x$have_doxygen = xno; then
1099         AC_MSG_ERROR([Building Doxygen docs explicitly required, but Doxygen not found])
1100     fi
1101 fi
1102
1103 AM_CONDITIONAL(DBUS_DOXYGEN_DOCS_ENABLED, test x$enable_doxygen_docs = xyes)
1104 AC_MSG_RESULT(yes)
1105
1106 ### XML Documentation
1107
1108 AC_PATH_PROG(XMLTO, xmlto, no)
1109
1110 AC_MSG_CHECKING([whether to build XML documentation])
1111
1112 if test x$XMLTO = xno ; then
1113     have_xmlto=no
1114 else
1115     have_xmlto=yes
1116 fi
1117
1118 if test x$enable_xml_docs = xauto ; then
1119     if test x$have_xmlto = xno ; then
1120         enable_xml_docs=no
1121     else
1122         enable_xml_docs=yes
1123     fi
1124 fi
1125
1126 if test x$enable_xml_docs = xyes; then
1127     if test x$have_xmlto = xno; then
1128         AC_MSG_ERROR([Building XML docs explicitly required, but xmlto not found])
1129     fi
1130 fi
1131
1132 AM_CONDITIONAL(DBUS_XML_DOCS_ENABLED, test x$enable_xml_docs = xyes)
1133 AC_MSG_RESULT(yes)
1134
1135 #### Have to go $localstatedir->$prefix/var->/usr/local/var
1136
1137 #### find the actual value for $prefix that we'll end up with
1138 ##   (I know this is broken and should be done in the Makefile, but
1139 ##    that's a major pain and almost nobody actually seems to care)
1140 AS_AC_EXPAND(EXPANDED_LOCALSTATEDIR, "$localstatedir")
1141 AS_AC_EXPAND(EXPANDED_SYSCONFDIR, "$sysconfdir")
1142 AS_AC_EXPAND(EXPANDED_BINDIR, "$bindir")
1143 AS_AC_EXPAND(EXPANDED_LIBDIR, "$libdir")
1144 AS_AC_EXPAND(EXPANDED_LIBEXECDIR, "$libexecdir")
1145 AS_AC_EXPAND(EXPANDED_DATADIR, "$datadir")
1146
1147 #### Check our operating system
1148 operating_system=unknown
1149 if test -f /etc/redhat-release || test -f $EXPANDED_SYSCONFDIR/redhat-release ; then
1150    operating_system=redhat
1151 fi
1152
1153 if test -f /etc/slackware-version || test -f $EXPANDED_SYSCONFDIR/slackware-version ; then
1154    operating_system=slackware
1155 fi
1156
1157 #### Sort out init scripts
1158
1159 if test x$with_init_scripts = x; then
1160     if test xredhat = x$operating_system ; then
1161         with_init_scripts=redhat
1162     else
1163         if test xslackware = x$operating_system ; then
1164                 with_init_scripts=slackware
1165             else
1166                 with_init_scripts=none
1167         fi
1168     fi
1169 fi
1170
1171 AM_CONDITIONAL(DBUS_INIT_SCRIPTS_RED_HAT, test x$with_init_scripts = xredhat)
1172
1173 AM_CONDITIONAL(DBUS_INIT_SCRIPTS_SLACKWARE, test x$with_init_scripts = xslackware)
1174
1175 ##### Set up location for system bus socket
1176 if ! test -z "$with_system_socket"; then
1177    DBUS_SYSTEM_SOCKET=$with_system_socket
1178 else
1179    DBUS_SYSTEM_SOCKET=${EXPANDED_LOCALSTATEDIR}/run/dbus/system_bus_socket
1180 fi
1181
1182 AC_SUBST(DBUS_SYSTEM_SOCKET)
1183 AC_DEFINE_UNQUOTED(DBUS_SYSTEM_SOCKET,"$DBUS_SYSTEM_SOCKET",[The name of the socket the system bus listens on by default])
1184
1185 ## system bus only listens on local domain sockets, and never 
1186 ## on an abstract socket (so only root can create the socket)
1187 DBUS_SYSTEM_BUS_DEFAULT_ADDRESS="unix:path=$DBUS_SYSTEM_SOCKET"
1188 AC_SUBST(DBUS_SYSTEM_BUS_DEFAULT_ADDRESS)
1189 AC_DEFINE_UNQUOTED(DBUS_SYSTEM_BUS_DEFAULT_ADDRESS, "$DBUS_SYSTEM_BUS_DEFAULT_ADDRESS",[The default D-Bus address of the system bus])
1190
1191 #### Set up the pid file
1192 if ! test -z "$with_system_pid_file"; then
1193    DBUS_SYSTEM_PID_FILE=$with_system_pid_file
1194 elif test x$with_init_scripts = xredhat ; then
1195    DBUS_SYSTEM_PID_FILE=${EXPANDED_LOCALSTATEDIR}/run/messagebus.pid
1196 else
1197    DBUS_SYSTEM_PID_FILE=${EXPANDED_LOCALSTATEDIR}/run/dbus/pid
1198 fi
1199
1200 AC_SUBST(DBUS_SYSTEM_PID_FILE)
1201
1202 #### Directory to check for console ownership
1203 if ! test -z "$with_console_auth_dir"; then
1204    DBUS_CONSOLE_AUTH_DIR=$with_console_auth_dir
1205 else
1206    DBUS_CONSOLE_AUTH_DIR=/var/run/console/
1207 fi
1208
1209 AC_SUBST(DBUS_CONSOLE_AUTH_DIR)
1210 AC_DEFINE_UNQUOTED(DBUS_CONSOLE_AUTH_DIR, "$DBUS_CONSOLE_AUTH_DIR", [Directory to check for console ownerhip])
1211
1212 #### File to check for console ownership
1213 if test x$have_console_owner_file = xyes; then
1214    if ! test -z "$with_console_owner_file"; then
1215       DBUS_CONSOLE_OWNER_FILE=$with_console_owner_file
1216    else
1217       DBUS_CONSOLE_OWNER_FILE=/dev/console
1218    fi
1219 else
1220   DBUS_CONSOLE_OWNER_FILE=
1221 fi
1222
1223 AC_SUBST(DBUS_CONSOLE_OWNER_FILE)
1224 AC_DEFINE_UNQUOTED(DBUS_CONSOLE_OWNER_FILE, "$DBUS_CONSOLE_OWNER_FILE", [File to check for console ownerhip])
1225
1226 #### User to start the system bus as
1227 if test -z "$with_dbus_user" ; then
1228     DBUS_USER=messagebus
1229 else
1230     DBUS_USER=$with_dbus_user
1231 fi
1232 AC_SUBST(DBUS_USER)
1233 AC_DEFINE_UNQUOTED(DBUS_USER,"$DBUS_USER", [User for running the system BUS daemon])
1234
1235 #### Direcotry to install data files into
1236 DBUS_DATADIR=$EXPANDED_DATADIR
1237 AC_SUBST(DBUS_DATADIR)
1238 AC_DEFINE_UNQUOTED(DBUS_DATADIR,"$DBUS_DATADIR", [Directory for installing DBUS data files])
1239
1240 #### Directory to install dbus-daemon
1241 if test -z "$with_dbus_daemondir" ; then
1242     DBUS_DAEMONDIR=$EXPANDED_BINDIR
1243 else
1244     DBUS_DAEMONDIR=$with_dbus_daemondir
1245 fi
1246 AC_SUBST(DBUS_DAEMONDIR)
1247 AC_DEFINE_UNQUOTED(DBUS_DAEMONDIR,"$DBUS_DAEMONDIR", [Directory for installing the DBUS daemon])
1248
1249 #### Directory to install the other binaries
1250 DBUS_BINDIR="$EXPANDED_BINDIR"
1251 AC_SUBST(DBUS_BINDIR)
1252 AC_DEFINE_UNQUOTED(DBUS_BINDIR,"$DBUS_BINDIR", [Directory for installing the binaries])
1253
1254 #### Directory to install the libexec binaries
1255 DBUS_LIBEXECDIR="$EXPANDED_LIBEXECDIR"
1256 AC_SUBST(DBUS_LIBEXECDIR)
1257 AC_DEFINE_UNQUOTED(DBUS_LIBEXECDIR,"$DBUS_LIBEXECDIR", [Directory for installing the libexec binaries])
1258
1259 #### Tell tests where to find certain stuff in builddir
1260
1261 DBUS_PWD=`pwd`
1262 AC_DEFUN([TEST_PATH], [
1263 TEST_$1=${DBUS_PWD}/test/$2
1264 AC_DEFINE_UNQUOTED(TEST_$1, "$TEST_$1",
1265                    [Full path to test file test/$2 in builddir])
1266 AC_SUBST(TEST_$1)
1267 ])
1268
1269 TEST_PATH(VALID_SERVICE_DIR, data/valid-service-files)
1270 TEST_PATH(INVALID_SERVICE_DIR, data/invalid-service-files)
1271 TEST_PATH(VALID_SERVICE_SYSTEM_DIR, data/valid-service-files-system)
1272 TEST_PATH(INVALID_SERVICE_SYSTEM_DIR, data/invalid-service-files-system)
1273 TEST_PATH(SERVICE_BINARY, test-service)
1274 TEST_PATH(SHELL_SERVICE_BINARY, test-shell-service)
1275 TEST_PATH(EXIT_BINARY, test-exit)
1276 TEST_PATH(SEGFAULT_BINARY, test-segfault)
1277 TEST_PATH(SLEEP_FOREVER_BINARY, test-sleep-forever)
1278 TEST_PATH(PRIVSERVER_BINARY, name-test/test-privserver)
1279
1280 AC_DEFINE_UNQUOTED(TEST_BUS_BINARY, "$DBUS_PWD/bus/dbus-daemon",
1281                    [Full path to the daemon in the builddir])
1282 AC_SUBST(TEST_BUS_BINARY)
1283
1284 ## Export the non-setuid external helper
1285 TEST_LAUNCH_HELPER_BINARY="$DBUS_PWD/bus/dbus-daemon-launch-helper-test"
1286 AC_SUBST(TEST_LAUNCH_HELPER_BINARY)
1287 AC_DEFINE_UNQUOTED(DBUS_TEST_LAUNCH_HELPER_BINARY, "$TEST_LAUNCH_HELPER_BINARY",
1288                    [Full path to the launch helper test program in the builddir])
1289
1290 #### Find socket directories
1291 if ! test -z "$TMPDIR" ; then
1292    DEFAULT_SOCKET_DIR=$TMPDIR
1293 elif ! test -z "$TEMP" ; then
1294    DEFAULT_SOCKET_DIR=$TEMP
1295 elif ! test -z "$TMP" ; then
1296    DEFAULT_SOCKET_DIR=$TMP
1297 else
1298    DEFAULT_SOCKET_DIR=/tmp
1299 fi
1300
1301 if ! test -z "$with_test_socket_dir" ; then
1302    TEST_SOCKET_DIR="$with_test_socket_dir"
1303 else
1304    TEST_SOCKET_DIR=$DEFAULT_SOCKET_DIR
1305 fi
1306 AC_SUBST(TEST_SOCKET_DIR)
1307 AC_DEFINE_UNQUOTED(DBUS_TEST_SOCKET_DIR, "$TEST_SOCKET_DIR", [Where to put test sockets])
1308
1309 if ! test -z "$with_session_socket_dir" ; then
1310    DBUS_SESSION_SOCKET_DIR="$with_session_socket_dir"
1311 else
1312    DBUS_SESSION_SOCKET_DIR=$DEFAULT_SOCKET_DIR
1313 fi
1314 AC_DEFINE_UNQUOTED(DBUS_SESSION_SOCKET_DIR, "$DBUS_SESSION_SOCKET_DIR", [Where per-session bus puts its sockets])
1315 AC_SUBST(DBUS_SESSION_SOCKET_DIR)
1316
1317 AC_DEFINE_UNQUOTED(DBUS_UNIX, "1", [Defined on UNIX and Linux systems and not on Windows])
1318
1319 # darwin needs this to initialize the environment
1320 AC_CHECK_HEADERS(crt_externs.h)
1321 AC_CHECK_FUNC(_NSGetEnviron, [AC_DEFINE(HAVE_NSGETENVIRON, 1, [Define if your system needs _NSGetEnviron to set up the environment])])
1322 AH_VERBATIM(_DARWIN_ENVIRON,
1323 [
1324 #if defined(HAVE_NSGETENVIRON) && defined(HAVE_CRT_EXTERNS_H)
1325 # include <sys/time.h>
1326 # include <crt_externs.h>
1327 # define environ (*_NSGetEnviron())
1328 #endif
1329 ])
1330
1331 AC_OUTPUT([
1332 Doxyfile
1333 dbus/dbus-arch-deps.h
1334 bus/system.conf
1335 bus/session.conf
1336 bus/messagebus
1337 bus/rc.messagebus
1338 bus/dbus-daemon.1
1339 Makefile
1340 dbus/Makefile
1341 bus/Makefile
1342 tools/Makefile
1343 test/Makefile
1344 test/name-test/Makefile
1345 doc/Makefile
1346 dbus-1.pc
1347 test/data/valid-config-files/debug-allow-all.conf
1348 test/data/valid-config-files/debug-allow-all-sha1.conf
1349 test/data/valid-config-files-system/debug-allow-all-pass.conf
1350 test/data/valid-config-files-system/debug-allow-all-fail.conf
1351 test/data/valid-service-files/org.freedesktop.DBus.TestSuite.PrivServer.service
1352 test/data/valid-service-files/org.freedesktop.DBus.TestSuiteEchoService.service
1353 test/data/valid-service-files/org.freedesktop.DBus.TestSuiteSegfaultService.service
1354 test/data/valid-service-files/org.freedesktop.DBus.TestSuiteShellEchoServiceSuccess.service
1355 test/data/valid-service-files/org.freedesktop.DBus.TestSuiteShellEchoServiceFail.service
1356 test/data/valid-service-files-system/org.freedesktop.DBus.TestSuiteEchoService.service
1357 test/data/valid-service-files-system/org.freedesktop.DBus.TestSuiteSegfaultService.service
1358 test/data/valid-service-files-system/org.freedesktop.DBus.TestSuiteShellEchoServiceSuccess.service
1359 test/data/valid-service-files-system/org.freedesktop.DBus.TestSuiteShellEchoServiceFail.service
1360 test/data/invalid-service-files-system/org.freedesktop.DBus.TestSuiteNoExec.service
1361 test/data/invalid-service-files-system/org.freedesktop.DBus.TestSuiteNoUser.service
1362 test/data/invalid-service-files-system/org.freedesktop.DBus.TestSuiteNoService.service
1363 ])
1364
1365 dnl ==========================================================================
1366 echo "
1367                     D-Bus $VERSION
1368                   ==============
1369
1370         prefix:                   ${prefix}
1371         exec_prefix:              ${exec_prefix}
1372         libdir:                   ${EXPANDED_LIBDIR}
1373         libexecdir:               ${EXPANDED_LIBEXECDIR}
1374         bindir:                   ${EXPANDED_BINDIR}
1375         sysconfdir:               ${EXPANDED_SYSCONFDIR}
1376         localstatedir:            ${EXPANDED_LOCALSTATEDIR}
1377         datadir:                  ${EXPANDED_DATADIR}
1378         source code location:     ${srcdir}
1379         compiler:                 ${CC}
1380         cflags:                   ${CFLAGS}
1381         cppflags:                 ${CPPFLAGS}
1382         cxxflags:                 ${CXXFLAGS}
1383         64-bit int:               ${DBUS_INT64_TYPE}
1384         32-bit int:               ${DBUS_INT32_TYPE}
1385         16-bit int:               ${DBUS_INT16_TYPE}
1386         Doxygen:                  ${DOXYGEN}
1387         xmlto:                    ${XMLTO}"
1388
1389 echo "
1390         Maintainer mode:          ${USE_MAINTAINER_MODE}
1391         gcc coverage profiling:   ${enable_gcov}
1392         Building unit tests:      ${enable_tests}
1393         Building verbose mode:    ${enable_verbose_mode}
1394         Building assertions:      ${enable_asserts}
1395         Building checks:          ${enable_checks}
1396         Building SELinux support: ${have_selinux}
1397         Building inotify support: ${have_inotify}
1398         Building dnotify support: ${have_dnotify}
1399         Building kqueue support:  ${have_kqueue}
1400         Building X11 code:        ${enable_x11}
1401         Building Doxygen docs:    ${enable_doxygen_docs}
1402         Building XML docs:        ${enable_xml_docs}
1403         Building cache support:   ${enable_userdb_cache}
1404         Gettext libs (empty OK):  ${INTLLIBS}
1405         Using XML parser:         ${with_xml}
1406         Init scripts style:       ${with_init_scripts}
1407         Abstract socket names:    ${ac_cv_have_abstract_sockets}
1408         System bus socket:        ${DBUS_SYSTEM_SOCKET}
1409         System bus address:       ${DBUS_SYSTEM_BUS_DEFAULT_ADDRESS}
1410         System bus PID file:      ${DBUS_SYSTEM_PID_FILE}
1411         Session bus socket dir:   ${DBUS_SESSION_SOCKET_DIR}
1412         Console auth dir:         ${DBUS_CONSOLE_AUTH_DIR}
1413         Console owner file:       ${have_console_owner_file}
1414         Console owner file path:  ${DBUS_CONSOLE_OWNER_FILE}
1415         System bus user:          ${DBUS_USER}
1416         Session bus services dir: ${EXPANDED_DATADIR}/dbus-1/services
1417         'make check' socket dir:  ${TEST_SOCKET_DIR}
1418 "
1419
1420 if test x$enable_tests = xyes; then
1421         echo "NOTE: building with unit tests increases the size of the installed library and renders it insecure."
1422 fi
1423 if test x$enable_tests = xyes -a x$enable_asserts = xno; then
1424         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)"
1425 fi
1426 if test x$enable_gcov = xyes; then
1427         echo "NOTE: building with coverage profiling is definitely for developers only."
1428 fi
1429 if test x$enable_verbose_mode = xyes; then
1430         echo "NOTE: building with verbose mode increases library size, may slightly increase security risk, and decreases performance."
1431 fi
1432 if test x$enable_asserts = xyes; then
1433         echo "NOTE: building with assertions increases library size and decreases performance."
1434 fi
1435 if test x$enable_checks = xno; then
1436         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."
1437 fi
1438 if test x$dbus_use_libxml = xtrue; then
1439         echo
1440         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)."
1441 fi