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