2006-02-13 John (J5) Palmieri <johnp@redhat.com>
[platform/upstream/dbus.git] / configure.in
1 dnl -*- mode: m4 -*-
2 AC_PREREQ(2.52)
3
4 AC_INIT(dbus/dbus.h)
5
6 AM_INIT_AUTOMAKE(dbus, 0.60)
7
8 AM_CONFIG_HEADER(config.h)
9
10 AC_CANONICAL_TARGET
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=2
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=0
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(qt,               [  --enable-qt           enable Qt-friendly client library],enable_qt=$enableval,enable_qt=auto)
50 AC_ARG_ENABLE(qt-debug,               [  --enable-qt-debug  enable Qt-friendly client library, linked to debug Qt libraries],enable_qt_debug=$enableval,enable_qt_debug=no)
51 AC_ARG_ENABLE(qt3,              [  --enable-qt3          enable Qt3-friendly client library],enable_qt3=$enableval,enable_qt3=no)
52 AC_ARG_ENABLE(glib,             [  --enable-glib         enable GLib-friendly client library],enable_glib=$enableval,enable_glib=auto)
53 AC_ARG_ENABLE(gtk,              [  --enable-gtk          enable GTK-requiring executables],enable_gtk=$enableval,enable_gtk=auto)
54 AC_ARG_ENABLE(tests,            [  --enable-tests        enable unit test code],enable_tests=$enableval,enable_tests=$USE_MAINTAINER_MODE)
55 AC_ARG_ENABLE(ansi,             [  --enable-ansi         enable -ansi -pedantic gcc flags],enable_ansi=$enableval,enable_ansi=no)
56 AC_ARG_ENABLE(verbose-mode,     [  --enable-verbose-mode support verbose debug mode],enable_verbose_mode=$enableval,enable_verbose_mode=$USE_MAINTAINER_MODE)
57 AC_ARG_ENABLE(asserts,          [  --enable-asserts      include assertion checks],enable_asserts=$enableval,enable_asserts=$USE_MAINTAINER_MODE)
58 AC_ARG_ENABLE(checks,           [  --enable-checks       include sanity checks on public API],enable_checks=$enableval,enable_checks=yes)
59 AC_ARG_ENABLE(xml-docs,         [  --enable-xml-docs     build XML documentation (requires xmlto)],enable_xml_docs=$enableval,enable_xml_docs=auto)
60 AC_ARG_ENABLE(doxygen-docs,     [  --enable-doxygen-docs     build DOXYGEN documentation (requires Doxygen)],enable_doxygen_docs=$enableval,enable_doxygen_docs=auto)
61 AC_ARG_ENABLE(gcov,             [  --enable-gcov         compile with coverage profiling instrumentation (gcc only)],enable_gcov=$enableval,enable_gcov=no)
62 AC_ARG_ENABLE(abstract-sockets, [  --enable-abstract-sockets  use abstract socket namespace (linux only)],enable_abstract_sockets=$enableval,enable_abstract_sockets=auto)
63 AC_ARG_ENABLE(gcj,              [  --enable-gcj          build gcj bindings],enable_gcj=$enableval,enable_gcj=no)
64 AC_ARG_ENABLE(mono,             [  --enable-mono         build mono bindings],enable_mono=$enableval,enable_mono=no)
65 AC_ARG_ENABLE(mono_docs,        [  --enable-mono-docs    build mono docs],enable_mono_docs=$enableval,enable_mono_docs=no)
66 AC_ARG_ENABLE(python,           [  --enable-python       build python bindings],enable_python=$enableval,enable_python=auto)
67 AC_ARG_ENABLE(selinux,          [  --enable-selinux      build with SELinux support],enable_selinux=$enableval,enable_selinux=auto)
68 AC_ARG_ENABLE(dnotify,          [  --enable-dnotify      build with dnotify support (linux only)],enable_dnotify=$enableval,enable_dnotify=auto)
69
70 AC_ARG_WITH(xml,                [  --with-xml=[libxml/expat]           XML library to use])
71 AC_ARG_WITH(init-scripts,       [  --with-init-scripts=[redhat]        Style of init scripts to install])
72 AC_ARG_WITH(session-socket-dir, [  --with-session-socket-dir=[dirname] Where to put sockets for the per-login-session message bus])
73 AC_ARG_WITH(test-socket-dir,    [  --with-test-socket-dir=[dirname]    Where to put sockets for make check])
74 AC_ARG_WITH(system-pid-file,    [  --with-system-pid-file=[pidfile]    PID file for systemwide daemon])
75 AC_ARG_WITH(system-socket,      [  --with-system-socket=[filename]     UNIX domain socket for systemwide daemon])
76 AC_ARG_WITH(console-auth-dir,   [  --with-console-auth-dir=[dirname]   directory to check for console ownerhip])
77 AC_ARG_WITH(dbus_user,          [  --with-dbus-user=<user>  User for running the DBUS daemon (messagebus)])
78
79 dnl DBUS_BUILD_TESTS controls unit tests built in to .c files 
80 dnl and also some stuff in the test/ subdir
81 AM_CONDITIONAL(DBUS_BUILD_TESTS, test x$enable_tests = xyes)
82 if test x$enable_tests = xyes; then
83     AC_DEFINE(DBUS_BUILD_TESTS,1,[Build test code])
84 fi
85
86 if test x$enable_verbose_mode = xyes; then
87     AC_DEFINE(DBUS_ENABLE_VERBOSE_MODE,1,[Support a verbose mode])
88 fi
89 if test x$enable_asserts = xno; then
90     AC_DEFINE(DBUS_DISABLE_ASSERT,1,[Disable assertion checking])
91     AC_DEFINE(G_DISABLE_ASSERT,1,[Disable GLib assertion macros])
92 fi
93 if test x$enable_checks = xno; then
94     AC_DEFINE(DBUS_DISABLE_CHECKS,1,[Disable public API sanity checking])
95     AC_DEFINE(G_DISABLE_CHECKS,1,[Disable GLib public API sanity checking])
96 fi
97
98 #### gcc warning flags
99
100 if test "x$GCC" = "xyes"; then
101   changequote(,)dnl
102   case " $CFLAGS " in
103   *[\ \ ]-Wall[\ \      ]*) ;;
104   *) CFLAGS="$CFLAGS -Wall" ;;
105   esac
106
107   case " $CFLAGS " in
108   *[\ \ ]-Wchar-subscripts[\ \  ]*) ;;
109   *) CFLAGS="$CFLAGS -Wchar-subscripts" ;;
110   esac
111
112   case " $CFLAGS " in
113   *[\ \ ]-Wmissing-declarations[\ \     ]*) ;;
114   *) CFLAGS="$CFLAGS -Wmissing-declarations" ;;
115   esac
116
117   case " $CFLAGS " in
118   *[\ \ ]-Wmissing-prototypes[\ \       ]*) ;;
119   *) CFLAGS="$CFLAGS -Wmissing-prototypes" ;;
120   esac
121
122   case " $CFLAGS " in
123   *[\ \ ]-Wnested-externs[\ \   ]*) ;;
124   *) CFLAGS="$CFLAGS -Wnested-externs" ;;
125   esac
126
127   case " $CFLAGS " in
128   *[\ \ ]-Wpointer-arith[\ \    ]*) ;;
129   *) CFLAGS="$CFLAGS -Wpointer-arith" ;;
130   esac
131
132   case " $CFLAGS " in
133   *[\ \ ]-Wcast-align[\ \       ]*) ;;
134   *) CFLAGS="$CFLAGS -Wcast-align" ;;
135   esac
136
137   case " $CFLAGS " in
138   *[\ \ ]-Wfloat-equal[\ \      ]*) ;;
139   *) CFLAGS="$CFLAGS -Wfloat-equal" ;;
140   esac
141
142   case " $CFLAGS " in
143   *[\ \ ]-Wsign-compare[\ \     ]*) ;;
144   *) CFLAGS="$CFLAGS -Wsign-compare" ;;
145   esac
146
147   if test "x$enable_ansi" = "xyes"; then
148     case " $CFLAGS " in
149     *[\ \       ]-ansi[\ \      ]*) ;;
150     *) CFLAGS="$CFLAGS -ansi" ;;
151     esac
152
153     case " $CFLAGS " in
154     *[\ \       ]-D_POSIX_C_SOURCE*) ;;
155     *) CFLAGS="$CFLAGS -D_POSIX_C_SOURCE=199309L" ;;
156     esac
157
158     case " $CFLAGS " in
159     *[\ \       ]-D_BSD_SOURCE[\ \      ]*) ;;
160     *) CFLAGS="$CFLAGS -D_BSD_SOURCE" ;;
161     esac
162
163     case " $CFLAGS " in
164     *[\ \       ]-pedantic[\ \  ]*) ;;
165     *) CFLAGS="$CFLAGS -pedantic" ;;
166     esac
167   fi
168   if test x$enable_gcov = xyes; then
169     case " $CFLAGS " in
170     *[\ \       ]-fprofile-arcs[\ \     ]*) ;;
171     *) CFLAGS="$CFLAGS -fprofile-arcs" ;;
172     esac
173     case " $CFLAGS " in
174     *[\ \       ]-ftest-coverage[\ \    ]*) ;;
175     *) CFLAGS="$CFLAGS -ftest-coverage" ;;
176     esac
177
178     ## remove optimization
179     CFLAGS=`echo "$CFLAGS" | sed -e 's/-O[0-9]*//g'`
180   fi
181   changequote([,])dnl
182 else
183   if test x$enable_gcov = xyes; then
184     AC_MSG_ERROR([--enable-gcov can only be used with gcc])
185   fi
186 fi
187
188 #### can't use AM_PROG_GCJ since it fails fatally if no gcj found
189 AC_CHECK_PROGS(GCJ, gcj, gcj)
190 if test -z "$GCJ" ; then
191      have_gcj=no
192 else
193      # Needs to be here so libtool wont get confused
194      AM_PROG_GCJ
195
196      have_gcj=yes
197      if test "x${GCJFLAGS-unset}" = xunset; then
198         GCJFLAGS="-g -O2 -Wall"
199      fi
200      AC_SUBST(GCJFLAGS)
201 fi
202
203 if test x$enable_gcj = xauto ; then
204     if test x$have_gcj = xno ; then
205         enable_gcj=no
206     else
207         enable_gcj=yes
208     fi
209 fi
210
211 if test x$enable_gcj = xyes; then
212     if test x$have_gcj = xno ; then
213         AC_MSG_ERROR([Building gcj explicitly required, but gcj not found])
214     else 
215         AC_CHECK_PROGS(JAR, gcj-jar fastjar jar)
216     fi
217 fi
218
219 AM_CONDITIONAL(DBUS_USE_GCJ, test x$enable_gcj = xyes)
220
221 AM_PROG_LIBTOOL
222
223 #### Look for mono
224 MONO_REQUIRED_VERSION=0.95
225 AC_SUBST(MONO_REQUIRED_VERSION)
226 PKG_CHECK_MODULES(MONO_DEPENDENCY, mono >= $MONO_REQUIRED_VERSION, have_mono=true, have_mono=false)
227
228 if test "x$enable_mono" = "xyes"; then
229         if test "x$have_mono" = "xfalse"; then
230                 AC_MSG_ERROR([Mono was not found])
231         fi
232 fi
233
234 if test "x$have_mono" = "xtrue"; then
235         if test `uname -s` = "Darwin"; then
236                 AC_PATH_PROG(RUNTIME, mint, no)
237                 AC_PATH_PROG(CSC, mcs, no)
238                 LIB_PREFIX=
239                 LIB_SUFFIX=.dylib
240         else
241                 AC_PATH_PROG(RUNTIME, mono, no)
242                 AC_PATH_PROG(CSC, mcs, no)
243                 LIB_PREFIX=.so
244                 LIB_SUFFIX=
245         fi
246 else
247         AC_PATH_PROG(CSC, csc.exe, no)
248         RUNTIME=
249         LIB_PREFIX=
250         LIB_SUFFIX=.dylib
251 fi
252
253 if test x$enable_mono = xyes; then
254     if test x$have_mcs = xno ; then
255         AC_MSG_ERROR([Building Mono bindings explicitly required, but mcs compiler not found])
256     fi
257
258     ### Test for GACUTIL
259     AC_PATH_PROG(GACUTIL, gacutil, no)
260     if test "x$GACUTIL" = "xno" ; then
261         AC_MSG_ERROR([No gacutil tool found])
262     fi
263
264     AC_SUBST(GACUTIL)
265 fi
266
267 if test x$enable_mono = xauto ; then
268     if test x$CSC = xno ; then
269         enable_mono=no
270     else
271         ### Test for GACUTIL
272         AC_PATH_PROG(GACUTIL, gacutil, no)
273         if test "x$GACUTIL" = "xno" ; then
274            enable_mono=no
275         else
276            enable_mono=yes
277         fi
278     fi
279 fi
280
281 AC_SUBST(RUNTIME)
282 AC_SUBST(CSC)
283 AC_SUBST(GACUTIL)
284 AC_SUBST(LIB_PREFIX)
285 AC_SUBST(LIB_SUFFIX)
286
287 AM_CONDITIONAL(DBUS_USE_CSC, test x$enable_mono = xyes)
288
289 #### Look for monodoc
290 MONODOC_REQUIRED_VERSION=0.16
291 AC_SUBST(MONODOC_REQUIRED_VERSION)
292 PKG_CHECK_MODULES(MONODOC_DEPENDENCY, monodoc >= $MONODOC_REQUIRED_VERSION, have_monodoc=yes, have_monodoc=no)
293
294 if test x$enable_mono_docs = xyes; then
295     if test x$have_monodoc = xno ; then
296         AC_MSG_ERROR([Building Mono docs explicitly required, but monodoc not found])
297     else
298         AC_PATH_PROG(MONODOC, monodoc, no)
299         if test x$MONODOC = xno; then
300            AC_MSG_ERROR([Building Mono docs explicitly required, but monodoc not found])        
301         fi
302     fi
303 fi
304
305 if test x$enable_mono_docs = xauto ; then
306     if test x$have_monodoc = xno ; then
307         enable_mono_docs=no
308         MONODOC=
309     else
310         AC_PATH_PROG(MONODOC, monodoc, no)
311         if test x$MONODOC = xno; then
312            enable_mono_docs=no
313            MONODOC=
314         else
315            enable_mono_docs=yes
316         fi
317     fi
318 fi
319
320 AC_SUBST(MONODOC)
321
322 AM_CONDITIONAL(ENABLE_MONODOC, test "x$enable_mono_docs" = "xyes")
323
324 changequote(,)dnl
325 # let ourselves use our own unstable API
326 CPPFLAGS="-DDBUS_API_SUBJECT_TO_CHANGE=1 $CPPFLAGS"
327 # compress spaces in flags
328 CFLAGS=`echo "$CFLAGS" | sed -e 's/ +/ /g'`
329 CXXFLAGS=`echo "$CXXFLAGS" | sed -e 's/ +/ /g'`
330 CPPFLAGS=`echo "$CPPFLAGS" | sed -e 's/ +/ /g'`
331 changequote([,])dnl
332
333 if test x$enable_gcov = xyes; then
334      ## so that config.h changes when you toggle gcov support
335      AC_DEFINE_UNQUOTED(DBUS_GCOV_ENABLED, 1, [Defined if gcov is enabled to force a rebuild due to config.h changing])
336
337      AC_MSG_CHECKING([for gcc 3.3 version of gcov file format])
338      have_gcc33_gcov=no
339      AC_RUN_IFELSE( [AC_LANG_PROGRAM( , [[ if (__GNUC__ >=3 && __GNUC_MINOR__ >= 3) exit (0); else exit (1); ]])],  
340                    have_gcc33_gcov=yes)
341      if test x$have_gcc33_gcov = xyes ; then
342          AC_DEFINE_UNQUOTED(DBUS_HAVE_GCC33_GCOV, 1, [Defined if we have gcc 3.3 and thus the new gcov format])
343      fi
344      AC_MSG_RESULT($have_gcc33_gcov)
345 fi
346 AM_CONDITIONAL(DBUS_GCOV_ENABLED, test x$enable_gcov = xyes)
347
348 #### Integer sizes 
349
350 AC_CHECK_SIZEOF(char)
351 AC_CHECK_SIZEOF(short)
352 AC_CHECK_SIZEOF(long)
353 AC_CHECK_SIZEOF(int)
354 AC_CHECK_SIZEOF(void *)
355 AC_CHECK_SIZEOF(long long)
356 AC_CHECK_SIZEOF(__int64)
357
358 ### See what our 64 bit type is called
359 AC_MSG_CHECKING([64-bit integer type])
360
361 case 8 in
362 $ac_cv_sizeof_int)
363   dbusint64=int
364   dbusint64_constant='(val)'
365   dbusuint64_constant='(val)'
366   ;;
367 $ac_cv_sizeof_long)
368   dbusint64=long
369   dbusint64_constant='(val##L)'
370   dbusuint64_constant='(val##UL)'
371   ;;
372 $ac_cv_sizeof_long_long)
373   dbusint64='long long'
374   dbusint64_constant='(val##LL)'
375   dbusuint64_constant='(val##ULL)'
376   ;;
377 $ac_cv_sizeof___int64)
378   dbusint64=__int64
379   dbusint64_constant='(val##i64)'
380   dbusuint64_constant='(val##ui64)'
381   ;;
382 esac
383
384 if test -z "$dbusint64" ; then
385         DBUS_INT64_TYPE="no_int64_type_detected"
386         DBUS_HAVE_INT64=0
387         DBUS_INT64_CONSTANT=
388         DBUS_UINT64_CONSTANT=
389         AC_MSG_RESULT([none found])
390 else
391         DBUS_INT64_TYPE="$dbusint64"
392         DBUS_HAVE_INT64=1
393         DBUS_INT64_CONSTANT="$dbusint64_constant"
394         DBUS_UINT64_CONSTANT="$dbusuint64_constant"
395         AC_MSG_RESULT($DBUS_INT64_TYPE)
396 fi
397
398 AC_SUBST(DBUS_INT64_TYPE)
399 AC_SUBST(DBUS_INT64_CONSTANT)
400 AC_SUBST(DBUS_UINT64_CONSTANT)
401 AC_SUBST(DBUS_HAVE_INT64)
402
403 ### see what 32-bit int is called
404 AC_MSG_CHECKING([32-bit integer type])
405
406 case 4 in
407 $ac_cv_sizeof_short)
408   dbusint32=int
409   ;;
410 $ac_cv_sizeof_int)
411   dbusint32=int
412   ;;
413 $ac_cv_sizeof_long)
414   dbusint32=long
415   ;;
416 esac
417
418 if test -z "$dbusint32" ; then
419         DBUS_INT32_TYPE="no_int32_type_detected"
420         AC_MSG_ERROR([No 32-bit integer type found])
421 else
422         DBUS_INT32_TYPE="$dbusint32"
423         AC_MSG_RESULT($DBUS_INT32_TYPE)
424 fi
425
426 AC_SUBST(DBUS_INT32_TYPE)
427
428 ### see what 16-bit int is called
429 AC_MSG_CHECKING([16-bit integer type])
430
431 case 2 in
432 $ac_cv_sizeof_short)
433   dbusint16=short
434   ;;
435 $ac_cv_sizeof_int)
436   dbusint16=int
437   ;;
438 esac
439
440 if test -z "$dbusint16" ; then
441         DBUS_INT16_TYPE="no_int16_type_detected"
442         AC_MSG_ERROR([No 16-bit integer type found])
443 else
444         DBUS_INT16_TYPE="$dbusint16"
445         AC_MSG_RESULT($DBUS_INT16_TYPE)
446 fi
447
448 AC_SUBST(DBUS_INT16_TYPE)
449
450 ## byte order
451 AC_C_BIGENDIAN
452
453
454 dnl **********************************
455 dnl *** va_copy checks (from GLib) ***
456 dnl **********************************
457 dnl we currently check for all three va_copy possibilities, so we get
458 dnl all results in config.log for bug reports.
459 AC_CACHE_CHECK([for an implementation of va_copy()],dbus_cv_va_copy,[
460         AC_LINK_IFELSE([#include <stdarg.h>
461         void f (int i, ...) {
462         va_list args1, args2;
463         va_start (args1, i);
464         va_copy (args2, args1);
465         if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
466           exit (1);
467         va_end (args1); va_end (args2);
468         }
469         int main() {
470           f (0, 42);
471           return 0;
472         }],
473         [dbus_cv_va_copy=yes],
474         [dbus_cv_va_copy=no])
475 ])
476 AC_CACHE_CHECK([for an implementation of __va_copy()],dbus_cv___va_copy,[
477         AC_LINK_IFELSE([#include <stdarg.h>
478         void f (int i, ...) {
479         va_list args1, args2;
480         va_start (args1, i);
481         __va_copy (args2, args1);
482         if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
483           exit (1);
484         va_end (args1); va_end (args2);
485         }
486         int main() {
487           f (0, 42);
488           return 0;
489         }],
490         [dbus_cv___va_copy=yes],
491         [dbus_cv___va_copy=no])
492 ])
493
494 if test "x$dbus_cv_va_copy" = "xyes"; then
495   dbus_va_copy_func=va_copy
496 else if test "x$dbus_cv___va_copy" = "xyes"; then
497   dbus_va_copy_func=__va_copy
498 fi
499 fi
500
501 if test -n "$dbus_va_copy_func"; then
502   AC_DEFINE_UNQUOTED(DBUS_VA_COPY,$dbus_va_copy_func,[A 'va_copy' style function])
503 fi
504
505 AC_CACHE_CHECK([whether va_lists can be copied by value],dbus_cv_va_val_copy,[
506         AC_TRY_RUN([#include <stdarg.h>
507         void f (int i, ...) {
508         va_list args1, args2;
509         va_start (args1, i);
510         args2 = args1;
511         if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
512           exit (1);
513         va_end (args1); va_end (args2);
514         }
515         int main() {
516           f (0, 42);
517           return 0;
518         }],
519         [dbus_cv_va_val_copy=yes],
520         [dbus_cv_va_val_copy=no],
521         [dbus_cv_va_val_copy=yes])
522 ])
523
524 if test "x$dbus_cv_va_val_copy" = "xno"; then
525   AC_DEFINE(DBUS_VA_COPY_AS_ARRAY,1, ['va_lists' cannot be copies as values])
526 fi
527
528
529 #### Atomic integers (checks by Sebastian Wilhelmi for GLib)
530 AC_MSG_CHECKING([whether to use inline assembler routines for atomic integers])
531 have_atomic_inc=no
532 if test x"$GCC" = xyes; then
533   if test "x$enable_ansi" = "xyes"; then
534     AC_MSG_RESULT([no])
535   else
536     case $host_cpu in
537       i386)
538         AC_MSG_RESULT([no])
539         ;;
540       i?86)
541         AC_MSG_RESULT([i486])
542         AC_DEFINE_UNQUOTED(DBUS_USE_ATOMIC_INT_486, 1, [Use atomic integer implementation for 486])
543         have_atomic_inc=yes
544         ;;
545       *)
546         AC_MSG_RESULT([no])
547         ;;
548     esac
549   fi
550 fi
551 if test x$have_atomic_inc = xyes ; then
552   AC_DEFINE_UNQUOTED(DBUS_HAVE_ATOMIC_INT, 1, [Some atomic integer implementation present])
553 fi
554
555 #### Various functions
556 AC_CHECK_LIB(socket,socket)
557 AC_CHECK_LIB(nsl,gethostbyname)
558
559 AC_CHECK_FUNCS(vsnprintf vasprintf nanosleep usleep poll setenv unsetenv socketpair getgrouplist)
560
561 AC_CHECK_HEADERS(execinfo.h, [AC_CHECK_FUNCS(backtrace)])
562
563 AC_CACHE_CHECK([for posix getpwnam_r],
564                 ac_cv_func_posix_getpwnam_r,
565                 [AC_TRY_RUN([
566 #include <errno.h>
567 #include <pwd.h>
568 int main () { 
569     char buffer[10000];
570     struct passwd pwd, *pwptr = &pwd;
571     int error;
572     errno = 0;
573     error = getpwnam_r ("", &pwd, buffer, 
574                         sizeof (buffer), &pwptr);
575    return (error < 0 && errno == ENOSYS) 
576            || error == ENOSYS; 
577 }               ],
578         [ac_cv_func_posix_getpwnam_r=yes],
579         [ac_cv_func_posix_getpwnam_r=no])])
580 if test "$ac_cv_func_posix_getpwnam_r" = yes; then
581         AC_DEFINE(HAVE_POSIX_GETPWNAM_R,1,
582                 [Have POSIX function getpwnam_r])
583 else
584         AC_CACHE_CHECK([for nonposix getpwnam_r],
585                 ac_cv_func_nonposix_getpwnam_r,
586                 [AC_TRY_LINK([#include <pwd.h>],
587                         [char buffer[10000];
588                         struct passwd pwd;
589                         getpwnam_r ("", &pwd, buffer, 
590                                         sizeof (buffer));],
591                         [ac_cv_func_nonposix_getpwnam_r=yes],
592                         [ac_cv_func_nonposix_getpwnam_r=no])])
593                 if test "$ac_cv_func_nonposix_getpwnam_r" = yes; then
594                 AC_DEFINE(HAVE_NONPOSIX_GETPWNAM_R,1,
595                         [Have non-POSIX function getpwnam_r])
596         fi
597 fi
598
599 dnl check for socklen_t
600 AC_MSG_CHECKING(whether socklen_t is defined)
601 AC_TRY_COMPILE([
602 #include <sys/types.h>
603 #include <sys/socket.h>
604 #include <netdb.h>
605 ],[
606 socklen_t foo;
607 foo = 1;
608 ],dbus_have_socklen_t=yes,dbus_have_socklen_t=no)
609 AC_MSG_RESULT($dbus_have_socklen_t)
610
611 if test "x$dbus_have_socklen_t" = "xyes"; then
612     AC_DEFINE(HAVE_SOCKLEN_T,1,[Have socklen_t type])
613 fi
614
615 dnl check for writev header and writev function so we're 
616 dnl good to go if HAVE_WRITEV gets defined.
617 AC_CHECK_HEADERS(sys/uio.h, [AC_CHECK_FUNCS(writev)])
618
619 dnl check for flavours of varargs macros (test from GLib)
620 AC_MSG_CHECKING(for ISO C99 varargs macros in C)
621 AC_TRY_COMPILE([],[
622 int a(int p1, int p2, int p3);
623 #define call_a(...) a(1,__VA_ARGS__)
624 call_a(2,3);
625 ],dbus_have_iso_c_varargs=yes,dbus_have_iso_c_varargs=no)
626 AC_MSG_RESULT($dbus_have_iso_c_varargs)
627
628 AC_MSG_CHECKING(for GNUC varargs macros)
629 AC_TRY_COMPILE([],[
630 int a(int p1, int p2, int p3);
631 #define call_a(params...) a(1,params)
632 call_a(2,3);
633 ],dbus_have_gnuc_varargs=yes,dbus_have_gnuc_varargs=no)
634 AC_MSG_RESULT($dbus_have_gnuc_varargs)
635
636 dnl Output varargs tests
637 if test x$dbus_have_iso_c_varargs = xyes; then
638     AC_DEFINE(HAVE_ISO_VARARGS,1,[Have ISO C99 varargs macros])
639 fi
640 if test x$dbus_have_gnuc_varargs = xyes; then
641     AC_DEFINE(HAVE_GNUC_VARARGS,1,[Have GNU-style varargs macros])
642 fi
643
644 dnl Check for various credentials.
645 AC_MSG_CHECKING(for struct cmsgcred)
646 AC_TRY_COMPILE([
647 #include <sys/types.h>
648 #include <sys/socket.h>
649 ],[
650 struct cmsgcred cred;
651
652 cred.cmcred_pid = 0;
653 ],dbus_have_struct_cmsgcred=yes,dbus_have_struct_cmsgcred=no)
654 AC_MSG_RESULT($dbus_have_struct_cmsgcred)
655
656 if test x$dbus_have_struct_cmsgcred = xyes; then
657     AC_DEFINE(HAVE_CMSGCRED,1,[Have cmsgcred structure])
658 fi
659
660 AC_CHECK_FUNCS(getpeerucred getpeereid)
661
662 #### Abstract sockets
663
664 AC_MSG_CHECKING(abstract socket namespace)
665 AC_LANG_PUSH(C)
666 AC_RUN_IFELSE([AC_LANG_PROGRAM(
667 [[
668 #include <sys/types.h>
669 #include <stdlib.h>
670 #include <string.h>
671 #include <stdio.h>
672 #include <sys/socket.h>
673 #include <sys/un.h>
674 #include <errno.h>
675 ]],
676 [[
677   int listen_fd;
678   struct sockaddr_un addr;
679   
680   listen_fd = socket (PF_UNIX, SOCK_STREAM, 0);
681   
682   if (listen_fd < 0)
683     {
684       fprintf (stderr, "socket() failed: %s\n", strerror (errno));
685       exit (1);
686     }
687
688   memset (&addr, '\0', sizeof (addr));
689   addr.sun_family = AF_UNIX;
690   strcpy (addr.sun_path, "X/tmp/dbus-fake-socket-path-used-in-configure-test");
691   addr.sun_path[0] = '\0'; /* this is what makes it abstract */
692   
693   if (bind (listen_fd, (struct sockaddr*) &addr, SUN_LEN (&addr)) < 0)
694     {
695        fprintf (stderr, "Abstract socket namespace bind() failed: %s\n", 
696                 strerror (errno));
697        exit (1);
698     }
699   else 
700     exit (0);
701 ]])],
702               [have_abstract_sockets=yes],
703               [have_abstract_sockets=no])
704 AC_LANG_POP(C)
705 AC_MSG_RESULT($have_abstract_sockets)
706
707 if test x$enable_abstract_sockets = xyes; then
708     if test x$have_abstract_sockets = xno; then
709         AC_MSG_ERROR([Abstract sockets explicitly required, and support not detected.])
710     fi
711 fi
712
713 if test x$enable_abstract_sockets = xno; then
714    have_abstract_sockets=no;
715 fi
716
717 if test x$have_abstract_sockets = xyes ; then
718    DBUS_PATH_OR_ABSTRACT=abstract
719    AC_DEFINE(HAVE_ABSTRACT_SOCKETS,1,[Have abstract socket namespace])
720 else
721    DBUS_PATH_OR_ABSTRACT=path
722 fi
723
724 # this is used in addresses to prefer abstract, e.g. 
725 # unix:path=/foo or unix:abstract=/foo 
726 AC_SUBST(DBUS_PATH_OR_ABSTRACT)
727
728 #### Sort out gettext
729
730 # this makes us require GLib to run autoconf, but not at runtime
731 ALL_LINGUAS=""
732 AM_GLIB_GNU_GETTEXT
733
734 # INTLLIBS is now set
735
736 # (if someone wants to go through and make internationalization 
737 #  conditional with #ifdef ENABLE_NLS then go crazy and send us a patch, 
738 #  but right now we won't build without gettext)
739 if test "$gt_cv_have_gettext" != "yes" ; then
740   AC_MSG_ERROR([
741 *** You must have either have gettext support in your C library, or use the 
742 *** GNU gettext library. (http://www.gnu.org/software/gettext/gettext.html
743 ])
744 fi
745
746 #### Sort out XML library
747
748 # see what we have
749 AC_CHECK_LIB(expat, XML_ParserCreate_MM,
750              [ AC_CHECK_HEADERS(expat.h, have_expat=true, have_expat=false) ],
751              have_expat=false)
752
753 PKG_CHECK_MODULES(LIBXML, libxml-2.0, have_libxml=true, have_libxml=false)
754
755 # see what we want to use
756 dbus_use_libxml=false
757 dbus_use_expat=false
758 if test x$with_xml = xexpat; then
759         dbus_use_expat=true
760         if ! $have_expat ; then
761            AC_MSG_ERROR([Explicitly requested expat but expat not found])
762         fi
763 elif test x$with_xml = xlibxml; then
764         dbus_use_libxml=true
765         if ! $have_libxml ; then
766            AC_MSG_ERROR([Explicitly requested libxml but libxml not found])
767         fi
768 else
769         ### expat is the default because libxml can't currently survive 
770         ### our brutal OOM-handling unit test setup.
771         ### http://bugzilla.gnome.org/show_bug.cgi?id=109368
772         if $have_expat ; then
773                 with_xml=expat
774                 dbus_use_expat=true
775         elif $have_libxml ; then
776                 with_xml=libxml
777                 dbus_use_libxml=true
778         else
779                 AC_MSG_ERROR([No XML library found, check config.log for failed attempts])
780         fi
781 fi
782
783 AM_CONDITIONAL(DBUS_USE_EXPAT, $dbus_use_expat)
784 AM_CONDITIONAL(DBUS_USE_LIBXML, $dbus_use_libxml)
785
786 if $dbus_use_expat; then
787    XML_LIBS=-lexpat
788    XML_CFLAGS=
789 fi
790 if $dbus_use_libxml; then
791    XML_LIBS=$LIBXML_LIBS
792    XML_CFLAGS=$LIBXML_CFLAGS
793 fi
794
795 # SELinux detection
796 if test x$enable_selinux = xno ; then
797     have_selinux=no;
798 else
799     # See if we have SELinux library
800     AC_CHECK_LIB(selinux, is_selinux_enabled, 
801                  have_selinux=yes, have_selinux=no)
802
803     # see if we have the SELinux header with the new D-BUS stuff in it
804     if test x$have_selinux = xyes ; then
805         AC_MSG_CHECKING([for DBUS Flask permissions in selinux/av_permissions.h])
806         AC_TRY_COMPILE([#include <selinux/av_permissions.h>],
807                         [#ifdef DBUS__ACQUIRE_SVC return 0;
808                          #else
809                          #error DBUS__ACQUIRE_SVC not defined
810                          #endif],
811                         have_selinux=yes, have_selinux=no)
812         AC_MSG_RESULT($have_selinux)
813     fi
814
815     if test x$enable_selinux = xauto ; then
816         if test x$have_selinux = xno ; then
817                 AC_MSG_WARN([Sufficiently new SELinux library not found])
818         fi
819     else 
820         if test x$have_selinux = xno ; then
821                 AC_MSG_ERROR([SElinux explicitly required, and SELinux library not found])
822         fi
823     fi
824 fi
825
826 AM_CONDITIONAL(HAVE_SELINUX, test x$have_selinux = xyes)
827
828 if test x$have_selinux = xyes ; then
829     SELINUX_LIBS="-lselinux -lpthread"
830     AC_DEFINE(HAVE_SELINUX,1,[SELinux support])
831 else
832     SELINUX_LIBS=
833 fi
834
835 # dnotify checks
836 if test x$enable_dnotify = xno ; then
837     have_dnotify=no;
838 else
839     if test x$target_os = xlinux-gnu -o x$target_os = xlinux; then
840         have_dnotify=yes;       
841     else
842         have_dnotify=no;
843     fi
844 fi
845
846 dnl check if dnotify backend is enabled
847 if test x$have_dnotify = xyes; then
848    AC_DEFINE(DBUS_BUS_ENABLE_DNOTIFY_ON_LINUX,1,[Use dnotify on Linux])
849 fi
850
851 #### Set up final flags
852 DBUS_CLIENT_CFLAGS=
853 DBUS_CLIENT_LIBS=
854 AC_SUBST(DBUS_CLIENT_CFLAGS)
855 AC_SUBST(DBUS_CLIENT_LIBS)
856
857 DBUS_BUS_CFLAGS=$XML_CFLAGS
858 DBUS_BUS_LIBS="$XML_LIBS $SELINUX_LIBS $INTLLIBS"
859 AC_SUBST(DBUS_BUS_CFLAGS)
860 AC_SUBST(DBUS_BUS_LIBS)
861
862 DBUS_TEST_CFLAGS=
863 DBUS_TEST_LIBS=
864 AC_SUBST(DBUS_TEST_CFLAGS)
865 AC_SUBST(DBUS_TEST_LIBS)
866
867 # Glib detection
868 PKG_CHECK_MODULES(DBUS_GLIB, gobject-2.0 >= 2.4, have_glib=yes, have_glib=no)
869 PKG_CHECK_MODULES(DBUS_GLIB_THREADS, gthread-2.0 >= 2.4, have_glib_threads=yes, have_glib_threads=no)
870
871 if test x$have_glib = xno ; then
872     AC_MSG_WARN([GLib development libraries not found])
873 fi
874
875 if test x$enable_glib = xyes; then
876     if test x$have_glib = xno; then
877         AC_MSG_ERROR([GLib explicitly required, and GLib development libraries not found])
878     fi
879 fi
880
881 if test x$enable_glib = xno; then
882    have_glib=no;
883 fi
884
885 AM_CONDITIONAL(HAVE_GLIB, test x$have_glib = xyes)
886 AM_CONDITIONAL(HAVE_GLIB_THREADS, test x$have_glib_threads = xyes)
887
888 if test x$have_glib = xyes; then
889    GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0`
890 else
891    GLIB_GENMARSHAL=glib-not-enabled-so-there-is-no-genmarshal
892 fi
893 AC_SUBST(GLIB_GENMARSHAL)
894
895 dnl GLib flags
896 AC_SUBST(DBUS_GLIB_CFLAGS)
897 AC_SUBST(DBUS_GLIB_LIBS)
898 AC_SUBST(DBUS_GLIB_THREADS_LIBS)
899
900 DBUS_GLIB_TOOL_CFLAGS=$XML_CFLAGS
901 DBUS_GLIB_TOOL_LIBS="$XML_LIBS $INTLLIBS"
902 AC_SUBST(DBUS_GLIB_TOOL_CFLAGS)
903 AC_SUBST(DBUS_GLIB_TOOL_LIBS)
904
905 # GTK detection
906 if test x$have_glib = xno ; then
907     AC_MSG_WARN([Can't use GTK+ since GLib not enabled])
908     have_gtk=no
909 else
910     PKG_CHECK_MODULES(DBUS_GTK, gtk+-2.0 >= 2.4, have_gtk=yes, have_gtk=no)
911     PKG_CHECK_MODULES(DBUS_GTK_THREADS, gtk+-2.0 >= 2.4 gthread-2.0, have_gtk_threads=yes, have_gtk_threads=no)
912 fi
913
914 if test x$have_gtk = xno ; then
915     AC_MSG_WARN([GTK+ development libraries not found])
916 fi
917
918 if test x$enable_gtk = xyes; then
919     if test x$have_gtk = xno; then
920         AC_MSG_ERROR([GTK+ explicitly required, and GTK+ development libraries not found])
921     fi
922 fi
923
924 if test x$enable_gtk = xno; then
925    have_gtk=no;
926 fi
927
928 AM_CONDITIONAL(HAVE_GTK, test x$have_gtk = xyes)
929
930 dnl Gtk flags
931 AC_SUBST(DBUS_GTK_CFLAGS)
932 AC_SUBST(DBUS_GTK_LIBS)
933 AC_SUBST(DBUS_GTK_THREADS_CFLAGS)
934 AC_SUBST(DBUS_GTK_THREADS_LIBS)
935
936
937 dnl Qt3 detection
938 AC_PATH_PROG(QT3_MOC, moc, no)
939
940 have_qt3=no
941 AC_MSG_CHECKING([for qglobal.h])
942 if test -n "$QTDIR" -a -f "$QTDIR/include/qglobal.h"; then
943     have_qt3=yes
944     DBUS_QT3_CXXFLAGS="-I$QTDIR/include"
945 else
946     for dir in "${prefix}/include/qt" "/usr/include/qt-3.1" "/usr/include/qt3" "/usr/include/qt" "/usr/lib/qt/include" "/usr/lib/qt-3.1/include"; do
947         if test -f "$dir/qglobal.h"; then
948             have_qt3=yes
949             DBUS_QT3_CXXFLAGS="-I$dir"
950             DBUS_QT3_LIBS="-L$QTDIR/lib -lqt-mt"
951        fi
952     done
953 fi
954 if test x$have_qt3 = xyes; then
955    AC_MSG_RESULT([found])
956 else
957    AC_MSG_RESULT([not found])
958 fi
959
960 if test x$have_qt3 = xno; then
961     AC_MSG_WARN([Qt3 development libraries not found])
962 fi
963
964 if test x$enable_qt3 = xyes; then
965     if test x$have_qt3 = xno; then
966         AC_MSG_ERROR([Qt3 integration explicitly required, and Qt3 libraries not found])
967     fi
968 fi
969
970 if test x$enable_qt3 = xno; then
971    have_qt3=no;
972 fi
973
974 AM_CONDITIONAL(HAVE_QT3, test x$have_qt3 = xyes)
975
976 dnl Qt flags
977 AC_SUBST(DBUS_QT3_CXXFLAGS)
978 AC_SUBST(DBUS_QT3_LIBS)
979
980
981 dnl Qt detection
982
983 if test x$enable_qt_debug = xyes; then
984
985     PKG_CHECK_MODULES(DBUS_QT, QtCore_debug >= 4.0, have_qt_debug=yes, have_qt_debug=no)
986     if test x$have_qt_debug = xno; then
987         AC_MSG_ERROR([Qt debug libraries explicitly required, but not found])
988     fi
989
990     QT_CORE=QtCore_debug
991     QT_TESTLIB=QtTest_debug
992     have_qt=yes
993 else
994     PKG_CHECK_MODULES(DBUS_QT, QtCore >= 4.0, have_qt=yes, have_qt=no)
995
996     if test x$have_qt = xno ; then
997         AC_MSG_WARN([Qt development libraries not found])
998     fi
999
1000     if test x$enable_qt = xyes; then
1001         if test x$have_qt = xno; then
1002             AC_MSG_ERROR([Qt integration explicitly required, and Qt libraries not found])
1003         fi
1004     fi
1005     if test x$enable_qt = xno; then
1006         have_qt=no;
1007     fi
1008
1009     QT_CORE=QtCore
1010     QT_TESTLIB=QtTest
1011 fi
1012
1013 QT_MOC=`$PKG_CONFIG --variable=exec_prefix $QT_CORE`
1014 QT_MOC=${QT_MOC}/bin/moc
1015
1016 AM_CONDITIONAL(HAVE_QT, test x$have_qt = xyes)
1017
1018 dnl Qt flags
1019 AC_SUBST(DBUS_QT_CFLAGS)
1020 AC_SUBST(DBUS_QT_LIBS)
1021 AC_SUBST(QT_MOC)
1022
1023
1024 dnl QTestLib detection
1025 PKG_CHECK_MODULES(DBUS_QTESTLIB, $QT_TESTLIB >= 4.1, have_qtest=yes, have_qtest=no)
1026
1027 if test x$have_qtest = xno ; then
1028     AC_MSG_WARN([Qt Unit Test library not found])
1029 fi
1030
1031 if test x$have_qt = xno; then
1032     have_qtest=no
1033 fi
1034
1035 AM_CONDITIONAL(HAVE_QTESTLIB, test x$have_qtest = xyes)
1036
1037 AC_SUBST(DBUS_QTESTLIB_CFLAGS)
1038 AC_SUBST(DBUS_QTESTLIB_LIBS)
1039
1040 ### X11 detection
1041 AC_PATH_XTRA
1042
1043 ## for now enable_x11 just tracks have_x11, 
1044 ## there's no --enable-x11
1045 if test x$no_x = xyes ; then
1046    have_x11=no
1047    enable_x11=no
1048 else
1049    have_x11=yes
1050    enable_x11=yes
1051 fi
1052
1053 if test x$enable_x11 = xyes ; then
1054    AC_DEFINE(DBUS_BUILD_X11,1,[Build X11-dependent code])
1055    DBUS_X_LIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
1056    DBUS_X_CFLAGS="$X_CFLAGS"
1057 else
1058    DBUS_X_LIBS=
1059    DBUS_X_CFLAGS=
1060 fi
1061
1062 AC_SUBST(DBUS_X_CFLAGS)
1063 AC_SUBST(DBUS_X_LIBS)
1064
1065 ### Doxygen Documentation
1066
1067 AC_PATH_PROG(DOXYGEN, doxygen, no)
1068
1069 AC_MSG_CHECKING([whether to build Doxygen documentation])
1070
1071 if test x$DOXYGEN = xno ; then
1072     have_doxygen=no
1073 else
1074     have_doxygen=yes
1075 fi
1076
1077 if test x$enable_doxygen_docs = xauto ; then
1078     if test x$have_doxygen = xno ; then
1079         enable_doxygen_docs=no
1080     else
1081         enable_doxygen_docs=yes
1082     fi
1083 fi
1084
1085 if test x$enable_doxygen_docs = xyes; then
1086     if test x$have_doxygen = xno; then
1087         AC_MSG_ERROR([Building Doxygen docs explicitly required, but Doxygen not found])
1088     fi
1089 fi
1090
1091 AM_CONDITIONAL(DBUS_DOXYGEN_DOCS_ENABLED, test x$enable_doxygen_docs = xyes)
1092 AC_MSG_RESULT(yes)
1093
1094 ### XML Documentation
1095
1096 AC_PATH_PROG(XMLTO, xmlto, no)
1097
1098 AC_MSG_CHECKING([whether to build XML documentation])
1099
1100 if test x$XMLTO = xno ; then
1101     have_xmlto=no
1102 else
1103     have_xmlto=yes
1104 fi
1105
1106 if test x$enable_xml_docs = xauto ; then
1107     if test x$have_xmlto = xno ; then
1108         enable_xml_docs=no
1109     else
1110         enable_xml_docs=yes
1111     fi
1112 fi
1113
1114 if test x$enable_xml_docs = xyes; then
1115     if test x$have_xmlto = xno; then
1116         AC_MSG_ERROR([Building XML docs explicitly required, but xmlto not found])
1117     fi
1118 fi
1119
1120 AM_CONDITIONAL(DBUS_XML_DOCS_ENABLED, test x$enable_xml_docs = xyes)
1121 AC_MSG_RESULT(yes)
1122
1123 #### Have to go $localstatedir->$prefix/var->/usr/local/var   
1124 #### someone please fix this a better way...
1125
1126 #### find the actual value for $prefix that we'll end up with
1127 ##   (I know this is broken and should be done in the Makefile, but
1128 ##    that's a major pain and almost nobody actually seems to care)
1129 REAL_PREFIX=
1130 if test "x$prefix" = "xNONE"; then
1131   REAL_PREFIX=$ac_default_prefix
1132 else
1133   REAL_PREFIX=$prefix
1134 fi
1135
1136 ## temporarily change prefix and exec_prefix
1137 old_prefix=$prefix
1138 prefix=$REAL_PREFIX
1139
1140 if test "x$exec_prefix" = xNONE ; then
1141    REAL_EXEC_PREFIX=$REAL_PREFIX
1142 else
1143    REAL_EXEC_PREFIX=$exec_prefix
1144 fi
1145 old_exec_prefix=$exec_prefix
1146 exec_prefix=$REAL_EXEC_PREFIX
1147
1148 ## eval everything
1149 LOCALSTATEDIR_TMP="$localstatedir"
1150 EXPANDED_LOCALSTATEDIR=`eval echo $LOCALSTATEDIR_TMP`
1151 AC_SUBST(EXPANDED_LOCALSTATEDIR)
1152
1153 SYSCONFDIR_TMP="$sysconfdir"
1154 EXPANDED_SYSCONFDIR=`eval echo $SYSCONFDIR_TMP`
1155 AC_SUBST(EXPANDED_SYSCONFDIR)
1156
1157 BINDIR_TMP="$bindir"
1158 EXPANDED_BINDIR=`eval echo $BINDIR_TMP`
1159 AC_SUBST(EXPANDED_BINDIR)
1160
1161 LIBDIR_TMP="$libdir"
1162 EXPANDED_LIBDIR=`eval echo $LIBDIR_TMP`
1163 AC_SUBST(EXPANDED_LIBDIR)
1164
1165 DATADIR_TMP="$datadir"
1166 EXPANDED_DATADIR=`eval echo $DATADIR_TMP`
1167 AC_SUBST(EXPANDED_DATADIR)
1168
1169 ## put prefix and exec_prefix back
1170 prefix=$old_prefix
1171 exec_prefix=$old_exec_prefix
1172
1173 #### Check our operating system
1174 operating_system=unknown
1175 if test -f /etc/redhat-release || test -f $EXPANDED_SYSCONFDIR/redhat-release ; then
1176    operating_system=redhat
1177 fi
1178
1179 if test -f /etc/slackware-version || test -f $EXPANDED_SYSCONFDIR/slackware-version ; then
1180    operating_system=slackware
1181 fi
1182
1183 #### Sort out init scripts
1184
1185 if test x$with_init_scripts = x; then
1186     if test xredhat = x$operating_system ; then
1187         with_init_scripts=redhat
1188     else
1189         if test xslackware = x$operating_system ; then
1190                 with_init_scripts=slackware
1191             else
1192                 with_init_scripts=none
1193         fi
1194     fi
1195 fi
1196
1197 AM_CONDITIONAL(DBUS_INIT_SCRIPTS_RED_HAT, test x$with_init_scripts = xredhat)
1198
1199 AM_CONDITIONAL(DBUS_INIT_SCRIPTS_SLACKWARE, test x$with_init_scripts = xslackware)
1200
1201 ##### Set up location for system bus socket
1202 if ! test -z "$with_system_socket"; then
1203    DBUS_SYSTEM_SOCKET=$with_system_socket
1204 else
1205    DBUS_SYSTEM_SOCKET=${EXPANDED_LOCALSTATEDIR}/run/dbus/system_bus_socket
1206 fi
1207
1208 AC_SUBST(DBUS_SYSTEM_SOCKET)
1209 AC_DEFINE_UNQUOTED(DBUS_SYSTEM_SOCKET,"$DBUS_SYSTEM_SOCKET",[The name of the socket the system bus listens on by default])
1210
1211 ## system bus only listens on local domain sockets, and never 
1212 ## on an abstract socket (so only root can create the socket)
1213 DBUS_SYSTEM_BUS_DEFAULT_ADDRESS="unix:path=$DBUS_SYSTEM_SOCKET"
1214 AC_SUBST(DBUS_SYSTEM_BUS_DEFAULT_ADDRESS)
1215 AC_DEFINE_UNQUOTED(DBUS_SYSTEM_BUS_DEFAULT_ADDRESS, "$DBUS_SYSTEM_BUS_DEFAULT_ADDRESS",[The default D-BUS address of the system bus])
1216
1217 #### Set up the pid file
1218 if ! test -z "$with_system_pid_file"; then
1219    DBUS_SYSTEM_PID_FILE=$with_system_pid_file
1220 elif test x$operating_system = xredhat ; then
1221    DBUS_SYSTEM_PID_FILE=${EXPANDED_LOCALSTATEDIR}/run/messagebus.pid
1222 else
1223    DBUS_SYSTEM_PID_FILE=${EXPANDED_LOCALSTATEDIR}/run/dbus/pid
1224 fi
1225
1226 AC_SUBST(DBUS_SYSTEM_PID_FILE)
1227
1228 #### Directory to check for console ownership
1229 if ! test -z "$with_console_auth_dir"; then
1230    DBUS_CONSOLE_AUTH_DIR=$with_console_auth_dir
1231 else
1232    DBUS_CONSOLE_AUTH_DIR=/var/run/console/
1233 fi
1234
1235 AC_SUBST(DBUS_CONSOLE_AUTH_DIR)
1236 AC_DEFINE_UNQUOTED(DBUS_CONSOLE_AUTH_DIR, "$DBUS_CONSOLE_AUTH_DIR", [Directory to check for console ownerhip])
1237
1238 #### User to start the system bus as
1239 if test -z "$with_dbus_user" ; then
1240     DBUS_USER=messagebus
1241 else
1242     DBUS_USER=$with_dbus_user
1243 fi
1244 AC_SUBST(DBUS_USER)
1245 AC_DEFINE_UNQUOTED(DBUS_USER,"$DBUS_USER", [User for running the system BUS daemon])
1246
1247 #### Tell tests where to find certain stuff in builddir
1248 ABSOLUTE_TOP_BUILDDIR=`cd ${ac_top_builddir}. && pwd`
1249
1250 AC_DEFUN(TEST_PATH, [
1251 TEST_$1=${ABSOLUTE_TOP_BUILDDIR}/test/$2
1252 AC_DEFINE_UNQUOTED(TEST_$1, "$TEST_$1",
1253                    [Full path to test file test/$2 in builddir])
1254 AC_SUBST(TEST_$1)
1255 ])
1256
1257 TEST_PATH(SERVICE_DIR, data/valid-service-files)
1258 TEST_PATH(SERVICE_BINARY, test-service)
1259 TEST_PATH(SHELL_SERVICE_BINARY, test-shell-service)
1260 TEST_PATH(GLIB_SERVICE_BINARY, glib/test-service-glib)
1261 TEST_PATH(PYTHON_SERVICE_BINARY, python/test-service.py)
1262 TEST_PATH(EXIT_BINARY, test-exit)
1263 TEST_PATH(SEGFAULT_BINARY, test-segfault)
1264 TEST_PATH(SLEEP_FOREVER_BINARY, test-sleep-forever)
1265 AC_SUBST(ABSOLUTE_TOP_BUILDDIR)
1266
1267 #### Find socket directories
1268 if ! test -z "$TMPDIR" ; then
1269    DEFAULT_SOCKET_DIR=$TMPDIR
1270 elif ! test -z "$TEMP" ; then
1271    DEFAULT_SOCKET_DIR=$TEMP
1272 elif ! test -z "$TMP" ; then
1273    DEFAULT_SOCKET_DIR=$TMP
1274 else
1275    DEFAULT_SOCKET_DIR=/tmp
1276 fi
1277
1278 if ! test -z "$with_test_socket_dir" ; then
1279    TEST_SOCKET_DIR="$with_test_socket_dir"
1280 else
1281    TEST_SOCKET_DIR=$DEFAULT_SOCKET_DIR
1282 fi
1283 AC_SUBST(TEST_SOCKET_DIR)
1284 AC_DEFINE_UNQUOTED(DBUS_TEST_SOCKET_DIR, "$TEST_SOCKET_DIR", [Where to put test sockets])
1285
1286 if ! test -z "$with_session_socket_dir" ; then
1287    DBUS_SESSION_SOCKET_DIR="$with_session_socket_dir"
1288 else
1289    DBUS_SESSION_SOCKET_DIR=$DEFAULT_SOCKET_DIR
1290 fi
1291 AC_DEFINE_UNQUOTED(DBUS_SESSION_SOCKET_DIR, "$DBUS_SESSION_SOCKET_DIR", [Where per-session bus puts its sockets])
1292 AC_SUBST(DBUS_SESSION_SOCKET_DIR)
1293
1294 # Detect if we can build Python bindings (need python, python headers, and pyrex)
1295 if test x$enable_python = xno; then
1296     have_python=no
1297 else
1298     have_python_version=2.4
1299     AC_MSG_NOTICE([Checking to see if we can build Python bindings])
1300     have_python=no
1301     AM_PATH_PYTHON()
1302
1303     if test -z "$PYTHON" ; then
1304         AC_MSG_WARN([Python not found])
1305     else
1306         AC_MSG_CHECKING([whether $PYTHON version >= $have_python_version])
1307         AM_PYTHON_CHECK_VERSION([$PYTHON], [$have_python_version],
1308                               [have_python_version="yes"],
1309                               [have_python_version="too old"])
1310     
1311         AC_MSG_RESULT($have_python_version)
1312     
1313         AC_CHECK_PROGS(PYREX, pyrexc)
1314
1315         if test -z "$PYREX" ; then
1316             have_pyrex=no
1317         else
1318             have_pyrex=yes
1319         fi
1320
1321         AM_CHECK_PYTHON_HEADERS(have_python_headers=yes,have_python_headers=no)
1322
1323         if test x$have_pyrex = xyes -a x$have_python_headers = xyes -a "x$have_python_version" = xyes ; then
1324             have_python=yes
1325         fi
1326     fi
1327
1328     if test x$have_python = xno ; then
1329         if test x$enable_python = xyes ; then
1330             AC_MSG_ERROR([Building python explicitly requested, but can't build python bindings because either Pyrex, Python headers or a suitable Python version was not found])
1331         else
1332             AC_MSG_WARN([Couldn't find either Pyrex, the Python headers or a suitable version of Python, not building Python bindings])
1333         fi
1334     fi               
1335 fi
1336
1337 AM_CONDITIONAL(HAVE_PYTHON, test x$have_python = xyes)
1338
1339 AC_OUTPUT([
1340 Doxyfile
1341 dbus/dbus-arch-deps.h
1342 bus/system.conf
1343 bus/session.conf
1344 bus/messagebus
1345 bus/rc.messagebus
1346 bus/dbus-daemon.1
1347 Makefile
1348 dbus/Makefile
1349 glib/Makefile
1350 glib/examples/Makefile
1351 glib/examples/statemachine/Makefile
1352 python/Makefile
1353 python/examples/Makefile
1354 qt/Makefile
1355 qt3/Makefile
1356 gcj/Makefile
1357 gcj/org/Makefile
1358 gcj/org/freedesktop/Makefile
1359 gcj/org/freedesktop/dbus/Makefile
1360 mono/Makefile
1361 mono/AssemblyInfo.cs
1362 mono/dbus-sharp.dll.config
1363 mono/example/Makefile
1364 mono/doc/Makefile
1365 bus/Makefile
1366 tools/Makefile
1367 test/Makefile
1368 test/glib/Makefile
1369 test/python/Makefile
1370 test/qt/Makefile
1371 test/name-test/Makefile
1372 doc/Makefile
1373 dbus-1.pc
1374 dbus-glib-1.pc
1375 dbus-sharp.pc
1376 test/data/valid-config-files/debug-allow-all.conf
1377 test/data/valid-config-files/debug-allow-all-sha1.conf
1378 test/data/valid-service-files/debug-echo.service
1379 test/data/valid-service-files/debug-segfault.service
1380 test/data/valid-service-files/debug-glib.service
1381 test/data/valid-service-files/debug-shell-echo-success.service
1382 test/data/valid-service-files/debug-shell-echo-fail.service
1383 test/data/valid-service-files/debug-python.service
1384 ])
1385
1386 ### FIXME it's bizarre that have_qt and have_glib are used
1387 ### instead of enable_ - should fix things so that enable 
1388 ### is always whether it's enabled, and have is always whether 
1389 ### it was found.
1390
1391 dnl ==========================================================================
1392 echo "
1393                     D-BUS $VERSION
1394                   ==============
1395
1396         prefix:                   ${prefix}
1397         exec_prefix:              ${exec_prefix}
1398         libdir:                   ${EXPANDED_LIBDIR}
1399         bindir:                   ${EXPANDED_BINDIR}
1400         sysconfdir:               ${EXPANDED_SYSCONFDIR}
1401         localstatedir:            ${EXPANDED_LOCALSTATEDIR}
1402         datadir:              ${EXPANDED_DATADIR}
1403         source code location:     ${srcdir}
1404         compiler:                 ${CC}
1405         cflags:                   ${CFLAGS}
1406         cppflags:                 ${CPPFLAGS}
1407         cxxflags:                 ${CXXFLAGS}
1408         64-bit int:               ${DBUS_INT64_TYPE}
1409         32-bit int:               ${DBUS_INT32_TYPE}
1410         16-bit int:               ${DBUS_INT16_TYPE}
1411         Doxygen:                  ${DOXYGEN}
1412         xmlto:                    ${XMLTO}"
1413
1414 if test x$enable_gcj = xyes ; then
1415 echo \
1416 "        gcj:                     ${GCJ}
1417         gcjflags:                 ${GCJFLAGS}
1418         jar:                      ${JAR}"
1419 else
1420 echo \
1421 "        gcj:                      (not enabled)"
1422 fi
1423
1424 if test x$enable_mono = xyes ; then
1425 echo \
1426 "        csc:                     ${CSC}
1427 "
1428 else
1429 echo \
1430 "        csc:                      (not enabled)
1431 "
1432 fi
1433
1434 echo "
1435         Maintainer mode:          ${USE_MAINTAINER_MODE}
1436         gcc coverage profiling:   ${enable_gcov}
1437         Building unit tests:      ${enable_tests}
1438         Building verbose mode:    ${enable_verbose_mode}
1439         Building assertions:      ${enable_asserts}
1440         Building checks:          ${enable_checks}
1441         Building Qt bindings:     ${have_qt}
1442         Building Qt3 bindings:    ${have_qt3}
1443         Building GLib bindings:   ${have_glib}
1444         Building Python bindings: ${have_python}
1445         Building SELinux support: ${have_selinux}
1446         Building dnotify support: ${have_dnotify}
1447         Building Mono bindings:   ${enable_mono}
1448         Building Mono docs:       ${enable_mono_docs}
1449         Building GTK+ tools:      ${have_gtk}
1450         Building X11 code:        ${enable_x11}
1451         Building Doxygen docs:    ${enable_doxygen_docs}
1452         Building XML docs:        ${enable_xml_docs}
1453         Gettext libs (empty OK):  ${INTLLIBS}
1454         Using XML parser:         ${with_xml}
1455         Init scripts style:       ${with_init_scripts}
1456         Abstract socket names:    ${have_abstract_sockets}
1457         System bus socket:        ${DBUS_SYSTEM_SOCKET}
1458         System bus address:       ${DBUS_SYSTEM_BUS_DEFAULT_ADDRESS}
1459         System bus PID file:      ${DBUS_SYSTEM_PID_FILE}
1460         Session bus socket dir:   ${DBUS_SESSION_SOCKET_DIR}
1461         Console auth dir:         ${DBUS_CONSOLE_AUTH_DIR}
1462         System bus user:          ${DBUS_USER}
1463         'make check' socket dir:  ${TEST_SOCKET_DIR}
1464 "
1465
1466 if test x$enable_tests = xyes; then
1467         echo "NOTE: building with unit tests increases the size of the installed library and renders it insecure."
1468 fi
1469 if test x$enable_tests = xyes -a x$enable_asserts = xno; then
1470         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)"
1471 fi
1472 if test x$enable_gcov = xyes; then
1473         echo "NOTE: building with coverage profiling is definitely for developers only."
1474 fi
1475 if test x$enable_verbose_mode = xyes; then
1476         echo "NOTE: building with verbose mode increases library size, may slightly increase security risk, and decreases performance."
1477 fi
1478 if test x$enable_asserts = xyes; then
1479         echo "NOTE: building with assertions increases library size and decreases performance."
1480 fi
1481 if test x$enable_checks = xno; then
1482         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."
1483 fi