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