(linenum→info "unix/slp.c:2238")

dbus/1.0.2/configure.in

    1: dnl -*- mode: m4 -*-
    2: AC_PREREQ(2.52)
    3: 
    4: AC_INIT(dbus/dbus.h)
    5: 
    6: AC_CANONICAL_TARGET
    7: 
    8: AM_INIT_AUTOMAKE(dbus, 1.0.2)
    9: 
   10: AM_CONFIG_HEADER(config.h)
   11: 
   12: # Honor aclocal flags
   13: ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
   14: 
   15: GETTEXT_PACKAGE=dbus-1
   16: AC_SUBST(GETTEXT_PACKAGE)
   17: AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[The name of the gettext domain])
   18: 
   19:  ## must come before we use the $USE_MAINTAINER_MODE variable later
   20: AM_MAINTAINER_MODE
   21: 
   22: # libtool versioning - this applies to libdbus
   23: #
   24: # See http://sources.redhat.com/autobook/autobook/autobook_91.html#SEC91 for details
   25: #
   26: 
   27: ## increment if the interface has additions, changes, removals.
   28: LT_CURRENT=5
   29: 
   30: ## increment any time the source changes; set to
   31: ##  0 if you increment CURRENT
   32: LT_REVISION=0
   33: 
   34: ## increment if any interfaces have been added; set to 0
   35: ## if any interfaces have been changed or removed. removal has
   36: ## precedence over adding, so set to 0 if both happened.
   37: LT_AGE=2
   38: 
   39: AC_SUBST(LT_CURRENT)
   40: AC_SUBST(LT_REVISION)
   41: AC_SUBST(LT_AGE)
   42: 
   43: 
   44: AC_PROG_CC
   45: AC_PROG_CXX
   46: AC_ISC_POSIX
   47: AC_HEADER_STDC
   48: 
   49: AC_ARG_ENABLE(tests, AS_HELP_STRING([--enable-tests],[enable unit test code]),enable_tests=$enableval,enable_tests=$USE_MAINTAINER_MODE)
   50: AC_ARG_ENABLE(ansi, AS_HELP_STRING([--enable-ansi],[enable -ansi -pedantic gcc flags]),enable_ansi=$enableval,enable_ansi=no)
   51: 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)
   52: AC_ARG_ENABLE(asserts, AS_HELP_STRING([--enable-asserts],[include assertion checks]),enable_asserts=$enableval,enable_asserts=$USE_MAINTAINER_MODE)
   53: AC_ARG_ENABLE(checks, AS_HELP_STRING([--enable-checks],[include sanity checks on public API]),enable_checks=$enableval,enable_checks=yes)
   54: AC_ARG_ENABLE(xml-docs, AS_HELP_STRING([--enable-xml-docs],[build XML documentation (requires xmlto)]),enable_xml_docs=$enableval,enable_xml_docs=auto)
   55: AC_ARG_ENABLE(doxygen-docs, AS_HELP_STRING([--enable-doxygen-docs],[build DOXYGEN documentation (requires Doxygen)]),enable_doxygen_docs=$enableval,enable_doxygen_docs=auto)
   56: AC_ARG_ENABLE(gcov, AS_HELP_STRING([--enable-gcov],[compile with coverage profiling instrumentation (gcc only)]),enable_gcov=$enableval,enable_gcov=no)
   57: 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)
   58: AC_ARG_ENABLE(selinux, AS_HELP_STRING([--enable-selinux],[build with SELinux support]),enable_selinux=$enableval,enable_selinux=auto)
   59: AC_ARG_ENABLE(dnotify, AS_HELP_STRING([--enable-dnotify],[build with dnotify support (linux only)]),enable_dnotify=$enableval,enable_dnotify=auto)
   60: AC_ARG_ENABLE(kqueue, AS_HELP_STRING([--enable-kqueue],[build with kqueue support]),enable_kqueue=$enableval,enable_kqueue=auto)
   61: 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)
   62: 
   63: AC_ARG_WITH(xml, AS_HELP_STRING([--with-xml=[libxml/expat]],[XML library to use]))
   64: AC_ARG_WITH(init-scripts, AS_HELP_STRING([--with-init-scripts=[redhat]],[Style of init scripts to install]))
   65: 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]))
   66: AC_ARG_WITH(test-socket-dir, AS_HELP_STRING([--with-test-socket-dir=[dirname]],[Where to put sockets for make check]))
   67: AC_ARG_WITH(system-pid-file, AS_HELP_STRING([--with-system-pid-file=[pidfile]],[PID file for systemwide daemon]))
   68: AC_ARG_WITH(system-socket, AS_HELP_STRING([--with-system-socket=[filename]],[UNIX domain socket for systemwide daemon]))
   69: AC_ARG_WITH(console-auth-dir, AS_HELP_STRING([--with-console-auth-dir=[dirname]],[directory to check for console ownerhip]))
   70: AC_ARG_WITH(console-owner-file, AS_HELP_STRING([--with-console-owner-file=[filename]],[file whose owner determines current console owner]))
   71: AC_ARG_WITH(dbus_user, AS_HELP_STRING([--with-dbus-user=<user>],[User for running the DBUS daemon (messagebus)]))
   72: AC_ARG_WITH(dbus_daemondir, AS_HELP_STRING([--with-dbus-daemondir=[dirname]],[Directory for installing the DBUS daemon]))
   73: 
   74: 
   75: dnl DBUS_BUILD_TESTS controls unit tests built in to .c files 
   76: dnl and also some stuff in the test/ subdir
   77: AM_CONDITIONAL(DBUS_BUILD_TESTS, test x$enable_tests = xyes)
   78: if test x$enable_tests = xyes; then
   79:     AC_DEFINE(DBUS_BUILD_TESTS,1,[Build test code])
   80: fi
   81: 
   82: if test x$enable_verbose_mode = xyes; then
   83:     AC_DEFINE(DBUS_ENABLE_VERBOSE_MODE,1,[Support a verbose mode])
   84: fi
   85: 
   86: if test x$enable_asserts = xno; then
   87:     AC_DEFINE(DBUS_DISABLE_ASSERT,1,[Disable assertion checking])
   88:     AC_DEFINE(G_DISABLE_ASSERT,1,[Disable GLib assertion macros])
   89:     R_DYNAMIC_LDFLAG=""
   90: else
   91:     # -rdynamic is needed for glibc's backtrace_symbols to work.
   92:     # No clue how much overhead this adds, but it's useful 
   93:     # to do this on any assertion failure,
   94:     # so for now it's enabled anytime asserts are (currently not
   95:     # in production builds).
   96: 
   97:     # To get -rdynamic you pass -export-dynamic to libtool.
   98:     AC_DEFINE(DBUS_BUILT_R_DYNAMIC,1,[whether -export-dynamic was passed to libtool])
   99:     R_DYNAMIC_LDFLAG=-export-dynamic
  100: fi
  101: AC_SUBST(R_DYNAMIC_LDFLAG)
  102: 
  103: if test x$enable_checks = xno; then
  104:     AC_DEFINE(DBUS_DISABLE_CHECKS,1,[Disable public API sanity checking])
  105:     AC_DEFINE(G_DISABLE_CHECKS,1,[Disable GLib public API sanity checking])
  106: fi
  107: 
  108: #### gcc warning flags
  109: 
  110: cc_supports_flag() {
  111:   AC_MSG_CHECKING(whether $CC supports "$@")
  112:   Cfile=/tmp/foo${$}
  113:   touch ${Cfile}.c
  114:   $CC -c "$@" ${Cfile}.c -o ${Cfile}.o >/dev/null 2>&1
  115:   rc=$?
  116:   rm -f ${Cfile}.c ${Cfile}.o
  117:   case $rc in
  118:     0) AC_MSG_RESULT(yes);;
  119:     *) AC_MSG_RESULT(no);;
  120:   esac
  121:   return $rc
  122: }
  123: 
  124: if test "x$GCC" = "xyes"; then
  125:   changequote(,)dnl
  126:   case " $CFLAGS " in
  127:   *[\ \ ]-Wall[\ \      ]*) ;;
  128:   *) CFLAGS="$CFLAGS -Wall" ;;
  129:   esac
  130: 
  131:   case " $CFLAGS " in
  132:   *[\ \ ]-Wchar-subscripts[\ \  ]*) ;;
  133:   *) CFLAGS="$CFLAGS -Wchar-subscripts" ;;
  134:   esac
  135: 
  136:   case " $CFLAGS " in
  137:   *[\ \ ]-Wmissing-declarations[\ \     ]*) ;;
  138:   *) CFLAGS="$CFLAGS -Wmissing-declarations" ;;
  139:   esac
  140: 
  141:   case " $CFLAGS " in
  142:   *[\ \ ]-Wmissing-prototypes[\ \       ]*) ;;
  143:   *) CFLAGS="$CFLAGS -Wmissing-prototypes" ;;
  144:   esac
  145: 
  146:   case " $CFLAGS " in
  147:   *[\ \ ]-Wnested-externs[\ \   ]*) ;;
  148:   *) CFLAGS="$CFLAGS -Wnested-externs" ;;
  149:   esac
  150: 
  151:   case " $CFLAGS " in
  152:   *[\ \ ]-Wpointer-arith[\ \    ]*) ;;
  153:   *) CFLAGS="$CFLAGS -Wpointer-arith" ;;
  154:   esac
  155: 
  156:   case " $CFLAGS " in
  157:   *[\ \ ]-Wcast-align[\ \       ]*) ;;
  158:   *) CFLAGS="$CFLAGS -Wcast-align" ;;
  159:   esac
  160: 
  161:   case " $CFLAGS " in
  162:   *[\ \ ]-Wfloat-equal[\ \      ]*) ;;
  163:   *) if cc_supports_flag -Wfloat-equals; then
  164:         CFLAGS="$CFLAGS -Wfloat-equal" 
  165:      fi
  166:      ;;
  167:   esac
  168: 
  169:   case " $CFLAGS " in
  170:   *[\ \ ]-Wsign-compare[\ \     ]*) ;;
  171:   *) CFLAGS="$CFLAGS -Wsign-compare" ;;
  172:   esac
  173: 
  174:   case " $CFLAGS " in
  175:   *[\ \ ]-Wdeclaration-after-statement[\ \      ]*) ;;
  176:   *) if cc_supports_flag -Wdeclaration-after-statement; then
  177:         CFLAGS="$CFLAGS -Wdeclaration-after-statement"
  178:      fi
  179:      ;;
  180:   esac
  181: 
  182:   case " $CFLAGS " in
  183:   *[\ \ ]-fno-common[\ \        ]*) ;;
  184:   *) if cc_supports_flag -fno-common; then
  185:         CFLAGS="$CFLAGS -fno-common"
  186:      fi
  187:      ;;
  188:   esac
  189: 
  190:   case " $CFLAGS " in
  191:   *[\ \ ]-fPIC[\ \      ]*) ;;
  192:   *) if cc_supports_flag -fPIC; then
  193:         CFLAGS="$CFLAGS -fPIC"
  194:      fi
  195:      ;;
  196:   esac
  197: 
  198:   if test "x$enable_ansi" = "xyes"; then
  199:     case " $CFLAGS " in
  200:     *[\ \       ]-ansi[\ \    ]*) ;;
  201:     *) CFLAGS="$CFLAGS -ansi" ;;
  202:     esac
  203: 
  204:     case " $CFLAGS " in
  205:     *[\ \       ]-D_POSIX_C_SOURCE*) ;;
  206:     *) CFLAGS="$CFLAGS -D_POSIX_C_SOURCE=199309L" ;;
  207:     esac
  208: 
  209:     case " $CFLAGS " in
  210:     *[\ \       ]-D_BSD_SOURCE[\ \    ]*) ;;
  211:     *) CFLAGS="$CFLAGS -D_BSD_SOURCE" ;;
  212:     esac
  213: 
  214:     case " $CFLAGS " in
  215:     *[\ \       ]-pedantic[\ \        ]*) ;;
  216:     *) CFLAGS="$CFLAGS -pedantic" ;;
  217:     esac
  218:   fi
  219:   if test x$enable_gcov = xyes; then
  220:     case " $CFLAGS " in
  221:     *[\ \       ]-fprofile-arcs[\ \   ]*) ;;
  222:     *) CFLAGS="$CFLAGS -fprofile-arcs" ;;
  223:     esac
  224:     case " $CFLAGS " in
  225:     *[\ \       ]-ftest-coverage[\ \  ]*) ;;
  226:     *) CFLAGS="$CFLAGS -ftest-coverage" ;;
  227:     esac
  228: 
  229:     ## remove optimization
  230:     CFLAGS=`echo "$CFLAGS" | sed -e 's/-O[0-9]*//g'`
  231:   fi
  232:   changequote([,])dnl
  233: else
  234:   if test x$enable_gcov = xyes; then
  235:     AC_MSG_ERROR([--enable-gcov can only be used with gcc])
  236:   fi
  237: fi
  238: 
  239: # Add -D_POSIX_PTHREAD_SEMANTICS if on Solaris
  240: #
  241: case $target_os in
  242:     solaris*)
  243:        CFLAGS="$CFLAGS -D_POSIX_PTHREAD_SEMANTICS" ;;
  244: esac
  245:     
  246: AM_PROG_LIBTOOL
  247: 
  248: changequote(,)dnl
  249: # compress spaces in flags
  250: CFLAGS=`echo "$CFLAGS" | sed -e 's/ +/ /g'`
  251: CXXFLAGS=`echo "$CXXFLAGS" | sed -e 's/ +/ /g'`
  252: CPPFLAGS=`echo "$CPPFLAGS" | sed -e 's/ +/ /g'`
  253: changequote([,])dnl
  254: 
  255: if test x$enable_gcov = xyes; then
  256:      ## so that config.h changes when you toggle gcov support
  257:      AC_DEFINE_UNQUOTED(DBUS_GCOV_ENABLED, 1, [Defined if gcov is enabled to force a rebuild due to config.h changing])
  258: 
  259:      AC_MSG_CHECKING([for gcc 3.3 version of gcov file format])
  260:      have_gcc33_gcov=no
  261:      AC_RUN_IFELSE( [AC_LANG_PROGRAM( , [[ if (__GNUC__ >=3 && __GNUC_MINOR__ >= 3) exit (0); else exit (1); ]])],  
  262:                    have_gcc33_gcov=yes)
  263:      if test x$have_gcc33_gcov = xyes ; then
  264:          AC_DEFINE_UNQUOTED(DBUS_HAVE_GCC33_GCOV, 1, [Defined if we have gcc 3.3 and thus the new gcov format])
  265:      fi
  266:      AC_MSG_RESULT($have_gcc33_gcov)
  267: fi
  268: AM_CONDITIONAL(DBUS_GCOV_ENABLED, test x$enable_gcov = xyes)
  269: 
  270: #### Integer sizes 
  271: 
  272: AC_CHECK_SIZEOF(char)
  273: AC_CHECK_SIZEOF(short)
  274: AC_CHECK_SIZEOF(long)
  275: AC_CHECK_SIZEOF(int)
  276: AC_CHECK_SIZEOF(void *)
  277: AC_CHECK_SIZEOF(long long)
  278: AC_CHECK_SIZEOF(__int64)
  279: 
  280: ### See what our 64 bit type is called
  281: AC_MSG_CHECKING([64-bit integer type])
  282: 
  283: case 8 in
  284: $ac_cv_sizeof_int)
  285:   dbusint64=int
  286:   dbusint64_constant='(val)'
  287:   dbusuint64_constant='(val)'
  288:   ;;
  289: $ac_cv_sizeof_long)
  290:   dbusint64=long
  291:   dbusint64_constant='(val##L)'
  292:   dbusuint64_constant='(val##UL)'
  293:   ;;
  294: $ac_cv_sizeof_long_long)
  295:   dbusint64='long long'
  296:   dbusint64_constant='(val##LL)'
  297:   dbusuint64_constant='(val##ULL)'
  298:   ;;
  299: $ac_cv_sizeof___int64)
  300:   dbusint64=__int64
  301:   dbusint64_constant='(val##i64)'
  302:   dbusuint64_constant='(val##ui64)'
  303:   ;;
  304: esac
  305: 
  306: if test -z "$dbusint64" ; then
  307:         DBUS_INT64_TYPE="no_int64_type_detected"
  308:         DBUS_HAVE_INT64=0
  309:         DBUS_INT64_CONSTANT=
  310:         DBUS_UINT64_CONSTANT=
  311:         AC_MSG_RESULT([none found])
  312: else
  313:         DBUS_INT64_TYPE="$dbusint64"
  314:         DBUS_HAVE_INT64=1
  315:         DBUS_INT64_CONSTANT="$dbusint64_constant"
  316:         DBUS_UINT64_CONSTANT="$dbusuint64_constant"
  317:         AC_MSG_RESULT($DBUS_INT64_TYPE)
  318: fi
  319: 
  320: AC_SUBST(DBUS_INT64_TYPE)
  321: AC_SUBST(DBUS_INT64_CONSTANT)
  322: AC_SUBST(DBUS_UINT64_CONSTANT)
  323: AC_SUBST(DBUS_HAVE_INT64)
  324: 
  325: ### see what 32-bit int is called
  326: AC_MSG_CHECKING([32-bit integer type])
  327: 
  328: case 4 in
  329: $ac_cv_sizeof_short)
  330:   dbusint32=int
  331:   ;;
  332: $ac_cv_sizeof_int)
  333:   dbusint32=int
  334:   ;;
  335: $ac_cv_sizeof_long)
  336:   dbusint32=long
  337:   ;;
  338: esac
  339: 
  340: if test -z "$dbusint32" ; then
  341:         DBUS_INT32_TYPE="no_int32_type_detected"
  342:         AC_MSG_ERROR([No 32-bit integer type found])
  343: else
  344:         DBUS_INT32_TYPE="$dbusint32"
  345:         AC_MSG_RESULT($DBUS_INT32_TYPE)
  346: fi
  347: 
  348: AC_SUBST(DBUS_INT32_TYPE)
  349: 
  350: ### see what 16-bit int is called
  351: AC_MSG_CHECKING([16-bit integer type])
  352: 
  353: case 2 in
  354: $ac_cv_sizeof_short)
  355:   dbusint16=short
  356:   ;;
  357: $ac_cv_sizeof_int)
  358:   dbusint16=int
  359:   ;;
  360: esac
  361: 
  362: if test -z "$dbusint16" ; then
  363:         DBUS_INT16_TYPE="no_int16_type_detected"
  364:         AC_MSG_ERROR([No 16-bit integer type found])
  365: else
  366:         DBUS_INT16_TYPE="$dbusint16"
  367:         AC_MSG_RESULT($DBUS_INT16_TYPE)
  368: fi
  369: 
  370: AC_SUBST(DBUS_INT16_TYPE)
  371: 
  372: ## byte order
  373: case $host_os in
  374:         darwin*)
  375:                 # check at compile-time, so that it is possible to build universal
  376:                 # (with multiple architectures at once on the compile line)
  377:                 AH_VERBATIM([WORDS_BIGENDIAN_DARWIN], [
  378:                         /* Use the compiler-provided endianness defines to allow universal compiling. */
  379:                         #if defined(__BIG_ENDIAN__)
  380:                         #define WORDS_BIGENDIAN 1
  381:                         #endif
  382:                 ])
  383:                 ;;
  384:         *)
  385:                 AC_C_BIGENDIAN
  386:                 ;;
  387: esac
  388: 
  389: dnl **********************************
  390: dnl *** va_copy checks (from GLib) ***
  391: dnl **********************************
  392: dnl we currently check for all three va_copy possibilities, so we get
  393: dnl all results in config.log for bug reports.
  394: AC_CACHE_CHECK([for an implementation of va_copy()],dbus_cv_va_copy,[
  395:         AC_LINK_IFELSE([#include <stdarg.h>
  396:         void f (int i, ...) {
  397:         va_list args1, args2;
  398:         va_start (args1, i);
  399:         va_copy (args2, args1);
  400:         if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
  401:           exit (1);
  402:         va_end (args1); va_end (args2);
  403:         }
  404:         int main() {
  405:           f (0, 42);
  406:           return 0;
  407:         }],
  408:         [dbus_cv_va_copy=yes],
  409:         [dbus_cv_va_copy=no])
  410: ])
  411: AC_CACHE_CHECK([for an implementation of __va_copy()],dbus_cv___va_copy,[
  412:         AC_LINK_IFELSE([#include <stdarg.h>
  413:         void f (int i, ...) {
  414:         va_list args1, args2;
  415:         va_start (args1, i);
  416:         __va_copy (args2, args1);
  417:         if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
  418:           exit (1);
  419:         va_end (args1); va_end (args2);
  420:         }
  421:         int main() {
  422:           f (0, 42);
  423:           return 0;
  424:         }],
  425:         [dbus_cv___va_copy=yes],
  426:         [dbus_cv___va_copy=no])
  427: ])
  428: 
  429: if test "x$dbus_cv_va_copy" = "xyes"; then
  430:   dbus_va_copy_func=va_copy
  431: else if test "x$dbus_cv___va_copy" = "xyes"; then
  432:   dbus_va_copy_func=__va_copy
  433: fi
  434: fi
  435: 
  436: if test -n "$dbus_va_copy_func"; then
  437:   AC_DEFINE_UNQUOTED(DBUS_VA_COPY,$dbus_va_copy_func,[A 'va_copy' style function])
  438: fi
  439: 
  440: AC_LANG_PUSH(C)
  441: AC_CACHE_CHECK([whether va_lists can be copied by value],
  442:         dbus_cv_va_val_copy,
  443:         [AC_RUN_IFELSE([AC_LANG_PROGRAM(
  444: [[
  445:         #include <stdarg.h>
  446: ]],
  447: [[
  448:         void f (int i, ...) {
  449:         va_list args1, args2;
  450:         va_start (args1, i);
  451:         args2 = args1;
  452:         if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
  453:           exit (1);
  454:         va_end (args1); va_end (args2);
  455:         }
  456:         int main() {
  457:           f (0, 42);
  458:           return 0;
  459:         }
  460: ]])],
  461:         [dbus_cv_va_val_copy=yes],
  462:         [dbus_cv_va_val_copy=no],
  463:         [dbus_cv_va_val_copy=yes])
  464: ])
  465: AC_LANG_POP(C)
  466: 
  467: if test "x$dbus_cv_va_val_copy" = "xno"; then
  468:   AC_DEFINE(DBUS_VA_COPY_AS_ARRAY,1, ['va_lists' cannot be copies as values])
  469: fi
  470: 
  471: 
  472: #### Atomic integers (checks by Sebastian Wilhelmi for GLib)
  473: AC_MSG_CHECKING([whether to use inline assembler routines for atomic integers])
  474: have_atomic_inc=no
  475: if test x"$GCC" = xyes; then
  476:   if test "x$enable_ansi" = "xyes"; then
  477:     AC_MSG_RESULT([no])
  478:   else
  479:     case $host_cpu in
  480:       i386)
  481:         AC_MSG_RESULT([no])
  482:         ;;
  483:       i?86)
  484:         case $host_os in
  485:           darwin*)
  486:             AC_MSG_RESULT([darwin])
  487:             # check at compile-time, so that it is possible to build universal
  488:             # (with multiple architectures at once on the compile line)
  489:             AH_VERBATIM([DBUS_USE_ATOMIC_INT_486_DARWIN], [
  490:               #if (defined(__i386__) || defined(__x86_64__))
  491:               # define DBUS_USE_ATOMIC_INT_486 1
  492:               #endif
  493:             ])
  494:             ;;
  495:           *)
  496:             AC_MSG_RESULT([i486])
  497:             AC_DEFINE_UNQUOTED(DBUS_USE_ATOMIC_INT_486, 1, [Use atomic integer implementation for 486])
  498:             ;;
  499:         esac
  500:         have_atomic_inc=yes
  501:         ;;
  502:       *)
  503:         AC_MSG_RESULT([no])
  504:         ;;
  505:     esac
  506:   fi
  507: fi
  508: if test x$have_atomic_inc = xyes ; then
  509:   case $host_os in
  510:     darwin*)
  511:       AH_VERBATIM([DBUS_HAVE_ATOMIC_INT_DARWIN], [
  512:         #if (defined(__i386__) || defined(__x86_64__))
  513:         # define DBUS_HAVE_ATOMIC_INT 1
  514:         #endif
  515:       ])
  516:       ;;
  517:     *)
  518:       AC_DEFINE_UNQUOTED(DBUS_HAVE_ATOMIC_INT, 1, [Some atomic integer implementation present])
  519:       ;;
  520:   esac
  521: fi
  522: 
  523: #### Various functions
  524: AC_CHECK_LIB(socket,socket)
  525: AC_CHECK_FUNC(gethostbyname,,[AC_CHECK_LIB(nsl,gethostbyname)])
  526: 
  527: AC_CHECK_FUNCS(vsnprintf vasprintf nanosleep usleep poll setenv unsetenv socketpair getgrouplist fpathconf)
  528: 
  529: AC_MSG_CHECKING(for dirfd)
  530: AC_TRY_LINK([
  531: #include <sys/types.h>
  532: #include <dirent.h>
  533: ],[
  534: DIR *dirp;
  535: dirp = opendir(".");
  536: dirfd(dirp);
  537: closedir(dirp);
  538: ], 
  539: dbus_have_dirfd=yes, dbus_have_dirfd=no)
  540: AC_MSG_RESULT($dbus_have_dirfd)
  541: if test "$dbus_have_dirfd" = yes; then
  542:         AC_DEFINE(HAVE_DIRFD,1,[Have dirfd function])
  543: else
  544:         AC_MSG_CHECKING(for DIR *dirp->dd_fd)    
  545:         AC_TRY_LINK([
  546: #include <sys/types.h>
  547: #include <dirent.h>
  548:         ],[
  549: DIR *dirp;
  550: int fd;
  551: dirp = opendir(".");
  552: fd = dirp->dd_fd;
  553: closedir(dirp);
  554:         ],
  555:         dbus_have_ddfd=yes, dbus_have_ddfd=no)
  556:         AC_MSG_RESULT($dbus_have_ddfd)
  557:         if test "$dbus_have_ddfd" = yes; then
  558:                 AC_DEFINE(HAVE_DDFD,1,[Have the ddfd member of DIR])
  559:         fi
  560: fi
  561: 
  562: AC_CHECK_HEADERS(execinfo.h, [AC_CHECK_FUNCS(backtrace)])
  563: 
  564: AC_CHECK_HEADERS(errno.h)
  565: 
  566: # checking for a posix version of getpwnam_r
  567: # if we are cross compiling and can not run the test
  568: # assume getpwnam_r is the posix version
  569: # it is up to the person cross compiling to change
  570: # this behavior if desired
  571: AC_LANG_PUSH(C)
  572: AC_CACHE_CHECK([for posix getpwnam_r],
  573:                 ac_cv_func_posix_getpwnam_r,
  574:                 [AC_RUN_IFELSE([AC_LANG_PROGRAM(
  575: [[
  576: #include <errno.h>
  577: #include <pwd.h>
  578: ]],
  579: [[
  580:     char buffer[10000];
  581:     struct passwd pwd, *pwptr = &pwd;
  582:     int error;
  583:     errno = 0;
  584:     error = getpwnam_r ("", &pwd, buffer, 
  585:                         sizeof (buffer), &pwptr);
  586:    return (error < 0 && errno == ENOSYS) 
  587:            || error == ENOSYS; 
  588: ]])],
  589:         [ac_cv_func_posix_getpwnam_r=yes],
  590:         [ac_cv_func_posix_getpwnam_r=no],
  591:         [ac_cv_func_posix_getpwnam_r=yes]
  592: )])
  593: AC_LANG_POP(C)
  594: 
  595: if test "$ac_cv_func_posix_getpwnam_r" = yes; then
  596:         AC_DEFINE(HAVE_POSIX_GETPWNAM_R,1,
  597:                 [Have POSIX function getpwnam_r])
  598: else
  599:         AC_CACHE_CHECK([for nonposix getpwnam_r],
  600:                 ac_cv_func_nonposix_getpwnam_r,
  601:                 [AC_TRY_LINK([#include <pwd.h>],
  602:                         [char buffer[10000];
  603:                         struct passwd pwd;
  604:                         getpwnam_r ("", &pwd, buffer, 
  605:                                         sizeof (buffer));],
  606:                         [ac_cv_func_nonposix_getpwnam_r=yes],
  607:                         [ac_cv_func_nonposix_getpwnam_r=no])])
  608:                 if test "$ac_cv_func_nonposix_getpwnam_r" = yes; then
  609:                 AC_DEFINE(HAVE_NONPOSIX_GETPWNAM_R,1,
  610:                         [Have non-POSIX function getpwnam_r])
  611:         fi
  612: fi
  613: 
  614: dnl check for socklen_t
  615: AC_MSG_CHECKING(whether socklen_t is defined)
  616: AC_TRY_COMPILE([
  617: #include <sys/types.h>
  618: #include <sys/socket.h>
  619: #include <netdb.h>
  620: ],[
  621: socklen_t foo;
  622: foo = 1;
  623: ],dbus_have_socklen_t=yes,dbus_have_socklen_t=no)
  624: AC_MSG_RESULT($dbus_have_socklen_t)
  625: 
  626: if test "x$dbus_have_socklen_t" = "xyes"; then
  627:     AC_DEFINE(HAVE_SOCKLEN_T,1,[Have socklen_t type])
  628: fi
  629: 
  630: dnl check for writev header and writev function so we're 
  631: dnl good to go if HAVE_WRITEV gets defined.
  632: AC_CHECK_HEADERS(sys/uio.h, [AC_CHECK_FUNCS(writev)])
  633: 
  634: dnl needed on darwin for NAME_MAX
  635: AC_CHECK_HEADERS(sys/syslimits.h)
  636: 
  637: dnl check for flavours of varargs macros (test from GLib)
  638: AC_MSG_CHECKING(for ISO C99 varargs macros in C)
  639: AC_TRY_COMPILE([],[
  640: int a(int p1, int p2, int p3);
  641: #define call_a(...) a(1,__VA_ARGS__)
  642: call_a(2,3);
  643: ],dbus_have_iso_c_varargs=yes,dbus_have_iso_c_varargs=no)
  644: AC_MSG_RESULT($dbus_have_iso_c_varargs)
  645: 
  646: AC_MSG_CHECKING(for GNUC varargs macros)
  647: AC_TRY_COMPILE([],[
  648: int a(int p1, int p2, int p3);
  649: #define call_a(params...) a(1,params)
  650: call_a(2,3);
  651: ],dbus_have_gnuc_varargs=yes,dbus_have_gnuc_varargs=no)
  652: AC_MSG_RESULT($dbus_have_gnuc_varargs)
  653: 
  654: dnl Output varargs tests
  655: if test x$dbus_have_iso_c_varargs = xyes; then
  656:     AC_DEFINE(HAVE_ISO_VARARGS,1,[Have ISO C99 varargs macros])
  657: fi
  658: if test x$dbus_have_gnuc_varargs = xyes; then
  659:     AC_DEFINE(HAVE_GNUC_VARARGS,1,[Have GNU-style varargs macros])
  660: fi
  661: 
  662: dnl Check for various credentials.
  663: AC_MSG_CHECKING(for struct cmsgcred)
  664: AC_TRY_COMPILE([
  665: #include <sys/types.h>
  666: #include <sys/socket.h>
  667: ],[
  668: struct cmsgcred cred;
  669: 
  670: cred.cmcred_pid = 0;
  671: ],dbus_have_struct_cmsgcred=yes,dbus_have_struct_cmsgcred=no)
  672: AC_MSG_RESULT($dbus_have_struct_cmsgcred)
  673: 
  674: if test x$dbus_have_struct_cmsgcred = xyes; then
  675:     AC_DEFINE(HAVE_CMSGCRED,1,[Have cmsgcred structure])
  676: fi
  677: 
  678: AC_CHECK_FUNCS(getpeerucred getpeereid)
  679: 
  680: #### Abstract sockets
  681: 
  682: AC_LANG_PUSH(C)
  683: AC_CACHE_CHECK([abstract socket namespace],
  684:                 ac_cv_have_abstract_sockets,
  685:                 [AC_RUN_IFELSE([AC_LANG_PROGRAM(
  686: [[
  687: #include <sys/types.h>
  688: #include <stdlib.h>
  689: #include <string.h>
  690: #include <stdio.h>
  691: #include <sys/socket.h>
  692: #include <sys/un.h>
  693: #include <errno.h>
  694: ]],
  695: [[
  696:   int listen_fd;
  697:   struct sockaddr_un addr;
  698:   
  699:   listen_fd = socket (PF_UNIX, SOCK_STREAM, 0);
  700:   
  701:   if (listen_fd < 0)
  702:     {
  703:       fprintf (stderr, "socket() failed: %s\n", strerror (errno));
  704:       exit (1);
  705:     }
  706: 
  707:   memset (&addr, '\0', sizeof (addr));
  708:   addr.sun_family = AF_UNIX;
  709:   strcpy (addr.sun_path, "X/tmp/dbus-fake-socket-path-used-in-configure-test");
  710:   addr.sun_path[0] = '\0'; /* this is what makes it abstract */
  711:   
  712:   if (bind (listen_fd, (struct sockaddr*) &addr, SUN_LEN (&addr)) < 0)
  713:     {
  714:        fprintf (stderr, "Abstract socket namespace bind() failed: %s\n", 
  715:                 strerror (errno));
  716:        exit (1);
  717:     }
  718:   else 
  719:     exit (0);
  720: ]])],
  721:               [ac_cv_have_abstract_sockets=yes],
  722:               [ac_cv_have_abstract_sockets=no]
  723: )])
  724: AC_LANG_POP(C)
  725: 
  726: if test x$enable_abstract_sockets = xyes; then
  727:     if test x$ac_cv_have_abstract_sockets = xno; then
  728:         AC_MSG_ERROR([Abstract sockets explicitly required, and support not detected.])
  729:     fi
  730: fi
  731: 
  732: if test x$enable_abstract_sockets = xno; then
  733:    ac_cv_have_abstract_sockets=no;
  734: fi
  735: 
  736: if test x$ac_cv_have_abstract_sockets = xyes ; then
  737:    DBUS_PATH_OR_ABSTRACT=abstract
  738:    AC_DEFINE(HAVE_ABSTRACT_SOCKETS,1,[Have abstract socket namespace])
  739: else
  740:    DBUS_PATH_OR_ABSTRACT=path
  741: fi
  742: 
  743: # this is used in addresses to prefer abstract, e.g. 
  744: # unix:path=/foo or unix:abstract=/foo 
  745: AC_SUBST(DBUS_PATH_OR_ABSTRACT)
  746: 
  747: #### Sort out XML library
  748: 
  749: # see what we have
  750: AC_CHECK_LIB(expat, XML_ParserCreate_MM,
  751:              [ AC_CHECK_HEADERS(expat.h, have_expat=true, have_expat=false) ],
  752:              have_expat=false)
  753: 
  754: PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.6.0, have_libxml=true, have_libxml=false)
  755: 
  756: # see what we want to use
  757: dbus_use_libxml=false
  758: dbus_use_expat=false
  759: if test x$with_xml = xexpat; then
  760:         dbus_use_expat=true
  761:         if ! $have_expat ; then
  762:            AC_MSG_ERROR([Explicitly requested expat but expat not found])
  763:         fi
  764: elif test x$with_xml = xlibxml; then
  765:         dbus_use_libxml=true
  766:         if ! $have_libxml ; then
  767:            AC_MSG_ERROR([Explicitly requested libxml but libxml not found])
  768:         fi
  769: else
  770:         ### expat is the default because libxml can't currently survive 
  771:         ### our brutal OOM-handling unit test setup.
  772:         ### http://bugzilla.gnome.org/show_bug.cgi?id=109368
  773:         if $have_expat ; then
  774:                 with_xml=expat
  775:                 dbus_use_expat=true
  776:         elif $have_libxml ; then
  777:                 with_xml=libxml
  778:                 dbus_use_libxml=true
  779:         else
  780:                 AC_MSG_ERROR([No XML library found, check config.log for failed attempts])
  781:         fi
  782: fi
  783: 
  784: AM_CONDITIONAL(DBUS_USE_EXPAT, $dbus_use_expat)
  785: AM_CONDITIONAL(DBUS_USE_LIBXML, $dbus_use_libxml)
  786: 
  787: if $dbus_use_expat; then
  788:    XML_LIBS=-lexpat
  789:    XML_CFLAGS=
  790: fi
  791: if $dbus_use_libxml; then
  792:    XML_LIBS=$LIBXML_LIBS
  793:    XML_CFLAGS=$LIBXML_CFLAGS
  794: fi
  795: 
  796: # Thread lib detection
  797: AC_CHECK_FUNC(pthread_cond_timedwait,,[AC_CHECK_LIB(pthread,pthread_cond_timedwait,
  798:                                                     [THREAD_LIBS="-lpthread"])])
  799: 
  800: # SELinux detection
  801: if test x$enable_selinux = xno ; then
  802:     have_selinux=no;
  803: else
  804:     # See if we have SELinux library
  805:     AC_CHECK_LIB(selinux, is_selinux_enabled, 
  806:                  have_selinux=yes, have_selinux=no)
  807: 
  808:     # see if we have the SELinux header with the new D-Bus stuff in it
  809:     if test x$have_selinux = xyes ; then
  810:         AC_MSG_CHECKING([for DBUS Flask permissions in selinux/av_permissions.h])
  811:         AC_TRY_COMPILE([#include <selinux/av_permissions.h>],
  812:                         [#ifdef DBUS__ACQUIRE_SVC return 0;
  813:                          #else
  814:                          #error DBUS__ACQUIRE_SVC not defined
  815:                          #endif],
  816:                         have_selinux=yes, have_selinux=no)
  817:         AC_MSG_RESULT($have_selinux)
  818:     fi
  819: 
  820:     if test x$enable_selinux = xauto ; then
  821:         if test x$have_selinux = xno ; then
<