blob: b8432ee1d27799ed4f0186ac2b22ffc4c2bdfdb5 [file] [log] [blame]
dnl @synopsis XERCES_MUTEXMGR_SELECTION
dnl
dnl Determines the which XMLMutexMgr to use
dnl
dnl @category C
dnl @author James Berry
dnl @version 2005-05-25
dnl @license AllPermissive
dnl
dnl $Id$
AC_DEFUN([XERCES_MUTEXMGR_SELECTION],
[
AC_REQUIRE([XERCES_NO_THREADS])
AC_REQUIRE([ACX_PTHREAD])
AC_MSG_CHECKING([for which Mutex Manager to use])
mutexmgr=
# If no threads is specified, use the NoThread Mutex Mgr
AS_IF([test x$xerces_cv_no_threads = xyes],
[
mutexmgr=NoThreads
AC_DEFINE([XERCES_USE_MUTEXMGR_NOTHREAD], 1, [Define to use the NoThread mutex mgr])
])
# Platform specific checks
AS_IF([test -z "$mutexmgr"],
[
case $host_os in
windows* | cygwin* | mingw*)
mutexmgr=Windows;
AC_DEFINE([XERCES_USE_MUTEXMGR_WINDOWS], 1, [Define to use the Windows mutex mgr])
case $host_os in
mingw*)
CXXFLAGS="${CXXFLAGS} -mthreads"
;;
esac
;;
esac
])
# Fall back to using posix mutex id we can
AS_IF([test -z "$mutexmgr" && test x$acx_pthread_ok = xyes],
[
mutexmgr=POSIX;
AC_DEFINE([XERCES_USE_MUTEXMGR_POSIX], 1, [Define to use the POSIX mutex mgr])
# Set additional flags for link and compile
LIBS="${LIBS} ${PTHREAD_LIBS}"
CXXFLAGS="${CXXFLAGS} ${PTHREAD_CFLAGS}"
])
# If we still didn't find a mutex package, bail
AS_IF([test -z "$mutexmgr"],
[AC_MSG_ERROR([Xerces cannot function without mutex support. You may want to --disable-threads.])])
AC_MSG_RESULT($mutexmgr)
# Define the auto-make conditionals which determine what actually gets compiled
# Note that these macros can't be executed conditionally, which is why they're here, not above.
AM_CONDITIONAL([XERCES_USE_MUTEXMGR_NOTHREAD], [test x"$mutexmgr" = xNoThreads])
AM_CONDITIONAL([XERCES_USE_MUTEXMGR_POSIX], [test x"$mutexmgr" = xPOSIX])
AM_CONDITIONAL([XERCES_USE_MUTEXMGR_WINDOWS], [test x"$mutexmgr" = xWindows])
]
)