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