Merge branch 'socket-set-33337'
[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.24, gio-2.0 >= 2.24],
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 # For simplicity, we require the userland API for epoll_create1 at
1040 # compile-time (glibc 2.9), but we'll run on kernels that turn out
1041 # not to have it at runtime.
1042 AC_ARG_ENABLE([epoll],
1043               [AS_HELP_STRING([--enable-epoll],[use epoll(4) on Linux])],
1044               [enable_epoll=$enableval], [enable_epoll=auto])
1045 if test x$enable_epoll = xno; then
1046     have_linux_epoll=no
1047 else
1048     AC_MSG_CHECKING([for Linux epoll(4)])
1049     AC_LINK_IFELSE([AC_LANG_PROGRAM(
1050         [
1051         #ifndef __linux__
1052         #error This is not Linux
1053         #endif
1054         #include <sys/epoll.h>
1055         ],
1056         [epoll_create1 (EPOLL_CLOEXEC);])],
1057         [have_linux_epoll=yes],
1058         [have_linux_epoll=no])
1059     AC_MSG_RESULT([$have_linux_epoll])
1060 fi
1061 if test x$enable_epoll,$have_linux_epoll = xyes,no; then
1062     AC_MSG_ERROR([epoll support explicitly enabled but not available])
1063 fi
1064 if test x$have_linux_epoll = xyes; then
1065   AC_DEFINE([DBUS_HAVE_LINUX_EPOLL], 1, [Define to use epoll(4) on Linux])
1066 fi
1067 AM_CONDITIONAL([HAVE_LINUX_EPOLL], [test x$have_linux_epoll = xyes])
1068
1069 # kqueue checks
1070 if test x$enable_kqueue = xno ; then
1071     have_kqueue=no
1072 else
1073     have_kqueue=yes
1074     AC_CHECK_HEADER(sys/event.h, , have_kqueue=no)
1075     AC_CHECK_FUNC(kqueue, , have_kqueue=no)
1076
1077     if test x$enable_kqueue = xyes -a x$have_kqueue = xno; then
1078         AC_MSG_ERROR(kqueue support explicitly enabled but not available)
1079     fi
1080 fi
1081
1082 dnl check if kqueue backend is enabled
1083 if test x$have_kqueue = xyes; then
1084    AC_DEFINE(DBUS_BUS_ENABLE_KQUEUE,1,[Use kqueue])
1085 fi
1086
1087 AM_CONDITIONAL(DBUS_BUS_ENABLE_KQUEUE, test x$have_kqueue = xyes)
1088
1089 # launchd checks
1090 if test x$enable_launchd = xno ; then
1091     have_launchd=no
1092 else
1093     have_launchd=yes
1094     AC_CHECK_HEADER([launch.h], , have_launchd=no)
1095     AC_PATH_PROG([LAUNCHCTL], [launchctl])
1096     if test "x$LAUNCHCTL" = "x"; then
1097         have_launchd=no
1098     fi
1099
1100     if test x$enable_launchd = xyes && test x$have_launchd = xno ; then
1101         AC_MSG_ERROR([launchd support explicitly enabled but not available])
1102     fi
1103 fi
1104
1105 dnl check if launchd is enabled
1106 if test x$have_launchd = xyes; then
1107     AC_DEFINE(DBUS_ENABLE_LAUNCHD,1,[Use launchd autolaunch])
1108 fi
1109
1110 AM_CONDITIONAL(DBUS_ENABLE_LAUNCHD, test x$have_launchd = xyes)
1111
1112 #### Directory to place launchd agent file
1113 if test "x$with_launchd_agent_dir" = "x"; then
1114    LAUNCHD_AGENT_DIR="/Library/LaunchAgents"
1115 else
1116    LAUNCHD_AGENT_DIR="$with_launchd_agent_dir"
1117 fi
1118
1119 AC_SUBST(LAUNCHD_AGENT_DIR)
1120
1121 dnl console owner file
1122 if test x$enable_console_owner_file = xno ; then
1123     have_console_owner_file=no;
1124 else
1125     case $host_os in
1126     solaris*)
1127         have_console_owner_file=yes;
1128         AC_DEFINE(HAVE_CONSOLE_OWNER_FILE,1,[Have console owner file])
1129         ;;
1130     *)
1131         have_console_owner_file=no;;
1132     esac
1133 fi
1134
1135 AM_CONDITIONAL(HAVE_CONSOLE_OWNER_FILE, test x$have_console_owner_file = xyes)
1136
1137 # libaudit detection
1138 if test x$enable_libaudit = xno ; then
1139     have_libaudit=no;
1140 else
1141     # See if we have audit daemon & capabilities library
1142     AC_CHECK_LIB(audit, audit_log_user_avc_message,
1143                  have_libaudit=yes, have_libaudit=no)
1144     if test x$have_libaudit = xyes ; then
1145         AC_CHECK_LIB(cap-ng, capng_clear,
1146                  have_libaudit=yes, have_libaudit=no)
1147     fi
1148 fi
1149
1150 AM_CONDITIONAL(HAVE_LIBAUDIT, test x$have_libaudit = xyes)
1151
1152 if test x$have_libaudit = xyes ; then
1153     SELINUX_LIBS="$SELINUX_LIBS -laudit -lcap-ng"
1154     AC_DEFINE(HAVE_LIBAUDIT,1,[audit daemon SELinux support])
1155 fi
1156
1157 AC_SUBST([SELINUX_LIBS])
1158
1159 # Check for ADT API (Solaris Basic Security Mode auditing)
1160 AC_MSG_CHECKING(for ADT API)
1161 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1162 #include <bsm/adt.h>
1163 adt_user_context = ADT_USER;
1164 ]], [[]])], [ check_adt_audit=yes ], [ check_adt_audit=no ])
1165
1166 if test ${check_adt_audit} = yes
1167 then
1168    AC_DEFINE([HAVE_ADT], [], [Adt audit API])
1169    ADT_LIBS="-lbsm"
1170    LIBS="-lbsm $LIBS"
1171    AC_MSG_RESULT(yes)
1172 else
1173    AC_MSG_RESULT(no)
1174 fi
1175 AC_SUBST([ADT_LIBS])
1176
1177 # Check for SCM_RIGHTS
1178 AC_MSG_CHECKING([for SCM_RIGHTS])
1179 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1180 #include <sys/socket.h>
1181 #include <sys/un.h>
1182 static int x = SCM_RIGHTS;
1183 ]], [[]])],
1184 [ AC_MSG_RESULT([supported])
1185   AC_DEFINE([HAVE_UNIX_FD_PASSING], [1], [Supports sending UNIX file descriptors]) ],
1186 [ AC_MSG_RESULT([not supported]) ])
1187
1188 NETWORK_libs=
1189 if test x$dbus_win = xyes ; then
1190   if test x$dbus_wince = xyes ; then
1191     NETWORK_libs="-lws2"
1192   else
1193     NETWORK_libs="-lws2_32"
1194   fi
1195 fi
1196
1197 AC_SUBST([NETWORK_libs])
1198
1199 #### Set up final flags
1200 LIBDBUS_LIBS="$THREAD_LIBS $NETWORK_libs"
1201 AC_SUBST([LIBDBUS_LIBS])
1202
1203 ### X11 detection
1204 DBUS_X_LIBS=
1205 DBUS_X_CFLAGS=
1206
1207 AC_ARG_ENABLE([x11-autolaunch],
1208   AS_HELP_STRING([--enable-x11-autolaunch], [build with X11 auto-launch support]),
1209   [], [enable_x11_autolaunch=auto])
1210
1211 if test "x$dbus_win" = xyes; then
1212     if test "x$enable_x11_autolaunch" = xyes; then
1213         AC_MSG_ERROR([X11 auto-launch is not supported on Windows])
1214     fi
1215
1216     enable_x11_autolaunch=no
1217     have_x11=no
1218 else
1219     AC_PATH_XTRA
1220
1221     if test "x$no_x" = xyes; then
1222         have_x11=no
1223     else
1224         have_x11=yes
1225         DBUS_X_LIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"
1226         DBUS_X_CFLAGS="$X_CFLAGS"
1227     fi
1228 fi
1229
1230 if test "x$enable_x11_autolaunch,$have_x11" = xyes,no; then
1231     AC_MSG_ERROR([X11 auto-launch requires X headers/libraries])
1232 else
1233     # move from "auto" to "yes" or "no" if necessary
1234     if test "x$enable_x11_autolaunch" != xno; then
1235         enable_x11_autolaunch="$have_x11"
1236     fi
1237 fi
1238
1239 if test "x$have_x11" = xyes ; then
1240    AC_DEFINE([DBUS_BUILD_X11], [1], [Define to build X11 functionality])
1241 fi
1242
1243 if test "x$enable_x11_autolaunch" = xyes ; then
1244    AC_DEFINE([DBUS_ENABLE_X11_AUTOLAUNCH], [1], [Define to enable X11 auto-launch])
1245 fi
1246
1247 AC_SUBST([DBUS_X_CFLAGS])
1248 AC_SUBST([DBUS_X_LIBS])
1249
1250 #### gcc warning flags
1251
1252 cc_supports_flag() {
1253   AC_MSG_CHECKING(whether $CC supports "$*")
1254   save_CFLAGS="$CFLAGS"
1255   CFLAGS="$*"
1256   AC_TRY_COMPILE([], [], [rc=yes], [rc=no])
1257   CFLAGS="$save_CFLAGS"
1258   AC_MSG_RESULT([$rc])
1259   test "x$rc" = xyes
1260 }
1261
1262 TP_COMPILER_WARNINGS([WARNING_CFLAGS],
1263   dnl Use -Werror by default if:
1264   dnl - we're not on Windows (too many warnings), and
1265   dnl - we're in maintainer mode (a D-Bus developer, not a distro or end-user)
1266   dnl Override with --enable-Werror or --disable-Werror
1267   [test x$dbus_win != xyes -a x$dbus_cygwin != xyes -a x$USE_MAINTAINER_MODE = xyes],
1268
1269   dnl Enable these warnings if possible:
1270   [all \
1271    extra \
1272    char-subscripts \
1273    missing-declarations \
1274    missing-prototypes \
1275    nested-externs \
1276    pointer-arith \
1277    cast-align \
1278    no-address \
1279    float-equal \
1280    declaration-after-statement \
1281   ],
1282
1283   dnl Disable these warnings if possible, make them non-fatal if possible,
1284   dnl and don't enable -Werror unless we succeeded.
1285   dnl
1286   dnl Intentional:
1287   dnl - $DISABLE_UNUSED_WARNINGS disables unused-label warnings if not
1288   dnl   checking or not asserting
1289   dnl - missing field initializers being 0 is a C feature, not a bug
1290   dnl - unused-parameter is to make writing callbacks less annoying
1291   dnl
1292   dnl To be fixed one day:
1293   dnl - sign-compare and pointer-sign are workarounds for fd.o #17433
1294   dnl - type-limits is probably a bug too, but having the rest of -Wextra
1295   dnl   is better than nothing
1296   [$DISABLE_UNUSED_WARNINGS \
1297    missing-field-initializers \
1298    unused-parameter \
1299    sign-compare \
1300    pointer-sign \
1301    type-limits \
1302   ])
1303
1304 if test "x$GCC" = "xyes"; then
1305   # We're treating -fno-common like a warning: it makes the linker more
1306   # strict, because on some systems the linker is *always* this strict
1307   TP_ADD_COMPILER_FLAG([WARNING_CFLAGS], [-fno-common])
1308
1309   # http://bugs.freedesktop.org/show_bug.cgi?id=10599
1310   TP_ADD_COMPILER_FLAG([WARNING_CFLAGS], [-fno-strict-aliasing])
1311
1312   if test "x$enable_ansi" = "xyes"; then
1313     TP_ADD_COMPILER_FLAG([WARNING_CFLAGS],
1314       [-ansi -D_POSIX_C_SOURCE=199309L -D_BSD_SOURCE -pedantic])
1315   fi
1316 fi
1317
1318 dnl In principle we should put WARNING_CFLAGS in each Makefile.am like
1319 dnl telepathy-glib does, since CFLAGS is meant to be reserved for the user...
1320 dnl but prepending to CFLAGS (so the user can override it with later CFLAGS)
1321 dnl is the next best thing
1322 CFLAGS="$WARNING_CFLAGS $CFLAGS"
1323
1324 case $host_os in
1325     solaris*)
1326         # Solaris' C library apparently needs these runes to be threadsafe...
1327         CFLAGS="$CFLAGS -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT"
1328         # ... and this opt-in to get file descriptor passing support
1329         CFLAGS="$CFLAGS -D_XOPEN_SOURCE=500"
1330         ;;
1331 esac
1332
1333 ### Doxygen Documentation
1334
1335 AC_PATH_PROG(DOXYGEN, doxygen, no)
1336
1337 AC_MSG_CHECKING([whether to build Doxygen documentation])
1338
1339 if test x$DOXYGEN = xno ; then
1340     have_doxygen=no
1341 else
1342     have_doxygen=yes
1343 fi
1344
1345 if test x$enable_doxygen_docs = xauto ; then
1346     if test x$have_doxygen = xno ; then
1347         enable_doxygen_docs=no
1348     else
1349         enable_doxygen_docs=yes
1350     fi
1351 fi
1352
1353 if test x$enable_doxygen_docs = xyes; then
1354     if test x$have_doxygen = xno; then
1355         AC_MSG_ERROR([Building Doxygen docs explicitly required, but Doxygen not found])
1356     fi
1357 fi
1358
1359 AM_CONDITIONAL(DBUS_DOXYGEN_DOCS_ENABLED, test x$enable_doxygen_docs = xyes)
1360 AC_MSG_RESULT($enable_doxygen_docs)
1361
1362 AC_CHECK_PROGS([XSLTPROC], [xsltproc])
1363 AM_CONDITIONAL([DBUS_HAVE_XSLTPROC], [test "x$XSLTPROC" != "x"])
1364
1365 ### XML Documentation
1366
1367 AC_PATH_PROG(XMLTO, xmlto, no)
1368
1369 AC_MSG_CHECKING([whether to build XML documentation])
1370
1371 if test x$XMLTO = xno ; then
1372     have_xmlto=no
1373 else
1374     have_xmlto=yes
1375 fi
1376
1377 if test x$enable_xml_docs = xauto ; then
1378     if test x$have_xmlto = xno ; then
1379         enable_xml_docs=no
1380     else
1381         enable_xml_docs=yes
1382     fi
1383 fi
1384
1385 if test x$enable_xml_docs = xyes; then
1386     if test x$have_xmlto = xno; then
1387         AC_MSG_ERROR([Building XML docs explicitly required, but xmlto not found])
1388     fi
1389 fi
1390
1391 AM_CONDITIONAL(DBUS_XML_DOCS_ENABLED, test x$enable_xml_docs = xyes)
1392 AC_MSG_RESULT($enable_xml_docs)
1393
1394 AC_PATH_PROG([MAN2HTML], [man2html])
1395 AC_ARG_VAR([MAN2HTML], [Path to man2html (optional)])
1396 AM_CONDITIONAL(DBUS_HAVE_MAN2HTML, test x$MAN2HTML != x)
1397
1398 AM_CONDITIONAL(DBUS_CAN_UPLOAD_DOCS,
1399     test x$enable_doxygen_docs = xyes -a x$enable_xml_docs = xyes -a \
1400          x$MAN2HTML != x)
1401
1402 #### Have to go $localstatedir->$prefix/var->/usr/local/var
1403
1404 #### find the actual value for $prefix that we'll end up with
1405 ##   (I know this is broken and should be done in the Makefile, but
1406 ##    that's a major pain and almost nobody actually seems to care)
1407 AS_AC_EXPAND(EXPANDED_PREFIX, "$prefix")
1408 AS_AC_EXPAND(EXPANDED_LOCALSTATEDIR, "$localstatedir")
1409 AS_AC_EXPAND(EXPANDED_SYSCONFDIR, "$sysconfdir")
1410 AS_AC_EXPAND(EXPANDED_BINDIR, "$bindir")
1411 AS_AC_EXPAND(EXPANDED_LIBDIR, "$libdir")
1412 AS_AC_EXPAND(EXPANDED_LIBEXECDIR, "$libexecdir")
1413 AS_AC_EXPAND(EXPANDED_DATADIR, "$datadir")
1414
1415 #### Check our operating system
1416 operating_system=unknown
1417 if test -f /etc/redhat-release || test -f $EXPANDED_SYSCONFDIR/redhat-release ; then
1418    operating_system=redhat
1419 fi
1420
1421 if test -f /etc/slackware-version || test -f $EXPANDED_SYSCONFDIR/slackware-version ; then
1422    operating_system=slackware
1423 fi
1424
1425 if test -f /usr/bin/cygwin1.dll || test -f $EXPANDED_BINDIR/cygwin1.dll ; then
1426    operating_system=cygwin
1427 fi
1428
1429 #### Sort out init scripts
1430
1431 if test x$with_init_scripts = x; then
1432     case x$operating_system in
1433         xredhat)        with_init_scripts=redhat ;;
1434         xslackware)     with_init_scripts=slackware ;;
1435         xcygwin)        with_init_scripts=cygwin ;;
1436         *)                      with_init_scripts=none ;;
1437     esac
1438 fi
1439
1440 AM_CONDITIONAL(DBUS_INIT_SCRIPTS_RED_HAT, test x$with_init_scripts = xredhat)
1441 AM_CONDITIONAL(DBUS_INIT_SCRIPTS_SLACKWARE, test x$with_init_scripts = xslackware)
1442 AM_CONDITIONAL(DBUS_INIT_SCRIPTS_CYGWIN, test x$with_init_scripts = xcygwin)
1443
1444 ##### systemd unit files
1445 AC_ARG_WITH([systemdsystemunitdir],
1446 AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files]),
1447     [],
1448     [
1449     PKG_CHECK_EXISTS([systemd],
1450       [with_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)],
1451       [with_systemdsystemunitdir=no])
1452     ])
1453 if test "x$with_systemdsystemunitdir" != xno; then
1454    AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])
1455 fi
1456 AM_CONDITIONAL(HAVE_SYSTEMD, [test -n "$with_systemdsystemunitdir" -a "x$with_systemdsystemunitdir" != xno ])
1457
1458 ##### Set up location for system bus socket
1459 if ! test -z "$with_system_socket"; then
1460    DBUS_SYSTEM_SOCKET=$with_system_socket
1461 else
1462    DBUS_SYSTEM_SOCKET=${EXPANDED_LOCALSTATEDIR}/run/dbus/system_bus_socket
1463 fi
1464
1465 AC_SUBST(DBUS_SYSTEM_SOCKET)
1466 AC_DEFINE_UNQUOTED(DBUS_SYSTEM_SOCKET,"$DBUS_SYSTEM_SOCKET",[The name of the socket the system bus listens on by default])
1467
1468 ## system bus only listens on local domain sockets, and never
1469 ## on an abstract socket (so only root can create the socket)
1470 DBUS_SYSTEM_BUS_DEFAULT_ADDRESS="unix:path=$DBUS_SYSTEM_SOCKET"
1471 AC_SUBST(DBUS_SYSTEM_BUS_DEFAULT_ADDRESS)
1472 AC_DEFINE_UNQUOTED(DBUS_SYSTEM_BUS_DEFAULT_ADDRESS, "$DBUS_SYSTEM_BUS_DEFAULT_ADDRESS",[The default D-Bus address of the system bus])
1473
1474 #### Set up the pid file
1475 if ! test -z "$with_system_pid_file"; then
1476    DBUS_SYSTEM_PID_FILE=$with_system_pid_file
1477 elif test x$with_init_scripts = xredhat ; then
1478    DBUS_SYSTEM_PID_FILE=${EXPANDED_LOCALSTATEDIR}/run/messagebus.pid
1479 else
1480    DBUS_SYSTEM_PID_FILE=${EXPANDED_LOCALSTATEDIR}/run/dbus/pid
1481 fi
1482
1483 AC_SUBST(DBUS_SYSTEM_PID_FILE)
1484
1485 #### Directory to check for console ownership
1486 if ! test -z "$with_console_auth_dir"; then
1487    DBUS_CONSOLE_AUTH_DIR=$with_console_auth_dir
1488 else
1489    DBUS_CONSOLE_AUTH_DIR=/var/run/console/
1490 fi
1491
1492 AC_SUBST(DBUS_CONSOLE_AUTH_DIR)
1493 AC_DEFINE_UNQUOTED(DBUS_CONSOLE_AUTH_DIR, "$DBUS_CONSOLE_AUTH_DIR", [Directory to check for console ownerhip])
1494
1495 #### File to check for console ownership
1496 if test x$have_console_owner_file = xyes; then
1497    if ! test -z "$with_console_owner_file"; then
1498       DBUS_CONSOLE_OWNER_FILE=$with_console_owner_file
1499    else
1500       DBUS_CONSOLE_OWNER_FILE=/dev/console
1501    fi
1502 else
1503   DBUS_CONSOLE_OWNER_FILE=
1504 fi
1505
1506 AC_SUBST(DBUS_CONSOLE_OWNER_FILE)
1507 AC_DEFINE_UNQUOTED(DBUS_CONSOLE_OWNER_FILE, "$DBUS_CONSOLE_OWNER_FILE", [File to check for console ownerhip])
1508
1509 #### User to start the system bus as
1510 if test -z "$with_dbus_user" ; then
1511     DBUS_USER=messagebus
1512 else
1513     DBUS_USER=$with_dbus_user
1514 fi
1515 AC_SUBST(DBUS_USER)
1516 AC_DEFINE_UNQUOTED(DBUS_USER,"$DBUS_USER", [User for running the system BUS daemon])
1517
1518 #### Prefix to install into
1519 DBUS_PREFIX=$EXPANDED_PREFIX
1520 AC_SUBST(DBUS_PREFIX)
1521 AC_DEFINE_UNQUOTED(DBUS_PREFIX,"$DBUS_PREFIX", [Prefix for installing DBUS])
1522
1523 #### Direcotry to install data files into
1524 DBUS_DATADIR=$EXPANDED_DATADIR
1525 AC_SUBST(DBUS_DATADIR)
1526 AC_DEFINE_UNQUOTED(DBUS_DATADIR,"$DBUS_DATADIR", [Directory for installing DBUS data files])
1527
1528 #### Directory to install dbus-daemon
1529 if test -z "$with_dbus_daemondir" ; then
1530     DBUS_DAEMONDIR=$EXPANDED_BINDIR
1531 else
1532     DBUS_DAEMONDIR=$with_dbus_daemondir
1533 fi
1534 AC_SUBST(DBUS_DAEMONDIR)
1535 AC_DEFINE_UNQUOTED(DBUS_DAEMONDIR,"$DBUS_DAEMONDIR", [Directory for installing the DBUS daemon])
1536
1537 #### Directory to install the other binaries
1538 DBUS_BINDIR="$EXPANDED_BINDIR"
1539 AC_SUBST(DBUS_BINDIR)
1540 AC_DEFINE_UNQUOTED(DBUS_BINDIR,"$DBUS_BINDIR", [Directory for installing the binaries])
1541
1542 #### Directory to install the libexec binaries
1543 DBUS_LIBEXECDIR="$EXPANDED_LIBEXECDIR"
1544 AC_SUBST(DBUS_LIBEXECDIR)
1545 AC_DEFINE_UNQUOTED(DBUS_LIBEXECDIR,"$DBUS_LIBEXECDIR", [Directory for installing the libexec binaries])
1546
1547 #### Tell tests where to find certain stuff in builddir
1548
1549 DBUS_PWD=`pwd`
1550 # Useful in a cross-compilation environment, where the tests are run on the host system.
1551 AC_ARG_WITH(dbus-test-dir, AS_HELP_STRING([--with-dbus-test-dir=[dirname]],[path where the tests tools are available]),
1552                            DBUS_PWD=$withval)
1553
1554 DBUS_TEST_EXEC="$DBUS_PWD/test"
1555 DBUS_TEST_DATA="$DBUS_PWD/test/data"
1556
1557 AC_SUBST([DBUS_TEST_DATA])
1558 AC_SUBST([DBUS_TEST_EXEC])
1559
1560 AC_DEFINE_UNQUOTED([DBUS_TEST_EXEC], ["$DBUS_TEST_EXEC"],
1561                    [Full path to the daemon in the builddir])
1562 AC_DEFINE_UNQUOTED([DBUS_EXEEXT], ["$EXEEXT"],
1563                    [Extension for executables, typically empty or .exe])
1564
1565 AC_DEFINE_UNQUOTED(TEST_BUS_BINARY, ["$DBUS_PWD/bus/dbus-daemon$EXEEXT"],
1566                    [Full path to the daemon in the builddir])
1567 AC_SUBST(TEST_BUS_BINARY)
1568
1569 ## Export the non-setuid external helper
1570 TEST_LAUNCH_HELPER_BINARY="$DBUS_PWD/bus/dbus-daemon-launch-helper-test$EXEEXT"
1571 AC_SUBST(TEST_LAUNCH_HELPER_BINARY)
1572 AC_DEFINE_UNQUOTED(DBUS_TEST_LAUNCH_HELPER_BINARY, "$TEST_LAUNCH_HELPER_BINARY",
1573                    [Full path to the launch helper test program in the builddir])
1574
1575 #### Find socket directories
1576 if ! test -z "$TMPDIR" ; then
1577    DEFAULT_SOCKET_DIR=$TMPDIR
1578 elif ! test -z "$TEMP" ; then
1579    DEFAULT_SOCKET_DIR=$TEMP
1580 elif ! test -z "$TMP" ; then
1581    DEFAULT_SOCKET_DIR=$TMP
1582 else
1583    DEFAULT_SOCKET_DIR=/tmp
1584 fi
1585
1586 DEFAULT_SOCKET_DIR=`echo $DEFAULT_SOCKET_DIR | sed 's/+/%2B/g'`
1587
1588 if ! test -z "$with_test_socket_dir" ; then
1589    TEST_SOCKET_DIR="$with_test_socket_dir"
1590 else
1591    TEST_SOCKET_DIR=$DEFAULT_SOCKET_DIR
1592 fi
1593 AC_SUBST(TEST_SOCKET_DIR)
1594 AC_DEFINE_UNQUOTED(DBUS_TEST_SOCKET_DIR, "$TEST_SOCKET_DIR", [Where to put test sockets])
1595
1596 if test "x$dbus_unix" = xyes; then
1597   TEST_LISTEN="unix:tmpdir=$TEST_SOCKET_DIR"
1598 else
1599   TEST_LISTEN="tcp:host=localhost"
1600 fi
1601 AC_SUBST([TEST_LISTEN])
1602 AC_DEFINE_UNQUOTED([TEST_LISTEN], ["$TEST_LISTEN"],
1603   [Listening address for regression tests])
1604
1605 if ! test -z "$with_session_socket_dir" ; then
1606    DBUS_SESSION_SOCKET_DIR="$with_session_socket_dir"
1607 else
1608    DBUS_SESSION_SOCKET_DIR=$DEFAULT_SOCKET_DIR
1609 fi
1610 AC_DEFINE_UNQUOTED(DBUS_SESSION_SOCKET_DIR, "$DBUS_SESSION_SOCKET_DIR", [Where per-session bus puts its sockets])
1611 AC_SUBST(DBUS_SESSION_SOCKET_DIR)
1612
1613 if test x$dbus_win = xyes; then
1614         DBUS_SESSION_BUS_DEFAULT_ADDRESS="$with_dbus_session_bus_default_address"
1615 elif test x$have_launchd = xyes; then
1616         DBUS_SESSION_BUS_DEFAULT_ADDRESS="launchd:env=DBUS_LAUNCHD_SESSION_BUS_SOCKET"
1617 else
1618         DBUS_SESSION_BUS_DEFAULT_ADDRESS="unix:tmpdir=$DBUS_SESSION_SOCKET_DIR"
1619 fi
1620 AC_SUBST(DBUS_SESSION_BUS_DEFAULT_ADDRESS)
1621
1622 # darwin needs this to initialize the environment
1623 AC_CHECK_HEADERS(crt_externs.h)
1624 AC_CHECK_FUNC(_NSGetEnviron, [AC_DEFINE(HAVE_NSGETENVIRON, 1, [Define if your system needs _NSGetEnviron to set up the environment])])
1625 AH_VERBATIM(_DARWIN_ENVIRON,
1626 [
1627 #if defined(HAVE_NSGETENVIRON) && defined(HAVE_CRT_EXTERNS_H)
1628 # include <sys/time.h>
1629 # include <crt_externs.h>
1630 # define environ (*_NSGetEnviron())
1631 #endif
1632 ])
1633
1634 AC_ARG_ENABLE([stats],
1635   [AS_HELP_STRING([--enable-stats],
1636     [enable bus daemon usage statistics])],
1637   [], [enable_stats=no])
1638 if test "x$enable_stats" = xyes; then
1639   AC_DEFINE([DBUS_ENABLE_STATS], [1],
1640     [Define to enable bus daemon usage statistics])
1641 fi
1642
1643 AC_CONFIG_FILES([
1644 Doxyfile
1645 dbus/versioninfo.rc
1646 dbus/dbus-arch-deps.h
1647 bus/system.conf
1648 bus/session.conf
1649 bus/messagebus
1650 bus/messagebus-config
1651 bus/org.freedesktop.dbus-session.plist
1652 bus/rc.messagebus
1653 bus/dbus.service
1654 bus/dbus.socket
1655 Makefile
1656 dbus/Makefile
1657 bus/Makefile
1658 tools/Makefile
1659 test/Makefile
1660 test/name-test/Makefile
1661 doc/Makefile
1662 doc/dbus-daemon.1
1663 dbus-1.pc
1664 dbus-1-uninstalled.pc
1665 test/data/valid-config-files/debug-allow-all.conf
1666 test/data/valid-config-files/debug-allow-all-sha1.conf
1667 test/data/valid-config-files-system/debug-allow-all-pass.conf
1668 test/data/valid-config-files-system/debug-allow-all-fail.conf
1669 test/data/valid-service-files/org.freedesktop.DBus.TestSuite.PrivServer.service
1670 test/data/valid-service-files/org.freedesktop.DBus.TestSuiteEchoService.service
1671 test/data/valid-service-files/org.freedesktop.DBus.TestSuiteForkingEchoService.service
1672 test/data/valid-service-files/org.freedesktop.DBus.TestSuiteSegfaultService.service
1673 test/data/valid-service-files/org.freedesktop.DBus.TestSuiteShellEchoServiceSuccess.service
1674 test/data/valid-service-files/org.freedesktop.DBus.TestSuiteShellEchoServiceFail.service
1675 test/data/valid-service-files-system/org.freedesktop.DBus.TestSuiteEchoService.service
1676 test/data/valid-service-files-system/org.freedesktop.DBus.TestSuiteSegfaultService.service
1677 test/data/valid-service-files-system/org.freedesktop.DBus.TestSuiteShellEchoServiceSuccess.service
1678 test/data/valid-service-files-system/org.freedesktop.DBus.TestSuiteShellEchoServiceFail.service
1679 test/data/invalid-service-files-system/org.freedesktop.DBus.TestSuiteNoExec.service
1680 test/data/invalid-service-files-system/org.freedesktop.DBus.TestSuiteNoUser.service
1681 test/data/invalid-service-files-system/org.freedesktop.DBus.TestSuiteNoService.service
1682 ])
1683 AC_OUTPUT
1684
1685 dnl ==========================================================================
1686 echo "
1687                     D-Bus $VERSION
1688                   ==============
1689
1690         prefix:                   ${EXPANDED_PREFIX}
1691         exec_prefix:              ${exec_prefix}
1692         libdir:                   ${EXPANDED_LIBDIR}
1693         libexecdir:               ${EXPANDED_LIBEXECDIR}
1694         bindir:                   ${EXPANDED_BINDIR}
1695         sysconfdir:               ${EXPANDED_SYSCONFDIR}
1696         localstatedir:            ${EXPANDED_LOCALSTATEDIR}
1697         datadir:                  ${EXPANDED_DATADIR}
1698         source code location:     ${srcdir}
1699         compiler:                 ${CC}
1700         cflags:                   ${CFLAGS}
1701         cppflags:                 ${CPPFLAGS}
1702         cxxflags:                 ${CXXFLAGS}
1703         64-bit int:               ${DBUS_INT64_TYPE}
1704         32-bit int:               ${DBUS_INT32_TYPE}
1705         16-bit int:               ${DBUS_INT16_TYPE}
1706         Doxygen:                  ${DOXYGEN:-not found}
1707         xmlto:                    ${XMLTO:-not found}
1708         man2html:                 ${MAN2HTML:-not found}"
1709
1710 echo "
1711         Maintainer mode:          ${USE_MAINTAINER_MODE}
1712         gcc coverage profiling:   ${enable_compiler_coverage}
1713         Building embedded tests:  ${enable_embedded_tests}
1714         Building modular tests:   ${enable_modular_tests}
1715         Building verbose mode:    ${enable_verbose_mode}
1716         Building assertions:      ${enable_asserts}
1717         Building checks:          ${enable_checks}
1718         Building bus stats API:   ${enable_stats}
1719         Building SELinux support: ${have_selinux}
1720         Building inotify support: ${have_inotify}
1721         Building dnotify support: ${have_dnotify}
1722         Building kqueue support:  ${have_kqueue}
1723         Building X11 code:        ${enable_x11}
1724         Building Doxygen docs:    ${enable_doxygen_docs}
1725         Building XML docs:        ${enable_xml_docs}
1726         Building cache support:   ${enable_userdb_cache}
1727         Building launchd support: ${have_launchd}
1728         Using XML parser:         ${with_xml}
1729         Init scripts style:       ${with_init_scripts}
1730         Abstract socket names:    ${ac_cv_have_abstract_sockets}
1731         System bus socket:        ${DBUS_SYSTEM_SOCKET}
1732         System bus address:       ${DBUS_SYSTEM_BUS_DEFAULT_ADDRESS}
1733         System bus PID file:      ${DBUS_SYSTEM_PID_FILE}
1734         Session bus address:      ${DBUS_SESSION_BUS_DEFAULT_ADDRESS}
1735         Console auth dir:         ${DBUS_CONSOLE_AUTH_DIR}
1736         Console owner file:       ${have_console_owner_file}
1737         Console owner file path:  ${DBUS_CONSOLE_OWNER_FILE}
1738         System bus user:          ${DBUS_USER}
1739         Session bus services dir: ${EXPANDED_DATADIR}/dbus-1/services
1740         'make check' socket dir:  ${TEST_SOCKET_DIR}
1741 "
1742 if test x$have_launchd = xyes; then
1743         echo "        launchd agent dir:        ${LAUNCHD_AGENT_DIR}"
1744 fi
1745 echo
1746
1747 if test x$enable_embedded_tests = xyes; then
1748         echo "NOTE: building with unit tests increases the size of the installed library and renders it insecure."
1749 fi
1750 if test x$enable_embedded_tests = xyes -a x$enable_asserts = xno; then
1751         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)"
1752 fi
1753 if test x$enable_compiler_coverage = xyes; then
1754         echo "NOTE: building with coverage profiling is definitely for developers only."
1755 fi
1756 if test x$enable_verbose_mode = xyes; then
1757         echo "NOTE: building with verbose mode increases library size, may slightly increase security risk, and decreases performance."
1758 fi
1759 if test x$enable_asserts = xyes; then
1760         echo "NOTE: building with assertions increases library size and decreases performance."
1761 fi
1762 if test x$enable_checks = xno; then
1763         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."
1764 fi
1765 if test x$dbus_use_libxml = xtrue; then
1766         echo
1767         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)."
1768 fi
1769
1770 if test "x$DBUS_HAVE_INT64" = x0; then
1771   AC_MSG_WARN([You have disabled 64-bit integers via --without-64-bit.
1772
1773   This removes parts of the standard D-Bus API and ABI (the 't' and 'x'
1774   typecodes, the dbus_int64_t and dbus_uint64_t types, etc.) and should only be
1775   used if your compiler lacks support for 64-bit integers. Please report a bug
1776   with details of your platform and compiler.
1777
1778   This option is likely to be removed in future, unless the D-Bus developers
1779   receive reports that it is still needed.
1780   ])
1781 fi