summaryrefslogtreecommitdiff
path: root/m4
diff options
context:
space:
mode:
authorOssama Othman <ossama-othman@users.noreply.github.com>1999-03-20 08:06:21 +0000
committerOssama Othman <ossama-othman@users.noreply.github.com>1999-03-20 08:06:21 +0000
commit78f9c4663aca0323f5f5afea14d6d41de85b3c2b (patch)
tree493ea7eb22662cdb19f117405288119513932fd9 /m4
parent23f8681784b65b0bf4a57776064af6af74384846 (diff)
downloadATCD-78f9c4663aca0323f5f5afea14d6d41de85b3c2b.tar.gz
Starting to do the "real" ACE+autoconf integration.
Diffstat (limited to 'm4')
-rw-r--r--m4/acinclude.m4336
-rw-r--r--m4/compiler.m4177
-rw-r--r--m4/subsets.m4539
-rw-r--r--m4/threads.m4385
4 files changed, 1437 insertions, 0 deletions
diff --git a/m4/acinclude.m4 b/m4/acinclude.m4
new file mode 100644
index 00000000000..d76deacb66e
--- /dev/null
+++ b/m4/acinclude.m4
@@ -0,0 +1,336 @@
+dnl -------------------------------------------------------------------------
+dnl $Id$
+dnl
+dnl ACE M4 include file which contains ACE specific M4 macros
+dnl to be used by the ACE configure script.
+dnl
+dnl -------------------------------------------------------------------------
+
+dnl Copyright (C) 1998, 1999 Ossama Othman
+dnl
+dnl All Rights Reserved
+dnl
+dnl This library is free software; you can redistribute it and/or
+dnl modify it under the current ACE distribution terms.
+dnl
+dnl This library is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+
+dnl miscellaneous macros
+
+
+dnl add compiler flags to the CXXFLAGS and CFLAGS variables when doing an
+dnl AC_TRY_COMPILE (not ACE_TRY_COMPILE).
+dnl Use this macro when adding include directories to the compiler flags,
+dnl for example.
+dnl Usage: ACE_TRY_COMPILE(COMPILER-FLAGS, INCLUDES, FUNCTION-BODY,
+dnl [ACTION-IF-FOUND [,ACTION-IF-NOT-FOUND]])
+AC_DEFUN(ACE_TRY_COMPILE, dnl
+[
+ save_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS="$CXXFLAGS $1"
+
+ save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $1"
+
+ AC_TRY_COMPILE($2, $3, $4, $5)
+
+ dnl Restore the C++ and C flags
+ CXXFLAGS="$save_CXXFLAGS"
+ CFLAGS="$save_CFLAGS"
+
+])
+
+dnl Create a temporary empty file and remove it after commands are done using
+dnl it. The directory in which the temporary file will be created in must
+dnl exist. Files will be created under the source directory, not the build
+dnl directory.
+dnl Use this macro when you need a particular file available but want it to be
+dnl empty. This is useful to prevent conflicts with autoconf's confdefs.h
+dnl header when doing an AC_TRY_COMPILE.
+dnl Usage: ACE_USE_TEMP_FILE(TEMP-FILE-TO-CREATE, COMMANDS-THAT-WILL-USE-IT)
+AC_DEFUN(ACE_USE_TEMP_FILE, dnl
+[
+ if test -f ${srcdir}/$1; then
+ mv ${srcdir}/$1 ${srcdir}/$1.conf
+ fi
+
+ touch ${srcdir}/$1
+
+ $2
+
+ if test -f ${srcdir}/$1.conf; then
+ mv ${srcdir}/$1.conf ${srcdir}/$1
+ else
+ rm ${srcdir}/$1
+ fi
+])
+
+dnl Run given test(s) with warnings converted to errors
+dnl Usage: ACE_CONVERT_WARNINGS_TO_ERRORS(TEST-BLOCK)
+AC_DEFUN(ACE_CONVERT_WARNINGS_TO_ERRORS, dnl
+[
+dnl If we are using GNU C++, add the "-Werror" compiler flag to the
+dnl current set of flags so that compiler warnings become errors. We
+dnl do this to cause certain tests to fail when they are supposed to
+dnl fail. Some of the tests pass because the GNU C++ compiler issues
+dnl warnings instead of errors when errors should occur.
+ TEMPCXXFLAGS=""
+ if test -n "$GXX"; then
+ TEMPCXXFLAGS="$CXXFLAGS"
+ CXXFLAGS="$CXXFLAGS -Werror"
+ fi
+
+ $1
+
+ if test -n "$TEMPCXXFLAGS"; then
+ CXXFLAGS="$TEMPCXXFLAGS"
+ fi
+
+])
+
+dnl Wrapper around AC_CACHE_VAL used to ensure "ACTION-IF" commands are run
+dnl even if results have been previously cached.
+dnl Usage: ACE_CACHE_CHECK(MESSAGE, CACHE-ID, COMMANDS-TO-SET-CACHE-VAL,
+dnl ACTION-IF-CACHE-ID-IS-YES,
+dnl ACTION-IF-CACHE-ID-IS-NO)
+dnl The COMMANDS-TO-SET-CACHE-VAL should set the CACHE-ID to yes or "no,"
+dnl otherwise the "ACTION-IF*" commands may not run. The
+dnl COMMANDS-TO-SET-CACHE-VAL should only set the CACHE value. For example,
+dnl no AC_DEFINES should be placed in the COMMANDS-TO-SET-CACHE-VAL.
+AC_DEFUN(ACE_CACHE_CHECK,
+[
+ AC_MSG_CHECKING([$1])
+ AC_CACHE_VAL([$2], [$3])
+ AC_MSG_RESULT([$]$2)
+ if test "[$]$2" = yes; then
+ ace_just_a_place_holder=fixme
+ifelse([$4], , :, [$4])
+ else
+ ace_just_a_place_holder=fixme
+ifelse([$5], , , [$5
+])dnl
+ fi
+])
+
+dnl checks for programs
+
+dnl checks for libraries
+
+dnl checks for header files
+
+dnl checks for typedefs
+
+dnl Check for specific typedef in given header file
+dnl Usage: ACE_CHECK_TYPE(TYPEDEF, INCLUDE,
+dnl [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
+dnl This macro can only check for one typedef in one header file at a time!!
+AC_DEFUN(ACE_CHECK_TYPE, dnl
+[
+dnl AC_REQUIRE([AC_PROG_CXX])
+dnl AC_REQUIRE([AC_PROG_CXXCPP])
+dnl AC_REQUIRE([AC_LANG_CPLUSPLUS])
+
+ ACE_CACHE_CHECK(for $1 in $2, ace_cv_type_$1,
+ [
+ AC_TRY_COMPILE(
+ [
+#include <$2>
+ ],
+ [
+ $1 ace_$1;
+ ],
+ [
+ ace_cv_type_$1=yes
+ ],
+ [
+ ace_cv_type_$1=no
+ ])
+ ], $3, $4)
+])
+
+
+dnl checks for structures
+
+dnl Check for specific struct in given header file
+dnl Usage: ACE_CHECK_STRUCT(STRUCTURE, INCLUDE,
+dnl [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
+dnl This macro can only check for one struct in one header file at a time!!
+AC_DEFUN(ACE_CHECK_STRUCT, dnl
+[
+dnl AC_REQUIRE([AC_PROG_CXX])
+dnl AC_REQUIRE([AC_PROG_CXXCPP])
+dnl AC_REQUIRE([AC_LANG_CPLUSPLUS])
+
+dnl Do the transliteration at runtime so arg 1 can be a shell variable.
+dnl ac_safe=`echo "$1" | sed 'y%./+-%__p_%'`
+
+ ACE_CACHE_CHECK(for struct $1 in $2, ace_cv_struct_$1,
+ [
+ ACE_TRY_COMPILE_STRUCT($1, $2,
+ [
+ ace_cv_struct_$1=yes
+ ],
+ [
+ ace_cv_struct_$1=no
+ ])
+ ], $3, $4)
+])
+
+dnl Check for specific struct in given header file by compiling a test
+dnl program. This macro is used by ACE_CHECK_STRUCT.
+dnl Usage: ACE_TRY_COMPILE_STRUCT(STRUCTURE, INCLUDE,
+dnl [ACTION-IF-SUCCESSFUL[, ACTION-IF-NOT-SUCCESSFUL]])
+dnl This macro can only check for one struct in one header file at a time!!
+AC_DEFUN(ACE_TRY_COMPILE_STRUCT, dnl
+[
+dnl AC_REQUIRE([AC_PROG_CXX])
+dnl AC_REQUIRE([AC_PROG_CXXCPP])
+dnl AC_REQUIRE([AC_LANG_CPLUSPLUS])
+
+ AC_TRY_COMPILE(
+ [
+#include <$2>
+ ],
+ [
+ struct $1 ace_$1;
+ ],
+ [
+ $3
+ ],
+ [
+dnl Some compilers don't like the "struct" but we need the struct for some
+dnl platforms to resolve ambiguities between functions and structures with
+dnl with the same name. So, we try the same test but without "struct" if
+dnl the above test with "struct" fails. If both tests fail, then we can
+dnl be reasonably sure that we don't have the structure we are testing for.
+ AC_TRY_COMPILE(
+ [
+#include <$2>
+ ],
+ [
+ $1 ace_$1;
+ ],
+ [
+ $3
+ ],
+ [
+ $4
+ ])
+ ])
+])
+
+dnl checks for variables
+
+dnl checks for compiler characteristics
+
+dnl checks for library functions
+
+dnl Check for function using prototype in header
+dnl This macro is used if a function is called a different name in a given
+dnl library than what is in the header file but the difference is made
+dnl transparent to the user since the header may provide a macro to make
+dnl things "transparent." If the given header does not exist then this
+dnl macro acts just like the standard AC_CHECK_FUNC macro.
+dnl Usage: ACE_CHECK_FUNC(FUNCTION, HEADER,
+dnl [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
+AC_DEFUN(ACE_CHECK_FUNC, dnl
+[
+dnl AC_REQUIRE([AC_PROG_CXX])
+dnl AC_REQUIRE([AC_PROG_CXXCPP])
+dnl AC_REQUIRE([AC_LANG_CPLUSPLUS])
+ AC_REQUIRE([AC_PROG_AWK])
+
+ AC_TRY_CPP(
+ [
+#include <$2>
+ ], ace_header_exists=yes, ace_header_exists=no)
+
+ cat > conftest.$ac_ext <<EOF
+
+#include <$2>
+ ACE_REAL_FUNCTION $1
+
+EOF
+
+ if test "$ace_header_exists" = yes; then
+ if test -z "$AWK"; then
+ AC_MSG_WARN(No awk program found. "Real" function may not be found.)
+ fi
+
+ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ egrep "ACE_REAL_FUNCTION" |
+ (eval "$AWK '{print \[$]2}' > conftest.awk 2>&1"); then
+ rm -f conftest.$ac_ext
+ ace_real_function=`cat conftest.awk`
+ rm -f conftest.awk
+ fi
+
+ if test $1 != "$ace_real_function"; then
+ AC_MSG_CHECKING(for real $1 from $2)
+ AC_MSG_RESULT($ace_real_function)
+ fi
+ else
+ ace_real_function=$1
+ fi dnl test "$ace_header_not_exist" != yes
+
+ AC_CHECK_FUNC($ace_real_function, $3, $4)
+])
+
+dnl Check for function in library using prototype in header
+dnl This macro is used if a function is called a different name in a given
+dnl library than what is in the header file but the difference is made
+dnl transparent to the user since the header may provide a macro to make
+dnl things "transparent." If the given header does not exist then this
+dnl macro acts just like the standard AC_CHECK_LIB macro.
+dnl Usage: ACE_CHECK_LIB(LIBRARY, FUNCTION, HEADER,
+dnl [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
+AC_DEFUN(ACE_CHECK_LIB, dnl
+[
+dnl AC_REQUIRE([AC_PROG_CXX])
+dnl AC_REQUIRE([AC_PROG_CXXCPP])
+dnl AC_REQUIRE([AC_LANG_CPLUSPLUS])
+ AC_REQUIRE([AC_PROG_AWK])
+
+ AC_TRY_CPP(
+ [
+#include <$3>
+ ], ace_header_exists=yes, ace_header_exists=no)
+
+ cat > conftest.$ac_ext <<EOF
+
+#include <$3>
+ ACE_REAL_FUNCTION $2
+
+EOF
+
+ if test "$ace_header_exists" = yes; then
+ if test -z "$AWK"; then
+ AC_MSG_WARN(No awk program found. "Real" function in library may not be found.)
+ fi
+
+ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ egrep "ACE_REAL_FUNCTION" |
+ eval "$AWK '{print \[$]2}'" > conftest.awk 2>&1; then
+ rm -f conftest.$ac_ext
+ ace_real_function=`cat conftest.awk`
+ rm -f conftest.awk
+ fi
+
+ if test $2 != "$ace_real_function"; then
+ AC_MSG_CHECKING(for real $2 from $3)
+ AC_MSG_RESULT($ace_real_function)
+ fi
+ else
+ ace_real_function=$2
+ fi dnl test "$ace_header_not_exist" != yes
+
+ AC_CHECK_LIB($1, $ace_real_function, $4, $5)
+])
+
+
+dnl checks for structures
+
+dnl checks for system services
diff --git a/m4/compiler.m4 b/m4/compiler.m4
new file mode 100644
index 00000000000..5b41ec125e7
--- /dev/null
+++ b/m4/compiler.m4
@@ -0,0 +1,177 @@
+dnl -------------------------------------------------------------------------
+dnl $Id$
+dnl
+dnl compiler.m4
+dnl
+dnl ACE M4 include file which contains ACE specific M4 macros
+dnl that set/determine compiler configurations for ACE.
+dnl
+dnl -------------------------------------------------------------------------
+
+dnl Copyright (C) 1998, 1999 Ossama Othman
+dnl
+dnl All Rights Reserved
+dnl
+dnl This library is free software; you can redistribute it and/or
+dnl modify it under the current ACE distribution terms.
+dnl
+dnl This library is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+
+dnl Macros to set flags for a given compiler on a given platform.
+dnl The flags set here are generally only useful for _KNOWN_ compilers.
+
+dnl ACE_SET_COMPILER_FLAGS
+dnl Usage: ACE_SET_COMPILER_FLAGS
+AC_DEFUN(ACE_SET_COMPILER_FLAGS, dnl
+[
+ AC_BEFORE([$0], [AM_PROG_LIBTOOL]) dnl
+
+ dnl Make sure we know what C++ compiler and preprocessor we have!
+ AC_REQUIRE([AC_PROG_CXX])
+ AC_REQUIRE([AC_PROG_CXXCPP])
+ AC_REQUIRE([AC_LANG_CPLUSPLUS])
+
+ dnl Compiler Flag Key
+ dnl CXXFLAGS - C++ flags to use during the configure script run and
+ dnl during ACE compilation. The user may set this prior to
+ dnl running the configure script. As such, it is important
+ dnl not to replace the existing value of CXXFLAGS; rather
+ dnl one should only add to it.
+ dnl ACE_CXXFLAGS - General C++ flags the configure script should set before
+ dnl CXXFLAGS to allow the user override them.
+ dnl DCXXFLAGS - C++ debugging flags
+ dnl OCXXFLAGS - C++ optimization flags
+
+ case "$target" in
+ *aix4.2* | *aix4.3*)
+ case "$CXX" in
+ xlC*)
+ CXXFLAGS="$CXXFLAGS"
+ ACE_CXXFLAGS="$ACE_CXXFLAGS -qtempinc -qlanglvl=ansi -qflag=w:w -qinfo"
+ DCXXFLAGS="-g -qcheck=nobounds:div:null"
+ OCXXFLAGS="-qarch=com"
+ ;;
+ *)
+ if test -n "$GXX"; then
+ ACE_CXXFLAGS="-mcpu=common"
+ fi
+ ;;
+ esac
+ ;;
+ *aix4.1*)
+ case "$CXX" in
+ xlC*)
+ CXXFLAGS="$CXXFLAGS"
+ ACE_CXXFLAGS="$ACE_CXXFLAGS -qxcall -qtempinc"
+ DCXXFLAGS="-g"
+ OCXXFLAGS="-qarch=ppc -qtune=604"
+ ;;
+ *)
+ if test -n "$GXX"; then
+ ACE_CXXFLAGS="-mcpu=common"
+ fi
+ ;;
+ esac
+ ;;
+ *chorus*)
+ ;;
+ *cray*)
+ ;;
+ *dgux*)
+ case "$CXX" in
+ ec++)
+ CXXFLAGS="$CXXFLAGS"
+ ACE_CXXFLAGS="$ACE_CXXFLAGS -relax -v -eh"
+ DCXXFLAGS="-g"
+ OCXXFLAGS=""
+ ;;
+ *)
+ if test -n "$GXX"; then
+ ACE_CXXFLAGS="$ACE_CXXFLAGS"
+ fi
+ ;;
+ esac
+ ;;
+ *freebsd*)
+ case "$CXX" in
+ *)
+ if test -n "$GXX"; then
+ CXXFLAGS="$CXXFLAGS"
+ ACE_CXXFLAGS="$ACE_CXXFLAGS -w -fno-strict-prototypes"
+ DCXXFLAGS=""
+ OCXXFLAGS=""
+ fi
+ ;;
+ esac
+ ;;
+ *hpux*)
+ case "$CXX" in
+ CC)
+ CXXFLAGS="$CXXFLAGS -pta -ti,/bin/true -tr,/bin/true"
+ ACE_CXXFLAGS="$ACE_CXXFLAGS -Aa -z +a1"
+ DCXXFLAGS="-g"
+ OCXXFLAGS=""
+ ;;
+ aCC)
+ CXXFLAGS="$CXXFLAGS"
+ ACE_CXXFLAGS="$ACE_CXXFLAGS +W829,302"
+ DCXXFLAGS="-g"
+ OCXXFLAGS=""
+ ;;
+ *)
+ if test -n "$GXX"; then
+ ACE_CXXFLAGS="$ACE_CXXFLAGS -w"
+ fi
+ ;;
+ esac
+ ;;
+ *irix*)
+
+ ;;
+ *linux*)
+ case "$CXX" in
+ *)
+ if test -n "$GXX"; then
+ CXXFLAGS="$CXXFLAGS"
+ ACE_CXXFLAGS="$ACE_CXXFLAGS"
+ DCXXFLAGS="$DCXXFLAGS"
+ OCXXFLAGS="-O3"
+ fi
+ ;;
+ esac
+ ;;
+ *lynxos*)
+ ;;
+ *m88k*)
+ ;;
+ *mvs*)
+ ;;
+ *netbsd*)
+ ;;
+ *osf*)
+ ;;
+ *psos*)
+ ;;
+ *sco*)
+ ;;
+ *sunos4*)
+ ;;
+ *solaris2*)
+ ;;
+ *tandem*)
+ ;;
+ *unixware*)
+ ;;
+ *vxworks*)
+ ;;
+ *)
+ CXXFLAGS="$CXXFLAGS"
+ ACE_CXXFLAGS="$ACE_CXXFLAGS"
+ DCXXFLAGS="-g"
+ OCXXFLAGS="-O"
+ ;;
+ esac
+])
diff --git a/m4/subsets.m4 b/m4/subsets.m4
new file mode 100644
index 00000000000..79fd6efc793
--- /dev/null
+++ b/m4/subsets.m4
@@ -0,0 +1,539 @@
+dnl -------------------------------------------------------------------------
+dnl $Id$
+dnl
+dnl subsets.m4
+dnl
+dnl ACE M4 include file which contains ACE specific M4 macros
+dnl that set/determine which ACE subsets to build.
+dnl
+dnl -------------------------------------------------------------------------
+
+dnl Copyright (C) 1998, 1999 Ossama Othman
+dnl
+dnl All Rights Reserved
+dnl
+dnl This library is free software; you can redistribute it and/or
+dnl modify it under the current ACE distribution terms.
+dnl
+dnl This library is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+
+dnl Check for thread related libraries and compiler flags
+dnl Usage: ACE_CHECK_SUBSETS
+AC_DEFUN(ACE_CHECK_SUBSETS, dnl
+[
+
+dnl Begin ACE_CHECK_SUBSETS
+
+dnl Assume all subsets will be built, including the full ACE library.
+dnl If any of the components is explicitly enabled or disabled by the user
+dnl then do NOT build the full ACE library.
+AC_ARG_ENABLE(lib-full,
+ [ --enable-lib-full build ALL ACE components [default=yes]],
+ [
+ case "${enableval}" in
+ yes)
+ ace_user_enable_lib_full=yes
+ ;;
+ no)
+ ace_user_enable_lib_full=no
+ ;;
+ *)
+ AC_MSG_ERROR(bad value ${enableval} for --enable-lib-full)
+ ;;
+ esac
+ ],
+ [
+ ace_user_enable_lib_full=yes
+ ])
+
+AC_ARG_ENABLE(lib-os,
+ [ --enable-lib-os build libACE_OS library ],
+ [
+ case "${enableval}" in
+ yes)
+ ACE_CREATE_LIBACE_OS
+ ;;
+ no)
+ ace_user_enable_lib_os=no
+ ;;
+ *)
+ AC_MSG_ERROR(bad value ${enableval} for --enable-lib-os)
+ ;;
+ esac
+
+ dnl Disable full ACE library build
+ ace_user_enable_lib_full=no
+ ],)
+
+AC_ARG_ENABLE(lib-utils,
+ [ --enable-lib-utils build libACE_Utils library ],
+ [
+ case "${enableval}" in
+ yes)
+ ACE_CREATE_LIBACE_UTILS
+ ;;
+ no)
+ ace_user_enable_lib_utils=no
+ ;;
+ *)
+ AC_MSG_ERROR(bad value ${enableval} for --enable-lib-utils)
+ ;;
+ esac
+
+ dnl Disable full ACE library build
+ ace_user_enable_lib_full=no
+ ],)
+
+AC_ARG_ENABLE(lib-logging,
+ [ --enable-lib-logging build libACE_Logging library ],
+ [
+ case "${enableval}" in
+ yes)
+ ACE_CREATE_LIBACE_LOGGING
+ ;;
+ no)
+ ace_user_enable_lib_logging=no
+ ;;
+ *)
+ AC_MSG_ERROR(bad value ${enableval} for --enable-lib-logging)
+ ;;
+ esac
+
+ dnl Disable full ACE library build
+ ace_user_enable_lib_full=no
+ ],)
+
+AC_ARG_ENABLE(lib-threads,
+ [ --enable-lib-threads build libACE_Threads library ],
+ [
+ case "${enableval}" in
+ yes)
+ ACE_CREATE_LIBACE_THREADS
+ ;;
+ no)
+ ace_user_enable_lib_threads=no
+ ;;
+ *)
+ AC_MSG_ERROR(bad value ${enableval} for --enable-lib-threads)
+ ;;
+ esac
+
+ dnl Disable full ACE library build
+ ace_user_enable_lib_full=no
+ ],)
+
+AC_ARG_ENABLE(lib-demux,
+ [ --enable-lib-demux build libACE_Demux library ],
+ [
+ case "${enableval}" in
+ yes)
+ ACE_CREATE_LIBACE_DEMUX
+ ;;
+ no)
+ ace_user_enable_lib_demux=no
+ ;;
+ *)
+ AC_MSG_ERROR(bad value ${enableval} for --enable-lib-demux)
+ ;;
+ esac
+
+ dnl Disable full ACE library build
+ ace_user_enable_lib_full=no
+ ],)
+
+AC_ARG_ENABLE(lib-connection,
+ [ --enable-lib-connection build libACE_Connection library ],
+ [
+ case "${enableval}" in
+ yes)
+ ACE_CREATE_LIBACE_CONNECTION
+ ;;
+ no)
+ ace_user_enable_lib_connection=no
+ ;;
+ *)
+ AC_MSG_ERROR(bad value ${enableval} for --enable-lib-connection)
+ ;;
+ esac
+
+ dnl Disable full ACE library build
+ ace_user_enable_lib_full=no
+ ],)
+
+AC_ARG_ENABLE(lib-sockets,
+ [ --enable-lib-sockets build libACE_Sockets library ],
+ [
+ case "${enableval}" in
+ yes)
+ ACE_CREATE_LIBACE_SOCKETS
+ ;;
+ no)
+ ace_user_enable_lib_sockets=no
+ ;;
+ *)
+ AC_MSG_ERROR(bad value ${enableval} for --enable-lib-sockets)
+ ;;
+ esac
+
+ dnl Disable full ACE library build
+ ace_user_enable_lib_full=no
+ ],)
+
+AC_ARG_ENABLE(lib-ipc,
+ [ --enable-lib-ipc build libACE_IPC library ],
+ [
+ case "${enableval}" in
+ yes)
+ ACE_CREATE_LIBACE_IPC
+ ;;
+ no)
+ ace_user_enable_lib_ipc=no
+ ;;
+ *)
+ AC_MSG_ERROR(bad value ${enableval} for --enable-lib-ipc)
+ ;;
+ esac
+
+ dnl Disable full ACE library build
+ ace_user_enable_lib_full=no
+ ],)
+
+AC_ARG_ENABLE(lib-svcconf,
+ [ --enable-lib-svcconf build libACE_Svcconf library ],
+ [
+ case "${enableval}" in
+ yes)
+ ACE_CREATE_LIBACE_SVCCONF
+ ;;
+ no)
+ ace_user_enable_lib_svcconf=no
+ ;;
+ *)
+ AC_MSG_ERROR(bad value ${enableval} for --enable-lib-svcconf)
+ ;;
+ esac
+
+ dnl Disable full ACE library build
+ ace_user_enable_lib_full=no
+ ],)
+
+AC_ARG_ENABLE(lib-streams,
+ [ --enable-lib-streams build libACE_Streams library ],
+ [
+ case "${enableval}" in
+ yes)
+ ACE_CREATE_LIBACE_STREAMS
+ ;;
+ no)
+ ace_user_enable_lib_streams=no
+ ;;
+ *)
+ AC_MSG_ERROR(bad value ${enableval} for --enable-lib-streams)
+ ;;
+ esac
+
+ dnl Disable full ACE library build
+ ace_user_enable_lib_full=no
+ ],)
+
+AC_ARG_ENABLE(lib-memory,
+ [ --enable-lib-memory build libACE_Memory library ],
+ [
+ case "${enableval}" in
+ yes)
+ ACE_CREATE_LIBACE_MEMORY
+ ;;
+ no)
+ ace_user_enable_lib_memory=no
+ ;;
+ *)
+ AC_MSG_ERROR(bad value ${enableval} for --enable-lib-memory)
+ ;;
+ esac
+
+ dnl Disable full ACE library build
+ ace_user_enable_lib_full=no
+ ],)
+
+AC_ARG_ENABLE(lib-token,
+ [ --enable-lib-token build libACE_Token library ],
+ [
+ case "${enableval}" in
+ yes)
+ ACE_CREATE_LIBACE_TOKEN
+ ;;
+ no)
+ ace_user_enable_lib_token=no
+ ;;
+ *)
+ AC_MSG_ERROR(bad value ${enableval} for --enable-lib-token)
+ ;;
+ esac
+
+ dnl Disable full ACE library build
+ ace_user_enable_lib_full=no
+ ],)
+
+AC_ARG_ENABLE(lib-other,
+ [ --enable-lib-other build libACE_Other library ],
+ [
+ case "${enableval}" in
+ yes)
+ ACE_CREATE_LIBACE_OTHER
+ ;;
+ no)
+ ace_user_enable_lib_other=no
+ ;;
+ *)
+ AC_MSG_ERROR(bad value ${enableval} for --enable-lib-other)
+ ;;
+ esac
+
+ dnl Disable full ACE library build
+ ace_user_enable_lib_full=no
+ ],)
+
+
+dnl If no ACE subsets were explicitly enabled or disabled then build
+dnl all of them.
+if test $ace_user_enable_lib_full = yes; then
+ ace_user_enable_lib_os=yes
+ ace_user_enable_lib_utils=yes
+ ace_user_enable_lib_logging=yes
+ ace_user_enable_lib_threads=yes
+ ace_user_enable_lib_demux=yes
+ ace_user_enable_lib_connection=yes
+ ace_user_enable_lib_sockets=yes
+ ace_user_enable_lib_ipc=yes
+ ace_user_enable_lib_svcconf=yes
+ ace_user_enable_lib_streams=yes
+ ace_user_enable_lib_memory=yes
+ ace_user_enable_lib_token=yes
+ ace_user_enable_lib_other=yes
+else
+
+ dnl If we get here then no ACE components will be built!
+ if test $ace_user_enable_lib_os = no &&
+ test $ace_user_enable_lib_utils = no &&
+ test $ace_user_enable_lib_logging = no &&
+ test $ace_user_enable_lib_threads = no &&
+ test $ace_user_enable_lib_demux = no &&
+ test $ace_user_enable_lib_connection = no &&
+ test $ace_user_enable_lib_sockets = no &&
+ test $ace_user_enable_lib_ipc = no &&
+ test $ace_user_enable_lib_svcconf = no &&
+ test $ace_user_enable_lib_streams = no &&
+ test $ace_user_enable_lib_memory = no &&
+ test $ace_user_enable_lib_token = no &&
+ test $ace_user_enable_lib_other = no; then
+ AC_MSG_ERROR(no ACE components will be built. Specify which components to build)
+ fi
+
+fi dnl test $ace_user_enable_lib_full=yes
+
+dnl Set which ACE subsets to build
+AM_CONDITIONAL(BUILD_OS_FILES,
+ test X$ace_user_enable_lib_os = Xyes)
+
+AM_CONDITIONAL(BUILD_UTILS_FILES,
+ test X$ace_user_enable_lib_utils = Xyes)
+
+AM_CONDITIONAL(BUILD_LOGGING_FILES,
+ test X$ace_user_enable_lib_logging = Xyes)
+
+AM_CONDITIONAL(BUILD_THREADS_FILES,
+ test X$ace_user_enable_lib_threads = Xyes)
+
+AM_CONDITIONAL(BUILD_DEMUX_FILES,
+ test X$ace_user_enable_lib_demux = Xyes)
+
+AM_CONDITIONAL(BUILD_CONNECTION_FILES,
+ test X$ace_user_enable_lib_connection = Xyes)
+
+AM_CONDITIONAL(BUILD_SOCKETS_FILES,
+ test X$ace_user_enable_lib_sockets = Xyes)
+
+AM_CONDITIONAL(BUILD_IPC_FILES,
+ test X$ace_user_enable_lib_ipc = Xyes)
+
+AM_CONDITIONAL(BUILD_SVCCONF_FILES,
+ test X$ace_user_enable_lib_svcconf = Xyes)
+
+AM_CONDITIONAL(BUILD_STREAMS_FILES,
+ test X$ace_user_enable_lib_streams = Xyes)
+
+AM_CONDITIONAL(BUILD_MEMORY_FILES,
+ test X$ace_user_enable_lib_memory = Xyes)
+
+AM_CONDITIONAL(BUILD_TOKEN_FILES,
+ test X$ace_user_enable_lib_token = Xyes)
+
+AM_CONDITIONAL(BUILD_OTHER_FILES,
+ test X$ace_user_enable_lib_other = Xyes)
+
+AM_CONDITIONAL(BUILD_ALL_COMPONENTS,
+ test X$ace_user_enable_lib_full = Xyes)
+
+dnl End ACE_CHECK_SUBSETS
+])
+
+dnl Set the component dependencies for the libACE_OS library
+dnl Usage: ACE_CREATE_LIBACE_OS
+AC_DEFUN(ACE_CREATE_LIBACE_OS,
+[
+ ace_user_enable_lib_os=yes
+])
+
+dnl Set the component dependencies for the libACE_Utils library
+dnl Usage: ACE_CREATE_LIBACE_UTILS
+AC_DEFUN(ACE_CREATE_LIBACE_UTILS,
+[
+ ace_user_enable_lib_utils=yes
+
+ dnl Be careful not to go into a recursive loop with these macros!
+ ACE_CREATE_LIBACE_OS
+])
+
+dnl Set the component dependencies for the libACE_Logging library
+dnl Usage: ACE_CREATE_LIBACE_Logging
+AC_DEFUN(ACE_CREATE_LIBACE_LOGGING,
+[
+ ace_user_enable_lib_logging=yes
+
+ dnl Be careful not to go into a recursive loop with these macros!
+ ACE_CREATE_LIBACE_OS
+])
+
+dnl Set the component dependencies for the libACE_Threads library
+dnl Usage: ACE_CREATE_LIBACE_THREADS
+AC_DEFUN(ACE_CREATE_LIBACE_THREADS,
+[
+ ace_user_enable_lib_threads=yes
+
+ dnl Be careful not to go into a recursive loop with these macros!
+ ACE_CREATE_LIBACE_OS
+])
+
+dnl Set the component dependencies for the libACE_Demux library
+dnl Usage: ACE_CREATE_LIBACE_DEMUX
+AC_DEFUN(ACE_CREATE_LIBACE_DEMUX,
+[
+ ace_user_enable_lib_demux=yes
+
+ dnl Be careful not to go into a recursive loop with these macros!
+ ACE_CREATE_LIBACE_OS
+ ACE_CREATE_LIBACE_THREADS
+])
+
+dnl Set the component dependencies for the libACE_Connection library
+dnl Usage: ACE_CREATE_LIBACE_CONNECTION
+AC_DEFUN(ACE_CREATE_LIBACE_CONNECTION,
+[
+ ace_user_enable_lib_connection=yes
+
+ dnl Be careful not to go into a recursive loop with these macros!
+ ACE_CREATE_LIBACE_OS
+ ACE_CREATE_LIBACE_THREADS
+ ACE_CREATE_LIBACE_DEMUX
+])
+
+dnl Set the component dependencies for the libACE_Sockets library
+dnl Usage: ACE_CREATE_LIBACE_SOCKETS
+AC_DEFUN(ACE_CREATE_LIBACE_SOCKETS,
+[
+ ace_user_enable_lib_sockets=yes
+
+ dnl Be careful not to go into a recursive loop with these macros!
+ ACE_CREATE_LIBACE_OS
+])
+
+dnl Set the component dependencies for the libACE_IPC library
+dnl Usage: ACE_CREATE_LIBACE_IPC
+AC_DEFUN(ACE_CREATE_LIBACE_IPC,
+[
+ ace_user_enable_lib_ipc=yes
+
+ dnl Be careful not to go into a recursive loop with these macros!
+ ACE_CREATE_LIBACE_OS
+ ACE_CREATE_LIBACE_SOCKETS
+])
+
+dnl Set the component dependencies for the libACE_Svcconf library
+dnl Usage: ACE_CREATE_LIBACE_SVCCONF
+AC_DEFUN(ACE_CREATE_LIBACE_SVCCONF,
+[
+ ace_user_enable_lib_svcconf=yes
+
+ dnl Be careful not to go into a recursive loop with these macros!
+ ACE_CREATE_LIBACE_OS
+ ACE_CREATE_LIBACE_THREADS
+ ACE_CREATE_LIBACE_DEMUX
+ ACE_CREATE_LIBACE_SOCKETS
+])
+
+dnl Set the component dependencies for the libACE_Streams library
+dnl Usage: ACE_CREATE_LIBACE_STREAMS
+AC_DEFUN(ACE_CREATE_LIBACE_STREAMS,
+[
+ ace_user_enable_lib_streams=yes
+
+ dnl Be careful not to go into a recursive loop with these macros!
+ ACE_CREATE_LIBACE_OS
+ ACE_CREATE_LIBACE_THREADS
+ ACE_CREATE_LIBACE_DEMUX
+])
+
+dnl Set the component dependencies for the libACE_Memory library
+dnl Usage: ACE_CREATE_LIBACE_MEMORY
+AC_DEFUN(ACE_CREATE_LIBACE_MEMORY,
+[
+ ace_user_enable_lib_memory=yes
+
+ dnl Be careful not to go into a recursive loop with these macros!
+ ACE_CREATE_LIBACE_OS
+])
+
+dnl Set the component dependencies for the libACE_Token library
+dnl Usage: ACE_CREATE_LIBACE_TOKEN
+AC_DEFUN(ACE_CREATE_LIBACE_TOKEN,
+[
+ ace_user_enable_lib_token=yes
+
+ dnl Be careful not to go into a recursive loop with these macros!
+ ACE_CREATE_LIBACE_OS
+ ACE_CREATE_LIBACE_UTILS
+ ACE_CREATE_LIBACE_LOGGING
+ ACE_CREATE_LIBACE_THREADS
+ ACE_CREATE_LIBACE_DEMUX
+ ACE_CREATE_LIBACE_CONNECTION
+ ACE_CREATE_LIBACE_SOCKETS
+ ACE_CREATE_LIBACE_IPC
+ ACE_CREATE_LIBACE_SVCCONF
+ ACE_CREATE_LIBACE_STREAMS
+ ACE_CREATE_LIBACE_MEMORY
+ dnl ACE_CREATE_LIBACE_OTHER
+])
+
+dnl Set the component dependencies for the libACE_Utils library
+dnl Usage: ACE_CREATE_LIBACE_OTHER
+AC_DEFUN(ACE_CREATE_LIBACE_OTHER,
+[
+ ace_user_enable_lib_other=yes
+
+ dnl Be careful not to go into a recursive loop with these macros!
+ ACE_CREATE_LIBACE_OS
+ ACE_CREATE_LIBACE_UTILS
+ ACE_CREATE_LIBACE_LOGGING
+ ACE_CREATE_LIBACE_THREADS
+ ACE_CREATE_LIBACE_DEMUX
+ ACE_CREATE_LIBACE_CONNECTION
+ ACE_CREATE_LIBACE_SOCKETS
+ ACE_CREATE_LIBACE_IPC
+ ACE_CREATE_LIBACE_SVCCONF
+ ACE_CREATE_LIBACE_STREAMS
+ ACE_CREATE_LIBACE_MEMORY
+ dnl ACE_CREATE_LIBACE_TOKEN
+])
diff --git a/m4/threads.m4 b/m4/threads.m4
new file mode 100644
index 00000000000..60b91c02afa
--- /dev/null
+++ b/m4/threads.m4
@@ -0,0 +1,385 @@
+dnl -------------------------------------------------------------------------
+dnl $Id$
+dnl
+dnl threads.m4
+dnl
+dnl ACE M4 include file which contains ACE specific M4 macros
+dnl for configuring thread support. This file is to be used
+dnl with the configure script.
+dnl
+dnl -------------------------------------------------------------------------
+
+dnl Copyright (C) 1998, 1999 Ossama Othman
+dnl
+dnl All Rights Reserved
+dnl
+dnl This library is free software; you can redistribute it and/or
+dnl modify it under the current ACE distribution terms.
+dnl
+dnl This library is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+dnl Make sure thread library exists
+dnl We need to be careful when tests for other thread libraries are
+dnl added that we don't screw up handling of "ace_user_enable_threads"
+dnl Tests should probably be more platform specific later on.
+
+dnl Check for thread related libraries and compiler flags
+dnl Usage: ACE_CHECK_THREADS
+AC_DEFUN(ACE_CHECK_THREADS, dnl
+[
+dnl AC_REQUIRE([AC_PROG_CXX])
+dnl AC_REQUIRE([AC_PROG_CXXCPP])
+dnl AC_REQUIRE([AC_LANG_CPLUSPLUS])
+
+dnl Check if compiler accepts specific flag to enable threads
+ ACE_CACHE_CHECK(if compiler may need a thread flag,
+ ace_cv_feature_may_need_thread_flag,
+ [
+ ACE_CHECK_THREAD_FLAGS(
+ [
+ ace_cv_feature_may_need_thread_flag=no
+ ],
+ [
+ ace_cv_feature_may_need_thread_flag=yes
+ ])
+ ],
+ [
+ ace_cv_feature_thread_flag_set=no
+
+ save_CXXFLAGS="$CXXFLAGS"
+ save_CFLAGS="$CFLAGS"
+
+ CXXFLAGS="$CXXFLAGS -mt"
+ CFLAGS="$CFLAGS -mt"
+
+ ACE_CACHE_CHECK(if compiler can use -mt flag,
+ ace_cv_feature_has_mt_flag,
+ [
+ ACE_CHECK_THREAD_FLAGS(
+ [
+ ace_cv_feature_has_mt_flag=yes
+ ],
+ [
+ ace_cv_feature_has_mt_flag=no
+ ])
+ ],
+ [
+ ace_cv_feature_thread_flag_set=yes
+ ],
+ [
+ CXXFLAGS="$save_CXXFLAGS"
+ CFLAGS="$save_CFLAGS"
+ ])
+
+ if test "$ace_cv_feature_thread_flag_set" = no; then
+
+ CXXFLAGS="$CXXFLAGS -pthread"
+ CFLAGS="$CFLAGS -pthread"
+
+ ACE_CACHE_CHECK(if compiler can use -pthread flag,
+ ace_cv_feature_has_pthread_flag,
+ [
+ ACE_CHECK_THREAD_FLAGS(
+ [
+ ace_cv_feature_has_pthread_flag=yes
+ ],
+ [
+ ace_cv_feature_has_pthread_flag=no
+ ])
+ ],
+ [
+ ace_cv_feature_thread_flag_set=yes
+ ],
+ [
+ CXXFLAGS="$save_CXXFLAGS"
+ CFLAGS="$save_CFLAGS"
+ ])
+
+ fi dnl test "$ace_cv_feature_thread_flag_set" = no
+
+ if test "$ace_cv_feature_thread_flag_set" = no; then
+
+ CXXFLAGS="$CXXFLAGS -pthreads"
+ CFLAGS="$CFLAGS -pthreads"
+
+ ACE_CACHE_CHECK(if compiler can use -pthreads flag,
+ ace_cv_feature_has_pthreads_flag,
+ [
+ ACE_CHECK_THREAD_FLAGS(
+ [
+ ace_cv_feature_has_pthreads_flag=yes
+ ],
+ [
+ ace_cv_feature_has_pthreads_flag=no
+ ])
+ ],
+ [
+ ace_cv_feature_thread_flag_set=yes
+ ],
+ [
+ CXXFLAGS="$save_CXXFLAGS"
+ CFLAGS="$save_CFLAGS"
+ ])
+
+ fi dnl test "$ace_cv_feature_thread_flag_set" = no
+
+ if test "$ace_cv_feature_thread_flag_set" = no; then
+
+ CXXFLAGS="$CXXFLAGS -mthreads"
+ CFLAGS="$CXXFLAGS -mthreads"
+
+ ACE_CACHE_CHECK(if compiler can use -mthreads flag,
+ ace_cv_feature_has_mthreads_flag,
+ [
+ ACE_CHECK_THREAD_FLAGS(
+ [
+ ace_cv_feature_has_mthreads_flag=yes
+ ],
+ [
+ ace_cv_feature_has_mthreads_flag=no
+ ])
+ ],
+ [
+ ace_cv_feature_thread_flag_set=yes
+ ],
+ [
+ CXXFLAGS="$save_CXXFLAGS"
+ CFLAGS="$save_CFLAGS"
+ ])
+
+ fi dnl test "$ace_cv_feature_thread_flag_set" = no
+
+ if test "$ace_cv_feature_thread_flag_set" = no; then
+
+ CXXFLAGS="$CXXFLAGS -threads"
+ CFLAGS="$CXXFLAGS -threads"
+
+ ACE_CACHE_CHECK(if compiler can use -threads flag,
+ ace_cv_feature_has_dash_threads_flag,
+ [
+ ACE_CHECK_THREAD_FLAGS(
+ [
+ ace_cv_feature_has_dash_threads_flag=yes
+ ],
+ [
+ ace_cv_feature_has_dash_threads_flag=no
+ ])
+ ],
+ [
+ ace_cv_feature_thread_flag_set=yes
+ ],
+ [
+ CXXFLAGS="$save_CXXFLAGS"
+ CFLAGS="$save_CFLAGS"
+ ])
+
+ fi dnl test "$ace_cv_feature_thread_flag_set" = no
+ ],
+ [
+ dnl Do nothing
+ ])
+
+dnl Check for UNIX International Threads -- STHREADS
+
+ ace_has_sthreads=no
+
+ AC_CHECK_FUNC(thr_create,
+ [
+ ace_has_sthreads=yes
+ AC_DEFINE(ACE_HAS_STHREADS)
+ ],
+ [
+ AC_CHECK_LIB(thread, thr_create, dnl
+ [
+ ace_has_sthreads=yes
+dnl Since we AC_DEFINE(ACE_HAS_STHREADS), the default behavior of
+dnl of adding "-lthread" to the "LIBS" variable no longer works.
+dnl So, we have to add it manually.
+ LIBS="$LIBS -lthread"
+ AC_DEFINE(ACE_HAS_STHREADS)
+ ],)
+ ])
+
+dnl Check for POSIX threads
+
+ dnl Check if platform provides pthreads backward compatibility macros
+ dnl (Some platforms may define some pthread functions such as
+ dnl pthread_create() as macros when using a later implementation of
+ dnl pthreads. For example, Digital Unix 4.0 #defines a pthread_create
+ dnl macro as "__pthread_create" to allow the new implemenation of
+ dnl pthread_create() to co-exist with the old implementation of
+ dnl of pthread_create().)
+
+ AC_CACHE_CHECK(for pthreads backward compatibility macros,
+ ace_cv_lib_pthread_compat_macros,
+ [
+ AC_EGREP_CPP(ACE_PTHREAD_MACROS,
+ [
+#include <pthread.h>
+
+#if defined (pthread_create)
+ ACE_PTHREAD_MACROS
+#endif
+ ],
+ [
+ ace_cv_lib_pthread_compat_macros=yes
+ ],
+ [
+ ace_cv_lib_pthread_compat_macros=no
+ ])
+ ])
+
+ ace_has_pthreads=no
+
+dnl Check for POSIX threads -- PTHREADS
+ ACE_CHECK_FUNC(pthread_create, pthread.h,
+ [
+ ace_has_pthreads=yes
+ AC_DEFINE(ACE_HAS_PTHREADS)
+ ],
+ [
+ AC_CHECK_LIB(pthread, pthread_create, dnl
+ [
+ ace_has_pthreads=yes
+dnl Since we AC_DEFINE(ACE_HAS_PTHREADS), the default behavior of
+dnl of adding "-lpthread" to the "LIBS" variable no longer works.
+dnl So, we have to add it manually.
+ LIBS="$LIBS -lpthread"
+ AC_DEFINE(ACE_HAS_PTHREADS)
+ ],)
+
+dnl Check if pthread function names are mangled (e.g. DU 4.0) to maintain
+dnl older Pthread Draft compatibility.
+ if test "$ace_has_pthreads" = no &&
+ test "$ace_cv_lib_pthread_compat_macros" = yes; then
+ ACE_CHECK_LIB(pthread, pthread_create, pthread.h, dnl
+ [
+ ace_has_pthreads=yes
+dnl Since we AC_DEFINE(ACE_HAS_PTHREADS), the default behavior of
+dnl of adding "-lpthread" to the "LIBS" variable no longer works.
+dnl So, we have to add it manually.
+ LIBS="$LIBS -lpthread"
+ AC_DEFINE(ACE_HAS_PTHREADS)
+ ],)
+ fi dnl test "$ace_has_pthreads" = no && have compatibilty macros
+
+dnl Check if we need to use -lpthreads instead (e.g. AIX 4.2)
+ if test "$ace_has_pthreads" = no; then
+ AC_CHECK_LIB(pthreads, pthread_create, dnl
+ [
+ ace_has_pthreads=yes
+dnl Since we AC_DEFINE(ACE_HAS_PTHREADS), the default behavior of
+dnl of adding "-lpthread" to the "LIBS" variable no longer works.
+dnl So, we have to add it manually.
+ LIBS="$LIBS -lpthreads"
+ AC_DEFINE(ACE_HAS_PTHREADS)
+ ],)
+ fi dnl test "$ace_has_pthreads" = no
+
+ if test "$ace_has_pthreads" = no; then
+dnl Check for POSIX threads in -lc_r
+dnl Check if we already have the necessary library, first
+ AC_CHECK_LIB(c_r, pthread_create, dnl
+ [
+ ace_has_pthreads=yes
+dnl Since we AC_DEFINE(ACE_HAS_PTHREADS), the default behavior of
+dnl of adding "-lc_r" to the "LIBS" variable no longer works.
+dnl So, we have to add it manually.
+ LIBS="$LIBS -lc_r"
+ AC_DEFINE(ACE_HAS_PTHREADS)
+ ],)
+ fi dnl test "$ace_has_pthreads" = no
+
+ if test "$ace_has_pthreads" = no; then
+dnl Check for POSIX threads in -lgthreads, i.e. FSU Pthreads
+ AC_CHECK_LIB(gthreads, pthread_create, dnl
+ [
+ ace_has_pthreads=yes
+dnl Since we AC_DEFINE(ACE_HAS_PTHREADS), the default behavior of
+dnl of adding "-lgthreads" to the "LIBS" variable no longer works.
+dnl So, we have to add it manually.
+ LIBS="$LIBS -lgthreads"
+ AC_DEFINE(ACE_HAS_PTHREADS)
+ ],)
+ fi dnl test "$ace_has_pthreads" = no
+ ])
+
+dnl If we don't have any thread library, then disable threading altogether!
+ if test "$ace_has_pthreads" != yes &&
+ test "$ace_has_sthreads" != yes; then
+ ace_user_enable_threads=no
+ fi
+
+])
+
+dnl This macro will check that the current compiler flags do something
+dnl useful in terms of thread libraries and/or functions.
+dnl Usage: ACE_CHECK_THREAD_FLAGS(ACTION-IF-USABLE [, ACTION-IF-NOT-USABLE]])
+AC_DEFUN(ACE_CHECK_THREAD_FLAGS, dnl
+[
+ACE_CONVERT_WARNINGS_TO_ERRORS([
+AC_TRY_LINK(
+ifelse(AC_LANG, CPLUSPLUS, [#ifdef __cplusplus
+extern "C"
+#endif
+
+#ifndef _REENTRANT
+#error _REENTRANT was not defined
+THROW ME AN ERROR!
+#endif
+])dnl
+[
+char thr_create();
+], [
+thr_create();
+], [$1],
+[
+dnl
+ AC_REQUIRE([AC_PROG_AWK])
+
+ AC_TRY_CPP(
+ [
+#include <pthread.h>
+ ], ace_header_exists=yes, ace_header_exists=no)
+
+ cat > conftest.$ac_ext <<EOF
+
+#include <pthread.h>
+ ACE_REAL_FUNCTION pthread_create
+
+EOF
+
+ if test "$ace_header_exists" = yes; then
+ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ egrep "ACE_REAL_FUNCTION" |
+ (eval "$AWK '{print \[$]2}' > conftest.awk 2>&1"); then
+ rm -f conftest.$ac_ext
+ ace_real_function=`cat conftest.awk`
+ rm -f conftest.awk
+ fi
+ else
+ ace_real_function="pthread_create"
+ fi dnl test "$ace_header_not_exist" != yes
+
+AC_TRY_LINK(
+ifelse(AC_LANG, CPLUSPLUS, [#ifdef __cplusplus
+extern "C"
+#endif
+
+#ifndef _REENTRANT
+#error _REENTRANT was not defined
+THROW ME AN ERROR!
+#endif
+])dnl
+[
+char $ace_real_function();
+], [
+$ace_real_function();
+], [$1],[$2])
+
+dnl
+ ])
+ ])
+])