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