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