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