summaryrefslogtreecommitdiff
path: root/configure.in
diff options
context:
space:
mode:
Diffstat (limited to 'configure.in')
-rw-r--r--configure.in6121
1 files changed, 6121 insertions, 0 deletions
diff --git a/configure.in b/configure.in
new file mode 100644
index 00000000000..6b58261789e
--- /dev/null
+++ b/configure.in
@@ -0,0 +1,6121 @@
+dnl
+dnl $Id$
+
+AC_REVISION($Revision 0.53 $)dnl
+
+dnl
+dnl An autoconf script to automatically configure ACE.
+dnl Process this file with autoconf to produce a configure script.
+dnl
+
+dnl
+dnl The autoconf documentation states that this is the recommended
+dnl sequence for this file:
+dnl
+dnl `AC_INIT(FILE)'
+dnl checks for programs
+dnl checks for libraries
+dnl checks for header files
+dnl checks for typedefs
+dnl checks for structures
+dnl checks for variables
+dnl checks for compiler characteristics
+dnl checks for library functions
+dnl checks for system services
+dnl `AC_OUTPUT([FILE...])'
+dnl
+dnl I followed this convention, and added a few sections.
+dnl -- Gonzo
+
+
+dnl
+dnl SECTION 1: `AC_INIT(FILE)'
+dnl
+dnl This macro must be the very first invoked.
+dnl Its argument names a file that must exist in the directory where
+dnl autoconf will run, just to check things.
+dnl AC_INIT(ace_unique.m4)
+dnl
+AC_INIT(ace/ACE.cpp)
+
+dnl Require GNU Autoconf 2.13 or better.
+AC_PREREQ(2.13)
+
+dnl Check what platform we are running on.
+AC_CANONICAL_SYSTEM
+
+dnl Allow the standard program name transformations.
+dnl We probably don't need AC_ARG_PROGRAM any longer since AM_INIT_AUTOMAKE
+dnl handles this functionality. -- Ossama
+dnl AC_ARG_PROGRAM
+
+dnl Cause GNU Automake to initialize the state of things and run
+dnl some sanity checks
+PACKAGE=ace
+changequote(, )dnl
+ACE_VERSION=`head -1 ${srcdir}/VERSION | sed 's/.*version \([0-9.]*\).*/\1/'`
+changequote([, ])dnl
+
+AM_INIT_AUTOMAKE("$PACKAGE", "$ACE_VERSION", )
+
+dnl Generate a header file with all settings.
+AM_CONFIG_HEADER(ace/config.h)
+
+dnl Move before the AC_ARG_ENABLE stuff to prevent autoconf complaints.
+dnl This is a bit messy but it makes life easier for me.
+dnl -Ossama
+dnl
+dnl SECTION: checks for programs
+dnl
+
+dnl Check if system supports "#! /bin/sh" line in scripts
+AC_SYS_INTERPRETER
+
+dnl Check the C compiler and preprocessor.
+AC_PROG_CC
+AC_PROG_CPP
+AC_PROG_CC_C_O
+
+dnl Check the C++ compiler and preprocessor.
+AC_PROG_CXX
+AC_PROG_CXXCPP
+
+if test -n "$GXX"; then
+dnl Temporarily change M4 quotes to prevent "regex []" from being eaten
+changequote(, )dnl
+ if g++ --version | egrep -v '^2\.[0-7]' > /dev/null; then
+changequote([, ])dnl
+ acenothinghere=""
+ else
+ AC_DEFINE(ACE_HAS_GNUG_PRE_2_8) dnl
+ AC_DEFINE(ACE_HAS_GNUC_BROKEN_TEMPLATE_INLINE_FUNCTIONS) dnl
+ fi
+fi
+
+dnl If we are cross compiling disable certain things in the Makefiles.
+AM_CONDITIONAL(ACE_CROSS_COMPILED, test X$cross_compiling = Xyes)
+
+
+dnl This checks for a binary called gm4, gnum4 or m4, and assigns
+dnl whatever was found (or "gonzo") to the M4 macro.
+dnl AC_CHECK_PROGS(M4, gm4 gnum4 m4, gonzo)
+
+dnl Look for the best awk-style program available.
+AC_PROG_AWK
+
+dnl Set some version information
+ACE_CURRENT=0
+ACE_AGE=0
+ACE_REVISION=0
+
+if test -n "$AWK"; then
+ ACE_MAJOR=`echo "$ACE_VERSION" | sed 's/\./ /g' | $AWK '{ print \[$]1 }'`
+ ACE_MINOR=`echo "$ACE_VERSION" | sed 's/\./ /g' | $AWK '{ print \[$]2 }'`
+ ACE_BETA=`echo "$ACE_VERSION" | sed 's/\./ /g' | $AWK '{ print \[$]3 }'`
+
+dnl This is a terrible kludge to fool libtool into making it produce a shared
+dnl library with the "right" version information.
+dnl We really should switch to a version scheme that is compatible with
+dnl libtool.
+dnl -Ossama
+ACE_CURRENT=`expr $ACE_MAJOR + $ACE_MINOR`
+ACE_AGE=$ACE_MINOR
+ACE_REVISION=$ACE_BETA
+
+fi
+
+AC_SUBST(ACE_CURRENT)
+AC_SUBST(ACE_AGE)
+AC_SUBST(ACE_REVISION)
+
+dnl Do the usual install settings; don't forget to include a
+dnl install-sh script, in case the is no BDS compatible install
+dnl installed (no pun intended) in your machine.
+dnl
+dnl We don't need this anymore since AM_INIT_AUTOMAKE calls AM_PROG_INSTALL
+dnl yes "AM_PROG_INSTALL," not "AC_PROG_INSTALL." -- Ossama
+dnl AC_PROG_INSTALL
+
+dnl Special handling for some UNIX variants and Cygwin32
+AC_AIX
+AC_ISC_POSIX
+AC_MINIX
+AC_CYGWIN
+
+dnl The user's/default C++ flags are stored in "CXXFLAGS." We use
+dnl the variable "ACE_CXXFLAGS" to set the C++ flags we want. At the end
+dnl of the configuration process we combine ACE_CXXFLAGS and CXXFLAGS
+dnl into CXXFLAGS (e.g., CXXFLAGS="$ACE_CXXFLAGS $CXXFLAGS"). CXXFLAGS
+dnl goes after ACE_CXXFLAGS so that the user's C++ flag command line
+dnl choices always override the configure script's choices.
+ACE_CXXFLAGS=""
+ACE_CFLAGS=""
+
+dnl Set the test language as C++
+AC_LANG_CPLUSPLUS
+
+dnl Check if we support symlinks
+AC_PROG_LN_S
+
+dnl Check if a lexical analyzer exists (lex, flex, etc.)
+AM_PROG_LEX
+
+dnl Check if some implementation of YACC exists (yacc, byacc, bison, etc.)
+AC_PROG_YACC
+dnl if test -z "$YACC"; then
+dnl ./missing yacc
+dnl fi
+
+dnl Check for perfect hash function generator
+AC_CHECK_PROG(GPERF, gperf, gperf) dnl
+
+dnl Check for profiling progam
+AC_CHECK_PROGS(PROF, gprof prof,) dnl
+
+dnl Call ACE_SET_COMPILER_FLAGS before AM_PROG_LIBTOOL
+ACE_SET_COMPILER_FLAGS
+
+dnl Since we are linking ACE with the C++ compiler, and since
+dnl libtool checks linker characteristics using the C compiler,
+dnl temporarily state that the C compiler is the C++ compiler.
+save_CC="$CC"
+CC="$CXX"
+
+dnl Disable building of static libraries by default
+AM_DISABLE_STATIC
+
+dnl Check for libtool and turn on Automake processing for Libtool
+AM_PROG_LIBTOOL
+
+
+dnl Restore the C compiler variable
+CC="$save_CC"
+
+dnl
+dnl SECTION 2: Configure script command line options
+dnl
+
+
+AC_ARG_ENABLE(debug,
+ [ --enable-debug enable debugging [default=yes]],
+ [
+ case "${enableval}" in
+ yes)
+ ACE_CXXFLAGS="$ACE_CXXFLAGS $DCXXFLAGS"
+ ;;
+ no)
+ AC_DEFINE(ACE_NDEBUG)
+ ;;
+ *)
+ AC_MSG_ERROR(bad value ${enableval} for --enable-debug)
+ ;;
+ esac
+ ],)
+
+AC_ARG_ENABLE(exceptions,
+ [ --enable-exceptions enable C++ exception handling [default=yes]],
+ [
+ case "${enableval}" in
+ yes)
+ ace_user_enable_exceptions=yes
+ ;;
+ no)
+ ace_user_enable_exceptions=no
+ if test -n "$GXX"; then
+dnl Temporarily change M4 quotes to prevent "regex []" from being eaten
+changequote(, )dnl
+ if g++ --version | egrep -v '^2\.[0-7]' > /dev/null; then
+changequote([, ])dnl
+ ACE_CXXFLAGS="$ACE_CXXFLAGS -fno-exceptions"
+ fi
+ fi
+ if test -n "$GCC"; then
+dnl Temporarily change M4 quotes to prevent "regex []" from being eaten
+changequote(, )dnl
+ if gcc --version | egrep -v '^2\.[0-7]' > /dev/null; then
+changequote([, ])dnl
+ ACE_CFLAGS="$ACE_CFLAGS -fno-exceptions"
+ fi
+ fi
+ ;;
+ *)
+ AC_MSG_ERROR(bad value ${enableval} for --enable-exceptions)
+ ;;
+ esac
+ ],
+ [
+ ace_user_enable_exceptions=yes
+ ])
+
+
+AC_ARG_ENABLE(fast,
+ [ --enable-fast enable -fast flag, e.g. Sun C++ [default=no]],
+ [
+ case "${enableval}" in
+ yes)
+ ACE_CXXFLAGS="$ACE_CXXFLAGS -fast"
+ ACE_CFLAGS="$ACE_CFLAGS -fast"
+ ;;
+ no)
+ ;;
+ *)
+ AC_MSG_ERROR(bad value ${enableval} for --enable-fast)
+ ;;
+ esac
+ ],)
+
+AC_ARG_ENABLE(inline,
+ [ --enable-inline enable code inlining [default=yes]],
+ [
+ case "${enableval}" in
+ yes)
+ AC_DEFINE(__ACE_INLINE__)
+ ;;
+ no)
+ AC_DEFINE(ACE_NO_INLINE)
+ ;;
+ *)
+ AC_MSG_ERROR(bad value ${enableval} for --enable-inline)
+ ;;
+ esac
+ ],
+ [
+ AC_DEFINE(__ACE_INLINE__)
+ ])
+
+AC_ARG_ENABLE(log-msg-prop,
+ [ --enable-log-msg-prop enable threads inheriting
+ ACE_Log_Msg properties from parent
+ thread [default=yes]],
+ [
+ case "${enableval}" in
+ yes)
+ dnl nothing to do
+ ;;
+ no)
+ AC_DEFINE(ACE_THREADS_DONT_INHERIT_LOG_MSG)
+ ;;
+ *)
+ AC_MSG_ERROR(bad value ${enableval} for --enable-log-msg-prop)
+ ;;
+ esac
+ ],)
+
+AC_ARG_ENABLE(logging,
+ [ --enable-logging enable ACE logging macros [default=yes]],
+ [
+ case "${enableval}" in
+ yes)
+ dnl nothing to do
+ ;;
+ no)
+ AC_DEFINE(ACE_NLOGGING)
+ ;;
+ *)
+ AC_MSG_ERROR(bad value ${enableval} for --enable-logging)
+ ;;
+ esac
+ ],)
+
+AC_ARG_ENABLE(malloc-stats,
+ [ --enable-malloc-stats enable malloc statistics
+ collection [default=no]],
+ [
+ case "${enableval}" in
+ yes)
+ AC_DEFINE(ACE_HAS_MALLOC_STATS)
+ ;;
+ no)
+ dnl nothing to do
+ ;;
+ *)
+ AC_MSG_ERROR(bad value ${enableval} for --enable-malloc-stats)
+ ;;
+ esac
+ ],)
+
+AC_ARG_ENABLE(optimize,
+ [ --enable-optimize enable additional optimizations [default=yes]],
+ [
+ case "${enableval}" in
+ yes)
+ ace_user_enable_optimize=yes
+ ;;
+ no)
+ AC_MSG_WARN(Optimization configure support not implemented yet.)
+ ;;
+ *)
+ AC_MSG_ERROR(bad value ${enableval} for --enable-optimize)
+ ;;
+ esac
+ ],
+ [
+ ace_user_enable_optimize=yes
+ ])
+
+AC_ARG_ENABLE(probe,
+ [ --enable-probe enable ACE_Timeprobes [default=no]],
+ [
+ case "${enableval}" in
+ yes)
+ AC_DEFINE(ACE_COMPILE_TIMEPROBES)
+ ;;
+ no)
+ ;;
+ *)
+ AC_MSG_ERROR(bad value ${enableval} for --enable-probe)
+ ;;
+ esac
+ ],)
+
+AC_ARG_ENABLE(profile,
+ [ --enable-profile enable profiling [default=no]],
+ [
+ case "${enableval}" in
+ yes)
+ if test -z "$PROF"; then
+ AC_MSG_WARN(No profiling program found. Assuming 'prof' exists)
+ ACE_CXXFLAGS="$ACE_CXXFLAGS -p"
+ ACE_CFLAGS="$ACE_CFLAGS -p"
+ else
+ case "$PROF" in
+ gprof)
+ echo "Building with 'gprof' support"
+ ACE_CXXFLAGS="$ACE_CXXFLAGS -pg"
+ ACE_CFLAGS="$ACE_CFLAGS -pg"
+ ;;
+ prof)
+ echo "Building with 'prof' support"
+ ACE_CXXFLAGS="$ACE_CXXFLAGS -p"
+ ACE_CFLAGS="$ACE_CFLAGS -p"
+ ;;
+ *)
+ dnl We shouldn't get here.
+ AC_MSG_WARN(Assuming 'prof' exists)
+ ACE_CXXFLAGS="$ACE_CXXFLAGS -p"
+ ACE_CFLAGS="$ACE_CFLAGS -p"
+ ;;
+ esac
+ fi
+ ;;
+ no)
+ dnl Do nothing
+ ;;
+ *)
+ AC_MSG_ERROR(bad value ${enableval} for --enable-profile)
+ ;;
+ esac
+ ],)
+
+AC_ARG_ENABLE(purify,
+ [ --enable-purify Purify all executables [default=no]],
+ [
+ case "${enableval}" in
+ yes)
+ AC_CHECK_PROG(PURIFY, purify, purify,)
+ if test -n "$PURIFY"; then
+ PURE_CACHE_BASE_DIR=/tmp/purifycache
+ PURE_CACHE_DIR=${PURE_CACHE_BASE_DIR}-${LOGNAME}-${notdir ${CXX} }
+ PURELINK="$PURIFY -best-effort -chain-length=20 \
+ -cache-dir=$PURE_CACHE_DIR \
+ -fds-inuse-at-exit=no -ignore-signals=SIGINT -inuse-at-exit \
+ -max_threads=100"
+ ACE_CXXFLAGS="$ACE_CXXFLAGS -DACE_HAS_PURIFY"
+ ACE_CFLAGS="$ACE_CFLAGS -DACE_HAS_PURIFY"
+ else
+ AC_MSG_WARN(Purify program was not found.)
+ AC_MSG_WARN(Disabling purify support.)
+ fi
+ ;;
+ no)
+ PURELINK=""
+ ;;
+ *)
+ AC_MSG_ERROR(bad value ${enableval} for --enable-purify)
+ ;;
+ esac
+ ], PURELINK="")
+
+AC_ARG_ENABLE(quantify,
+ [ --enable-quantify Quantify all executables [default=no]],
+ [
+ case "${enableval}" in
+ yes)
+ AC_CHECK_PROG(QUANTIFY, quantify, quantify,)
+ if test -n "$QUANTIFY"; then
+ PURE_CACHE_BASE_DIR=/tmp/purifycache
+ PURE_CACHE_DIR=${PURE_CACHE_BASE_DIR}-${LOGNAME}-${notdir ${CXX} }
+ PRELINK="$QUANTIFY -best-effort -max_threads=100 \
+ -cache-dir=$PURE_CACHE_DIR"
+ ACE_CXXFLAGS="$ACE_CXXFLAGS -DACE_HAS_QUANTIFY"
+ ACE_CFLAGS="$ACE_CFLAGS -DACE_HAS_QUANTIFY"
+ else
+ AC_MSG_WARN(Quantify program was not found.)
+ AC_MSG_WARN(Disabling quantify support.)
+ fi
+ ;;
+ no)
+ PRELINK=""
+ ;;
+ *)
+ AC_MSG_ERROR(bad value ${enableval} for --enable-quantify)
+ ;;
+ esac
+ ], PRELINK="")
+
+AC_ARG_ENABLE(reentrant,
+ [ --enable-reentrant enable reentrant functions [default=yes]],
+ [
+ case "${enableval}" in
+ yes)
+ ace_user_enable_reentrant_funcs=yes
+ ;;
+ no)
+ ace_user_enable_reentrant_funcs=no
+ ;;
+ *)
+ AC_MSG_ERROR(bad value ${enableval} for --enable-reentrant)
+ ;;
+ esac
+ ],
+ [
+ ace_user_enable_reentrant_funcs=yes
+ ])
+
+
+AC_ARG_ENABLE(repo,
+ [ --enable-repo use GNU template repository
+ GNU C++ with repo patches and
+ EGCS only [default=no]],
+ [
+ case "${enableval}" in
+ yes)
+ if test -n "$GXX"; then
+ ace_user_enable_repo=yes
+ ACE_CXXFLAGS="$ACE_CXXFLAGS -frepo"
+ AC_DEFINE(ACE_HAS_GNU_REPO)
+ else
+ ace_user_enable_repo=no
+ AC_MSG_WARN(Not using GNU C++! GNU template respository disabled)
+ fi
+ ;;
+ no)
+ ace_user_enable_repo=no
+ ;;
+ *)
+ AC_MSG_ERROR(bad value ${enableval} for --enable-repo)
+ ;;
+ esac
+ ],
+ [
+ ace_user_enable_repo=no
+ ])
+
+AC_ARG_ENABLE(rtti,
+ [ --enable-rtti enable run-time type
+ identification
+ *Currently only for Sun C++ [default=no]],
+ [
+ case "${enableval}" in
+ yes)
+ if test -z "$GXX"; then
+ case "$target" in
+ *solaris*)
+ ACE_CXXFLAGS="$ACE_CXXFLAGS -features=rtti"
+ ;;
+ *)
+ ;;
+ esac
+ else
+ AC_MSG_WARN(Not using Sun C++. RTTI will not be enabled.)
+ fi
+ ;;
+ no)
+ ;;
+ *)
+ AC_MSG_ERROR(bad value ${enableval} for --enable-rtti)
+ ;;
+ esac
+ ],)
+
+AC_ARG_ENABLE(static-obj-mgr,
+ [ --enable-static-obj-mgr enable static Object_Manager [default=yes]],
+ [
+ case "${enableval}" in
+ yes)
+ dnl nothing to do
+ ;;
+ no)
+ AC_DEFINE(ACE_HAS_NONSTATIC_OBJECT_MANAGER)
+ ;;
+ *)
+ AC_MSG_ERROR(bad value ${enableval} for --enable-static-obj-mgr)
+ ;;
+ esac
+ ],)
+
+AC_ARG_ENABLE(threads,
+ [ --enable-threads enable thread support [default=yes]],
+ [
+ case "${enableval}" in
+ yes)
+ ace_user_enable_threads=yes
+ ;;
+ no)
+ ace_user_enable_threads=no
+ ;;
+ *)
+ AC_MSG_ERROR(bad value ${enableval} for --enable-threads)
+ ;;
+ esac
+ ],
+ [
+ ace_user_enable_threads=yes
+ ])
+
+
+AC_ARG_ENABLE(verb-not-sup,
+ [ --enable-verb-not-sup enable verbose ENOTSUP reports [default=no]],
+ [
+ case "${enableval}" in
+ yes)
+ AC_DEFINE(ACE_HAS_VERBOSE_NOTSUP)
+ ;;
+ no)
+ dnl Do nothing
+ ;;
+ *)
+ AC_MSG_ERROR(bad value ${enableval} for --enable-verb-not-sup)
+ ;;
+ esac
+ ],)
+
+AC_ARG_ENABLE(trace,
+ [ --enable-trace enable ACE tracing [default=no]],
+ [
+ case "${enableval}" in
+ yes)
+ ;;
+ no)
+ AC_DEFINE(ACE_NTRACE)
+ ;;
+ *)
+ AC_MSG_ERROR(bad value ${enableval} for --enable-trace)
+ ;;
+ esac
+ ],
+ [
+ AC_DEFINE(ACE_NTRACE)
+ ])
+
+AC_ARG_ENABLE(xt-reactor,
+ [ --enable-xt-reactor build support for the XtReactor [default=no]],
+ [
+ case "${enableval}" in
+ yes)
+ AC_PATH_XTRA
+dnl Here, if X isn't found or the user sets "--without-x" on the command
+dnl line, then "no_x" is set to "yes."
+ if test "$no_x" != yes; then
+ ACE_XLIBS="-lX11 -lXt"
+ AC_DEFINE(ACE_HAS_XT)
+ ace_user_enable_xt_reactor=yes
+ else
+ ACE_XLIBS=""
+ ace_user_enable_xt_reactor=no
+ AC_MSG_WARN(X was not found or it was disabled.)
+ AC_MSG_WARN(ACE_XtReactor will not be enabled.)
+ fi
+ ;;
+ no)
+ ACE_XLIBS=""
+ ace_user_enable_xt_reactor=no
+ ;;
+ *)
+ AC_MSG_ERROR(bad value ${enableval} for --enable-xt-reactor)
+ ;;
+ esac
+ ],)
+
+AC_ARG_WITH(gperf,
+ [ --with-gperf compile the gperf program [default=yes]],
+ [
+ case "${withval}" in
+ yes)
+ ace_user_with_gperf=yes
+ AC_DEFINE(ACE_HAS_GPERF)
+ if test -n "$GPERF"; then
+ AC_MSG_WARN(gperf program already exists)
+ AC_MSG_WARN(existing gperf may be overwritten during installation)
+ fi
+ ;;
+ no)
+ ace_user_with_gperf=no
+ ;;
+ *)
+ AC_MSG_ERROR(bad value ${withval} for --with-gperf)
+ ;;
+ esac
+ ],
+ [
+ ace_user_with_gperf=yes
+ AC_DEFINE(ACE_HAS_GPERF)
+ if test -n "$GPERF"; then
+ AC_MSG_WARN(gperf program already exists)
+ AC_MSG_WARN(existing gperf may be overwritten during installation)
+ fi
+ ])
+AM_CONDITIONAL(COMPILE_GPERF,
+ test X$ace_user_with_gperf = Xyes)
+
+AC_ARG_WITH(orbix,
+ [ --with-orbix[=DIR] compile ACE with Orbix [default=no]],
+ [
+ case "${withval}" in
+ yes)
+ AC_MSG_WARN(Orbix configure support not implemented yet.)
+ ;;
+ no)
+ ;;
+ *)
+ AC_MSG_WARN(Orbix configure support not implemented yet.)
+ ;;
+ esac
+ ],)
+
+AC_ARG_WITH(tli-device,
+ [ --with-tli-device[=DEV] device for TCP on TLI [default=/dev/tcp]],
+ [
+ case "${withval}" in
+ yes)
+ AC_MSG_ERROR(Specify the TLI/TCP device if you use this option.)
+ ;;
+ no)
+ ;;
+ *)
+ if test -e "${withval}"; then
+ AC_DEFINE_UNQUOTED(ACE_TLI_TCP_DEVICE, "${withval}")
+ else
+ AC_MSG_ERROR(TLI/TCP device ${withval} does not exist.)
+ fi
+ ;;
+ esac
+ ],)
+
+dnl
+dnl SECTION 3: check for programs <--- moved before section 2 (Ossama)
+dnl
+
+dnl Platform specific defines and libraries needed for ACE's autoconf tests
+dnl that currently do not have tests themselves.
+dnl Platform specific flags
+case "$target" in
+ *aix3*)
+ ;;
+ *aix4.1*)
+ AC_DEFINE(_BSD, 44)
+ ;;
+ *aix4.2*)
+ AC_DEFINE(_BSD, 44)
+ AC_DEFINE(_BSD_INCLUDES)
+ ;;
+ t3e-cray-unicosmk*)
+ AC_DEFINE(_CRAYMPP)
+ AC_DEFINE(_CRAYT3E)
+ AC_DEFINE(_UNICOS,)
+ ;;
+ t3e-cray*)
+ AC_DEFINE(_CRAYT3E)
+ AC_DEFINE(_UNICOS,)
+ ;;
+ *cray-unicos*)
+ AC_DEFINE(_UNICOS,)
+ ;;
+ *dgux4.11*)
+ LIBS="$LIBS -lc"
+ AC_DEFINE(_POSIX_SOURCE)
+ AC_DEFINE(_DGUX_SOURCE)
+ ;;
+ *dgux4*)
+ LIBS="$LIBS -lc"
+ AC_DEFINE(_POSIX4A_DRAFT10_SOURCE)
+ AC_DEFINE(_POSIX4_DRAFT_SOURCE)
+ ;;
+ *freebsd*)
+ LIBS="$LIBS -lcompat"
+ ;;
+ *hpux9*)
+ LIBS="$LIBS -lcma -lrt"
+ AC_DEFINE(HPUX)
+ ;;
+ *hpux10*)
+ LIBS="$LIBS -lcma -lrt"
+ AC_DEFINE(_HPUX_SOURCE)
+ ;;
+ *hpux11*)
+ LIBS="$LIBS -lcma -lrt"
+ ;;
+ *irix5.2*)
+ ;;
+ *irix5.3*)
+ if test -z "$GXX"; then
+ AC_DEFINE(_BSD_TYPES)
+ fi
+ ;;
+ *irix6*)
+ AC_DEFINE(_SGI_MP_SOURCE)
+ AC_DEFINE(_MODERN_C_)
+ ;;
+ *linux*)
+ ;;
+ *lynxos*)
+ AC_DEFINE(_POSIX_THREADS_CALLS)
+ AC_DEFINE(__NO_INCLUDE_WARN__)
+ ;;
+ *m88k*)
+ ;;
+ *mvs*)
+ AC_DEFINE(_ALL_SOURCE)
+ ;;
+ *netbsd*)
+ ;;
+ *osf3.2*)
+ LIBS="$LIBS -lmach -lsys5 -lcxx -lc -lrt"
+ ;;
+ *osf4.0*)
+ LIBS="$LIBS -lmach -lrt"
+ ;;
+ *psos*)
+ LIBS="$LIBS -lm"
+ ;;
+ *sco4.2*)
+ ;;
+ *sco5*)
+ AC_DEFINE(_SVID3)
+ ;;
+ *sunos4*)
+ ;;
+ *solaris2.4*)
+ ;;
+ *solaris2.5*)
+ ;;
+ *solaris2.6*)
+ ;;
+ *86*solaris*)
+ ;;
+ *tandem*)
+ ;;
+ *unixware2.0*)
+ ;;
+ *unixware2.1*)
+ ;;
+ *vxworks*)
+ ;;
+ *cygwin32*)
+ ;;
+ *win32*)
+ ;;
+ *)
+ ;;
+esac
+
+dnl
+dnl SECTION 4: checks for libraries
+dnl
+
+dnl Additional X library checks
+dnl We only check for these libraries if the user has
+dnl enabled XtReactor support.
+
+if test "$ace_user_enable_xt_reactor" = yes; then
+XTREACTOR_TEST_XLIBS=""
+dnl Check for Motif if we have X
+ T_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $X_LIBS"
+
+dnl Note that ACE currently only needs -lX11 and -lXt for the XtReactor
+dnl so we define another library variable that contains additional
+dnl libraries for the XtReactor test since it needs either Motif or the
+dnl Athena widget set.
+
+ xt_reactor_go=no
+ AC_CHECK_LIB(Xm, XmCreateRowColumn, dnl
+ [
+ XTREACTOR_TEST_XLIBS="-lXm"
+ xt_reactor_go=yes
+ ],
+ [
+ AC_DEFINE(ACE_LACKS_MOTIF)
+ AC_CHECK_LIB(Xaw, XawInitializeWidgetSet,
+ [
+ XTREACTOR_TEST_XLIBS="-lXaw -lXmu"
+ xt_reactor_go=yes
+ ],
+ [
+ xt_reactor_go=no
+ AC_MSG_WARN(No usable X widget libraries were found.)
+ AC_MSG_WARN(XtReactor test compilation will be disabled.)
+ ], -lXmu)
+ ],-lXt)
+
+ AC_SUBST(XTREACTOR_TEST_XLIBS)
+
+ AM_CONDITIONAL(COMPILE_XTREACTOR_TEST, test X$xt_reactor_go = Xyes)
+
+dnl Restore pre-test linker flags
+ LDFLAGS="$T_LDFLAGS"
+
+fi dnl test "$ace_user_enable_xt_reactor"= yes
+
+dnl End additional X library checks
+
+dnl Some platforms do not have a dynamic linking library, however the
+dnl dlopen, dlclose, etc., functions may exist in the C library.
+dnl (e.g. Digital UNIX)
+dnl Check for dynamic linking library
+AC_CHECK_FUNC(dlopen, ace_has_svr4_dynamic_linking=yes, dnl
+ AC_CHECK_LIB(dl, dlopen,
+ [
+ ace_has_svr4_dynamic_linking=yes
+ LIBS="$LIBS -ldl"
+ ],
+ AC_CHECK_LIB(svld, dlopen,
+ [
+ ace_has_svr4_dynamic_linking=yes
+ LIBS="$LIBS -lsvld"
+ ],
+ AC_CHECK_LIB(dld, shl_get,,))))
+
+dnl Check if the socket library is available
+AC_CHECK_FUNC(socket, , dnl
+ AC_CHECK_LIB(socket, socket,,))
+
+dnl Check for gethostbyname in -lnsl since some platforms (e.g. Solaris)
+dnl put it there.
+AC_CHECK_FUNC(gethostbyname, , dnl
+ AC_CHECK_LIB(nsl, gethostbyname,,))
+
+dnl Check for getservbyname in -lxnet since some platforms (e.g. Solaris)
+dnl may put it there. Define ACE_LACKS_GETSERVBYNAME in case the getservbyname
+dnl AC_CHECK_FUNC gets skipped due to caching.
+AC_CHECK_FUNC(getservbyname, , dnl
+ AC_CHECK_LIB(xnet, getservbyname,,
+ AC_DEFINE(ACE_LACKS_GETSERVBYNAME)))
+
+dnl Check for compile() regex function in -lgen. Solaris, for example,
+dnl may put it there.
+AC_CHECK_FUNC(compile, , dnl
+ AC_CHECK_LIB(gen, compile, ,))
+
+dnl Check for exception handling library (e.g. for Digital UNIX)
+AC_CHECK_FUNC(exc_continue, , dnl
+ AC_CHECK_LIB(exc, exc_continue, ,))
+
+dnl Check for ctime_r in -lc_r. Some platforms, such as Digital UNIX,
+dnl put reentrant functions such as asctime_r, ctime_r, gmtime_r, and
+dnl localtime_r in -lc_r.
+AC_CHECK_FUNC(ctime_r, , dnl
+ AC_CHECK_LIB(c_r, ctime_r, ,))
+
+dnl TLI library check
+ace_has_tli_funcs=yes
+AC_CHECK_FUNC(t_accept, , dnl
+ AC_CHECK_LIB(xti, t_accept, ,
+ AC_CHECK_LIB(tli_r, t_accept, ,
+ AC_CHECK_LIB(tli, t_accept, ,
+ AC_CHECK_LIB(nsl, t_accept, ,ace_has_tli_funcs=no)))))
+
+dnl Asynchronous IO library check
+dnl Some platforms, such as Solaris puts aio_read in -lposix4, for example.
+ace_has_aio_funcs=yes
+AC_CHECK_FUNC(aio_read, , dnl
+ AC_CHECK_LIB(aio, aio_read, ,
+ AC_CHECK_LIB(posix4, aio_read, , ace_has_aio_funcs=no)))
+
+dnl Check for all of the things we need to compile and link threads
+dnl properly.
+if test "$ace_user_enable_threads" = yes; then
+ ACE_CHECK_THREADS
+fi dnl test "$ace_user_enable_threads" = yes
+
+dnl Check for sched_yield() in posix4 library.
+dnl Some platforms, such as Solaris, may define sched_yield() there.
+dnl Later we run AC_CHECK_FUNC(sched_yield), which is redundant i this case
+dnl but is needed if sched_yield() is defined in one of the other libraries
+dnl we check for.
+AC_CHECK_FUNC(sched_yield, ace_has_sched_yield=yes, dnl
+ AC_CHECK_LIB(posix4, sched_yield, ace_has_sched_yield=yes,))
+
+
+dnl
+dnl SECTION 5: checks for header files
+dnl
+
+dnl Check for dirent headers
+AC_HEADER_DIRENT
+
+if test "$ac_cv_header_dirent_dirent_h" = yes ||
+ test "$ac_cv_header_dirent_sys_ndir_h" = yes ||
+ test "$ac_cv_header_dirent_sys_dir_h" = yes ||
+ test "$ac_cv_header_dirent_ndir_h" = yes; then
+ AC_DEFINE(ACE_HAS_DIRENT)
+fi
+
+dnl Check for sys/wait.h Posix.1 compliance
+AC_HEADER_SYS_WAIT
+
+if test "$am_cv_cygwin32" = yes; then
+ AC_CHECK_HEADER(cygwin32/socket.h, dnl
+ AC_DEFINE(ACE_HAS_CYGWIN32_SOCKET_H),)
+fi
+
+AC_CHECK_HEADER(dlfcn.h, dnl
+ [
+ dnl We already checked for dlopen in the previous library checks however,
+ dnl it is possible that ac_cv_func_dlopen=yes if dlopen wasn't found before
+ dnl the library test. Hence we cannot use AC_CHECK_FUNC(dlopen) here
+ dnl the previously cached value may prevent ACE_HAS_SVR4_DYNAMIC_LINKING
+ dnl from being defined.
+ dnl -Ossama
+ if test "$ace_has_svr4_dynamic_linking" = yes; then
+ AC_DEFINE(ACE_HAS_SVR4_DYNAMIC_LINKING)
+ fi
+ ],)
+
+AC_CHECK_HEADER(malloc.h, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_MALLOC_H))
+
+AC_CHECK_HEADER(memory.h, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_MEMORY_H))
+
+AC_CHECK_HEADER(bytesex.h, dnl
+ AC_DEFINE(ACE_HAS_BYTESEX_H))
+
+dnl We don't need to explicitly include this on linux.
+dnl AC_CHECK_HEADER(features.h, dnl
+dnl AC_DEFINE(ACE_HAS_FEATURES_H))
+
+AC_CHECK_HEADER(sys/msg.h, dnl
+ [
+ ACE_CACHE_CHECK(if _KERNEL is needed for msg prototypes,
+ ace_cv_lib_broken_msg_h,
+ [
+ AC_TRY_COMPILE(
+ [
+#include <sys/msg.h>
+ ],
+ [
+ struct msg ace_msg;
+ ],
+ [
+ ace_cv_lib_broken_msg_h=no
+ ],
+ [
+ AC_TRY_COMPILE(
+ [
+#ifndef _KERNEL
+# define _KERNEL
+#endif
+#include <sys/msg.h>
+ ],
+ [
+ struct msg ace_msg;
+ ],
+ [
+ ace_cv_lib_broken_msg_h=yes
+ ],
+ [
+ dnl If we get here, then we have no idea if it is broken or not.
+ ace_cv_lib_broken_msg_h=no
+ ])
+ ])
+ ],
+ [
+ AC_DEFINE(ACE_HAS_BROKEN_MSG_H)
+ ],)
+ ],
+ AC_DEFINE(ACE_LACKS_SYSV_MSG_H))
+
+AC_CHECK_HEADER(sys/param.h, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_PARAM_H))
+
+AC_CHECK_HEADER(sys/priocntl.h, ,)
+
+AC_CHECK_HEADER(sys/procfs.h, dnl
+ AC_DEFINE(ACE_HAS_PROC_FS))
+
+AC_CHECK_HEADER(sys/select.h, dnl
+ AC_DEFINE(ACE_HAS_SELECT_H))
+
+AC_CHECK_HEADER(netinet/tcp.h, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_TCP_H))
+
+AC_CHECK_HEADER(sys/sockio.h, dnl
+ AC_DEFINE(ACE_HAS_SOCKIO_H))
+
+AC_CHECK_HEADER(sysent.h, dnl
+ AC_DEFINE(ACE_HAS_SYSENT_H),)
+
+AC_CHECK_HEADER(sys/systeminfo.h, ,) dnl
+
+AC_CHECK_HEADER(sys/filio.h, dnl
+ AC_DEFINE(ACE_HAS_SYS_FILIO_H),)
+
+AC_CHECK_HEADER(sys/uio.h,,) dnl
+
+AC_CHECK_HEADER(sys/ioctl.h, dnl
+ AC_DEFINE(ACE_HAS_SYS_IOCTL_H),)
+
+AC_CHECK_HEADER(sys/types.h, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_SYS_TYPES_H))
+
+AC_CHECK_HEADER(sys/termios.h, dnl
+ [
+ AC_EGREP_CPP(ACE_WITH_TERM_IOCTLS,
+ [
+#include <sys/termios.h>
+
+#if defined (ACE_HAS_SYS_IOCTL_H)
+# include <sys/ioctl.h>
+#endif
+
+#if defined(TCGETS) && defined(TCSETS)
+ ACE_WITH_TERM_IOCTLS
+#elif defined(TCGETA) && defined(TCSETA)
+ ACE_WITH_TERM_IOCTLS
+#endif
+ ],
+ [
+ AC_DEFINE(ACE_HAS_TERM_IOCTLS)
+ ],)
+ ],)
+
+if test "$ace_has_tli_funcs" = yes; then
+AC_CHECK_HEADER(xti.h, dnl
+ [
+ ace_has_tli=yes
+ AC_DEFINE(ACE_HAS_XTI)
+ AC_DEFINE(ACE_HAS_TLI)
+ ],)
+
+AC_CHECK_HEADER(sys/xti.h, dnl
+ [
+ ace_has_tli=yes
+ AC_DEFINE(ACE_HAS_SYS_XTI_H)
+ AC_DEFINE(ACE_HAS_XTI)
+ AC_DEFINE(ACE_HAS_TLI)
+ ],)
+
+AC_CHECK_HEADER(sys/timod.h, dnl
+ [
+ AC_DEFINE(ACE_HAS_TIMOD_H)
+ ],
+ [
+ AC_CHECK_HEADER(tli/timod.h,
+ [
+ AC_DEFINE(ACE_HAS_OSF_TIMOD_H)
+ ],)
+ ])
+
+AC_CHECK_HEADER(tiuser.h, dnl
+ [
+ ace_has_tli=yes
+ AC_DEFINE(ACE_HAS_TIUSER_H)
+ AC_DEFINE(ACE_HAS_TLI)
+ ],)
+
+if test "$ac_cv_header_tiuser_h" = yes; then
+ ACE_CACHE_CHECK(if tiuser.h is protected by extern \"C\",
+ ace_cv_lib_tiuser_with_extern_c,[
+ AC_EGREP_HEADER(extern \"C\", tiuser.h,
+ [
+ ace_cv_lib_tiuser_with_extern_c=yes
+ ],
+ [
+ ace_cv_lib_tiuser_with_extern_c=no
+ ])
+ ], , AC_DEFINE(ACE_HAS_TIUSER_H_BROKEN_EXTERN_C))
+fi dnl test "$ac_cv_header_tiuser_h" = yes
+
+AC_CHECK_HEADER(xliuser.h, dnl
+ [
+ ace_has_tli=yes
+ AC_DEFINE(ACE_HAS_XLI)
+ AC_DEFINE(ACE_HAS_TLI)
+ ],)
+
+
+dnl Check for TLI prototypes
+if test "$ace_has_tli" = yes; then
+ ACE_CACHE_CHECK(for TLI prototypes,
+ ace_cv_lib_tli_prototypes,
+ [
+dnl We only check for t_accept. This should hopefully be enough.
+ AC_EGREP_CPP(t_accept,
+ [
+#if defined (ACE_HAS_TIMOD_H)
+# include <sys/timod.h>
+#endif
+
+#if defined (ACE_HAS_OSF_TIMOD_H)
+# include <tli/timod.h>
+#endif
+
+#if defined (ACE_HAS_TIUSER_H) || defined (ACE_HAS_XTI)
+# if defined (ACE_HAS_TIUSER_H)
+# include /**/ <tiuser.h>
+# else
+# if defined (ACE_HAS_BROKEN_XTI_MACROS)
+# undef TCP_NODELAY
+# undef TCP_MAXSEG
+# endif /* ACE_HAS_BROKEN_XTI_MACROS */
+# if defined ACE_HAS_SYS_XTI_H
+# define class ace_xti_class
+# include /**/ <sys/xti.h>
+# undef class
+# else
+# include /**/ <xti.h>
+# endif /* ACE_HAS_SYS_XTI_H */
+# endif /* ACE_HAS_TIUSER_H */
+#endif /* ACE_HAS_TIUSER_H || ACE_HAS_XTI */
+
+#if defined (ACE_HAS_XLI)
+# include <xliuser.h>
+#endif
+ ],
+ [
+ ace_cv_lib_tli_prototypes=yes
+ ],
+ [
+ ace_cv_lib_tli_prototypes=no
+ ])
+ ], AC_DEFINE(ACE_HAS_TLI_PROTOTYPES),)
+
+dnl Check for t_errno type in TLI headers
+ ACE_CACHE_CHECK(for t_errno in TLI headers,
+ ace_cv_lib_has_t_errno,
+ [
+ dnl Check if t_errno is declared in the TLI headers
+ AC_EGREP_CPP(t_errno,
+ [
+#if defined (ACE_HAS_TIMOD_H)
+# include <sys/timod.h>
+#endif
+
+#if defined (ACE_HAS_OSF_TIMOD_H)
+# include <tli/timod.h>
+#endif
+
+#if defined (ACE_HAS_TIUSER_H) || defined (ACE_HAS_XTI)
+# if defined (ACE_HAS_TIUSER_H)
+# include /**/ <tiuser.h>
+# else
+# if defined (ACE_HAS_BROKEN_XTI_MACROS)
+# undef TCP_NODELAY
+# undef TCP_MAXSEG
+# endif /* ACE_HAS_BROKEN_XTI_MACROS */
+# if defined ACE_HAS_SYS_XTI_H
+# define class ace_xti_class
+# include /**/ <sys/xti.h>
+# undef class
+# else
+# include /**/ <xti.h>
+# endif /* ACE_HAS_SYS_XTI_H */
+# endif /* ACE_HAS_TIUSER_H */
+#endif /* ACE_HAS_TIUSER_H || ACE_HAS_XTI */
+
+#if defined (ACE_HAS_XLI)
+# include <xliuser.h>
+#endif
+
+#ifndef _THREAD_SAFE
+# define _THREAD_SAFE
+#endif
+ ],
+ [
+ ace_cv_lib_has_t_errno=yes
+ ],
+ [
+ ace_cv_lib_has_t_errno=no
+ ])
+ ],
+ [
+ dnl Do not define ACE_HAS_BROKEN_T_ERRNO if t_errno isn't declared in a
+ dnl header since ACE's definition of _terrno needs a previously declared
+ dnl t_errno.
+ AC_CHECK_FUNC(_terrno, , AC_DEFINE(ACE_HAS_BROKEN_T_ERRNO))
+ ],
+ [
+ AC_DEFINE(ACE_LACKS_T_ERRNO)
+ ])
+
+fi dnl test "$ace_has_tli" = yes
+fi dnl test "$ace_has_tli_funcs" = yes
+
+AC_CHECK_HEADER(sys/time.h, dnl
+ [
+ AC_EGREP_HEADER(sys/time.h, time.h,
+ ,
+ [
+ AC_DEFINE(ACE_LACKS_SYSTIME_H)
+ ])
+ ],)
+
+dnl See the notes about ACE_LACKS_MMAP in the functions section of this
+dnl configure script.
+dnl -Ossama
+AC_CHECK_HEADER(sys/mman.h, dnl
+ [
+ AC_EGREP_HEADER(extern \"C\", sys/mman.h,
+ ,
+ [
+ AC_DEFINE(ACE_HAS_BROKEN_MMAP_H)
+ ])
+ ],
+ [
+ AC_DEFINE(ACE_LACKS_MMAP)
+ ])
+
+dnl Check for bzero() prototype if bstring.h exists.
+AC_CHECK_HEADER(bstring.h, dnl
+ [
+ AC_EGREP_HEADER(bzero, bstring.h,
+ [
+ AC_DEFINE(ACE_HAS_BSTRING)
+ ],)
+ ],)
+
+AC_CHECK_HEADER(strings.h, dnl
+ [
+ AC_EGREP_HEADER(bzero, strings.h,
+ [
+ AC_DEFINE(ACE_HAS_STRINGS)
+ ],)
+ ],)
+
+AC_CHECK_HEADER(sys/syscall.h, dnl
+ AC_DEFINE(ACE_HAS_SYSCALL_H),)
+
+AC_CHECK_HEADER(poll.h, dnl
+ AC_DEFINE(ACE_HAS_POLL),)
+
+dnl We want AC_CHECK_HEADERS so that "HAVE_PWD_H" gets defined if we have it.
+dnl "HAVE_PWD_H" is used in one of the tests later on.
+AC_CHECK_HEADERS(pwd.h,,) dnl
+
+AC_CHECK_HEADER(regexpr.h, dnl
+ AC_DEFINE(ACE_HAS_REGEX),)
+
+AC_CHECK_HEADER(stropts.h, dnl
+ AC_DEFINE(ACE_HAS_STREAMS),)
+
+AC_CHECK_HEADER(siginfo.h, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_SIGINFO_H))
+
+AC_CHECK_HEADER(unistd.h, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_UNISTD_H))
+
+AC_CHECK_HEADER(ucontext.h, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_UCONTEXT_H))
+
+AC_CHECK_HEADER(utime.h, dnl
+ AC_DEFINE(ACE_HAS_UTIME),)
+
+dnl This check will be disabled until we can get ACE to compile when it
+dnl ACE_HAS_UNICODE is defined on UN*X systems
+dnl AC_CHECK_HEADER(wchar.h,
+dnl AC_DEFINE(ACE_HAS_UNICODE),)
+
+AC_CHECK_HEADER(libc.h, dnl
+ AC_DEFINE(ACE_HAS_LIBC_H))
+
+AC_CHECK_HEADER(osfcn.h, dnl
+ AC_DEFINE(ACE_HAS_OSFCN_H))
+
+AC_CHECK_HEADER(new, dnl
+ AC_DEFINE(ACE_HAS_NEW_NO_H),
+ [
+ AC_CHECK_HEADER(new.h, dnl
+ AC_DEFINE(ACE_HAS_NEW_H))
+ ])
+
+AC_CHECK_HEADER(stdexcept, dnl
+ AC_DEFINE(ACE_HAS_STDEXCEPT_NO_H),
+ [
+ AC_CHECK_HEADER(exception.h, dnl
+ AC_DEFINE(ACE_HAS_EXCEPTION_H))
+ ])
+
+AC_CHECK_HEADER(iomanip, dnl
+ AC_DEFINE(ACE_HAS_IOMANIP_NO_H))
+
+dnl ace/OS.i can #include <cstring>, not #include <cstring.h>
+dnl "cstring" is the correct form.
+dnl TODO: Double check the above comment.
+AC_CHECK_HEADER(cstring, dnl
+ AC_DEFINE(ACE_HAS_GNU_CSTRING_H),)
+
+AC_CHECK_HEADER(auto_ptr,,) dnl
+
+AC_CHECK_HEADER(map, dnl
+[
+ AC_CHECK_HEADER(net/if.h,
+ [
+ ACE_CACHE_CHECK(if STL map class conflicts with <net/if.h> map struct,
+ ace_cv_header_stl_map_conflict,
+ [
+ AC_TRY_COMPILE(
+ [
+#ifndef ACE_LACKS_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#include <map>
+#include <net/if.h>
+ ],
+ [
+ map<char, char> ace_map;
+ ],
+ [
+ ace_cv_header_stl_map_conflict=no
+ ],
+ [
+ ace_cv_header_stl_map_conflict=yes
+ ])
+ ], AC_DEFINE(ACE_HAS_STL_MAP_CONFLICT),)
+ ],)
+],)
+
+AC_CHECK_HEADER(queue, dnl
+[
+ AC_CHECK_HEADER(netinet/in.h,
+ [
+ ACE_CACHE_CHECK(if STL queue class conflicts with <netinet/in.h> queue struct,
+ ace_cv_header_stl_queue_conflict,
+ [
+ AC_TRY_COMPILE(
+ [
+#ifndef ACE_LACKS_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#include <queue>
+#include <netinet/in.h>
+ ],
+ [
+ queue<char> ace_queue;
+ ],
+ [
+ ace_cv_header_stl_queue_conflict=no
+ ],
+ [
+ ace_cv_header_stl_queue_conflict=yes
+ ])
+ ], AC_DEFINE(ACE_HAS_STL_QUEUE_CONFLICT),)
+ ],)
+],)
+
+dnl Check for availablity of "new style" C++ stream headers
+AC_CHECK_HEADERS(iomanip ios iostream istream ostream fstream streambuf,
+ ,
+ AC_DEFINE(ACE_USES_OLD_IOSTREAMS))
+
+AC_CHECK_HEADER(iostream.h, dnl
+ AC_CHECK_HEADER(fstream.h, , AC_DEFINE(ACE_LACKS_IOSTREAM_TOTALLY)),
+ AC_DEFINE(ACE_LACKS_IOSTREAM_TOTALLY))
+
+dnl Check if platform needs to #include <sched.h> to get thread
+dnl scheduling defs.
+ACE_CACHE_CHECK(if platform needs sched.h for thread scheduling definitions,
+ ace_cv_needs_sched_h,[
+ AC_EGREP_HEADER(sched_yield, sched.h,
+ [
+ ace_cv_needs_sched_h=yes
+ ],
+ [
+ ace_cv_needs_sched_h=no
+ ])
+ ], AC_DEFINE(ACE_LACKS_SCHED_H),)
+
+dnl Check if platform needs to #include <regexpr.h> for
+dnl regular expression support
+ACE_CACHE_CHECK(if platform needs regexpr.h for regular expression support,
+ ace_cv_needs_regexpr_h, [
+ AC_EGREP_HEADER(compile, regexpr.h,
+ [
+ ace_cv_needs_regexpr_h=yes
+ AC_DEFINE(ACE_NEEDS_REGEXPR_H)
+ ],
+ [
+ AC_EGREP_HEADER(step, regexpr.h,
+ [
+ ace_cv_needs_regexpr_h=yes
+ ],
+ [
+ ace_cv_needs_regexpr_h=no
+ ])
+ ])
+ ], AC_DEFINE(ACE_NEEDS_REGEXPR_H),)
+
+dnl Check if sprintf() returns char*
+ACE_CONVERT_WARNINGS_TO_ERRORS([
+ACE_CACHE_CHECK(if sprintf() returns char*,
+ ace_cv_lib_charptr_sprintf,
+ [
+ AC_TRY_COMPILE(
+ [
+#include <stdlib.h>
+#include <stdio.h>
+ ],
+ [
+ char *str = 0;
+ const char *fmt = "%d";
+ int num = 0;
+
+ char *s = 0;
+
+ s = sprintf(str, fmt, num);
+ ],
+ [
+ ace_cv_lib_charptr_sprintf=yes
+ ],
+ [
+ ace_cv_lib_charptr_sprintf=no
+ ])
+ ], AC_DEFINE(ACE_HAS_CHARPTR_SPRINTF),)
+]) dnl ACE_CONVERT_WARNINGS_TO_ERRORS
+
+dnl Check for getopt() prototype
+ACE_CACHE_CHECK(for getopt() prototype, ace_cv_lib_getopt_proto, [
+ AC_EGREP_HEADER(getopt, unistd.h,
+ [
+ ace_cv_lib_getopt_proto=yes
+ ],
+ [
+ AC_EGREP_HEADER(getopt, stdlib.h,
+ [
+ ace_cv_lib_getopt_proto=yes
+ ],
+ [
+ ace_cv_lib_getopt_proto=no
+ ])
+ ])
+], , AC_DEFINE(ACE_LACKS_GETOPT_PROTO))
+
+dnl Check for old malloc() prototype.
+ACE_CONVERT_WARNINGS_TO_ERRORS([
+ACE_CACHE_CHECK(for old malloc() prototype,
+ ace_cv_lib_old_malloc_proto,
+ [
+ AC_TRY_COMPILE(
+ [
+#include <stdlib.h>
+#ifndef ACE_LACKS_MALLOC_H
+# include <malloc.h>
+#endif
+ ],
+ [
+ char *s = 0;
+ s = malloc(sizeof(int));
+ ],
+ [
+ ace_cv_lib_old_malloc_proto=yes
+ ],
+ [
+ ace_cv_lib_old_malloc_proto=no
+ ])
+ ], AC_DEFINE(ACE_HAS_OLD_MALLOC),)
+]) dnl ACE_CONVERT_WARNINGS_TO_ERRORS
+
+dnl Check for *_timedwait() prototypes
+dnl TODO: We only check for one of the *_timedwait() prototypes.
+dnl Is this enough?
+ACE_CACHE_CHECK(for *_timedwait() prototypes, ace_cv_lib_timedwait_proto, [
+ AC_EGREP_HEADER(recv_timedwait, pthread.h,
+ [
+ ace_cv_lib_timedwait_proto=yes
+ ],
+ [
+ AC_EGREP_HEADER(recv_timedwait, fcntl.h,
+ [
+ ace_cv_lib_timedwait_proto=yes
+ ],
+ [
+ ace_cv_lib_timedwait_proto=no
+ ])
+ ])
+], , AC_DEFINE(ACE_LACKS_TIMEDWAIT_PROTOTYPES))
+
+dnl Check for ualarm prototype in unistd.h.
+dnl Most Unices seem to put it there (?)
+ACE_CACHE_CHECK(for ualarm() prototype, ace_cv_lib_ualarm_proto, [
+ AC_EGREP_HEADER(ualarm, unistd.h,
+ [
+ ace_cv_lib_ualarm_proto=yes
+ ],
+ [
+ ace_cv_lib_ualarm_proto=no
+ ])
+], , AC_DEFINE(ACE_LACKS_UALARM_PROTOTYPE))
+
+dnl Check for getrusage prototype in sys/resource.h
+ACE_CACHE_CHECK(for getrusage() in sys/resource.h,
+ ace_cv_lib_has_getrusage_proto, [
+ AC_EGREP_HEADER(getrusage, sys/resource.h,
+ [
+ ace_cv_lib_has_getrusage_proto=yes
+ ],
+ [
+ ace_cv_lib_has_getrusage_proto=no
+ ])
+], AC_DEFINE(ACE_HAS_GETRUSAGE_PROTO),)
+
+dnl Check for {get,set}rlimit prototypes in sys/resource.h
+ACE_CACHE_CHECK(for getrlimit() and setrlimit() in sys/resource.h,
+ ace_cv_lib_has_getsetrlimit_proto, [
+ AC_EGREP_HEADER(getrlimit, sys/resource.h,
+ [
+ AC_EGREP_HEADER(getrlimit, sys/resource.h,
+ [
+ ace_cv_lib_has_getsetrlimit_proto=yes
+ ],
+ [
+ ace_cv_lib_has_getsetrlimit_proto=no
+ ])
+ ],
+ [
+ ace_cv_lib_has_getsetrlimit_proto=no
+ ])
+], , AC_DEFINE(ACE_LACKS_RLIMIT_PROTOTYPE))
+
+dnl Check for platforms that don't declare dl* functions
+dnl as extern "C" in dlfcn.h.
+dnl TODO: This check looks feeble to me...
+dnl NOTE: Linux header files ARE protected with extern "C" by the
+dnl __BEGIN_DECLS macro, so don't be surprised!
+ACE_CACHE_CHECK(if dlfcn.h is protected by extern \"C\",
+ ace_cv_lib_dlfcn_with_extern_c,[
+ AC_EGREP_HEADER(extern \"C\", dlfcn.h,
+ [
+ ace_cv_lib_dlfcn_with_extern_c=yes
+ ],
+ [
+ ace_cv_lib_dlfcn_with_extern_c=no
+ ])
+], , AC_DEFINE(ACE_HAS_DLFCN_H_BROKEN_EXTERN_C))
+
+dnl
+dnl SECTION 6: Checks for typedefs
+dnl
+
+dnl Standard typedef checks (All of them may not be needed
+AC_TYPE_UID_T
+AC_TYPE_MODE_T
+AC_TYPE_OFF_T
+AC_TYPE_PID_T
+AC_TYPE_SIZE_T
+
+dnl Specific typedef checks
+dnl TODO: Check whether these typedefs can be defined somewhere else.
+ACE_CHECK_TYPE(idtype_t, signal.h, AC_DEFINE(ACE_HAS_IDTYPE_T),)
+ACE_CHECK_TYPE(sem_t, semaphore.h,,)
+ACE_CHECK_TYPE(key_t, sys/types.h, ,AC_DEFINE(ACE_LACKS_KEY_T))
+ACE_CHECK_TYPE(ssize_t, sys/types.h, AC_DEFINE(ACE_HAS_SSIZE_T),)
+ACE_CHECK_TYPE(u_longlong_t, sys/types.h, , AC_DEFINE(ACE_LACKS_U_LONGLONG_T))
+ACE_CHECK_TYPE(pri_t, sys/types.h, ,AC_DEFINE(ACE_LACKS_PRI_T))
+ACE_CHECK_TYPE(socklen_t, sys/socket.h, AC_DEFIE(ACE_HAS_SOCKLEN_T),)
+ACE_CHECK_TYPE(ucontext_t, ucontext.h, AC_DEFINE(ACE_HAS_UCONTEXT_T),)
+ACE_CHECK_TYPE(wchar_t, wchar.h, AC_DEFINE(ACE_HAS_XPG4_MULTIBYTE_CHAR),
+ [
+ ACE_CHECK_TYPE(wchar_t, sys/types.h,,AC_DEFINE(ACE_LACKS_WCHAR_T))
+ ])
+
+dnl Check for sig_atomic_t
+ACE_CACHE_CHECK(for sig_atomic_t,
+ ace_cv_lib_posix_defines_sig_atomic_t,[
+ AC_TRY_COMPILE(
+ [
+#ifndef ACE_LACKS_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#include <signal.h>
+ ],
+ [
+ sig_atomic_t sat;
+ ],
+ [
+ ace_cv_lib_posix_defines_sig_atomic_t=yes
+ ],
+ [
+ ace_cv_lib_posix_defines_sig_atomic_t=no
+ ])
+], AC_DEFINE(ACE_HAS_SIG_ATOMIC_T),)
+
+dnl
+dnl SECTION 7: checks for structures
+dnl
+
+dnl TODO: Check whether these structures can be defined somewhere else.
+ACE_CHECK_STRUCT(flock, fcntl.h, , AC_DEFINE(ACE_LACKS_FILELOCKS))
+ACE_CHECK_STRUCT(rwlock_t, synch.h, , AC_DEFINE(ACE_LACKS_RWLOCK_T))
+ACE_CHECK_STRUCT(strbuf, stropts.h, AC_DEFINE(ACE_HAS_STRBUF_T),)
+ACE_CHECK_STRUCT(msgbuf, sys/msg.h, , AC_DEFINE(ACE_LACKS_MSGBUF_T))
+case "$target" in
+*irix*)
+ dnl IRIX prusage fields don't match what ACE currently supports.
+ ;;
+*)
+ ACE_CHECK_STRUCT(prusage_t, sys/procfs.h, AC_DEFINE(ACE_HAS_PRUSAGE_T),)
+ ;;
+esac
+ACE_CHECK_STRUCT(strrecvfd, stropts.h, , AC_DEFINE(ACE_LACKS_STRRECVFD))
+ACE_CHECK_STRUCT(sembuf, sys/sem.h, , AC_DEFINE(ACE_LACKS_SEMBUF_T))
+ACE_CHECK_STRUCT(sigaction, signal.h, , AC_DEFINE(ACE_LACKS_SIGACTION))
+ACE_CHECK_STRUCT(sigset_t, signal.h, , AC_DEFINE(ACE_LACKS_SIGSET))
+ACE_CHECK_STRUCT(utsname, sys/utsname.h, , AC_DEFINE(ACE_LACKS_UTSNAME_T))
+
+dnl Thanks to Konstantinos Margaritis <kmargar@cc.uoa.gr> for pointing out
+dnl that struct siginfo_t may also be defined in signal.h
+ACE_CACHE_CHECK(for struct siginfo_t, ace_cv_struct_siginfo_t,
+ [
+ dnl Since we are checking for siginfo_t in more than one header
+ dnl we can't use the ACE_CHECK_STRUCT macro so we have to do things
+ dnl manually.
+ ACE_TRY_COMPILE_STRUCT(siginfo_t, siginfo.h,
+ [
+ ace_cv_struct_siginfo_t=yes
+ ],
+ [
+ ACE_TRY_COMPILE_STRUCT(siginfo_t, signal.h,
+ [
+ ace_cv_struct_siginfo_t=yes
+ ],
+ [
+ ace_cv_struct_siginfo_t=no
+ ])
+ ])
+ ],
+ [
+ AC_DEFINE(ACE_HAS_SIGINFO_T)
+ ],)
+
+dnl Some platforms need to include sys/types.h before sys/socket.h
+dnl in order for struct msghdr to work.
+dnl Check for msghdr structure.
+ACE_CACHE_CHECK(for struct msghdr, ace_cv_struct_msghdr,
+ [
+ AC_TRY_COMPILE(
+ [
+#ifndef ACE_LACKS_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#include <sys/socket.h>
+ ],
+ [
+ struct msghdr ace_msghdr;
+ ],
+ [
+ ace_cv_struct_msghdr=yes
+ ],
+ [
+ ace_cv_struct_msghdr=no
+ ])
+ ], AC_DEFINE(ACE_HAS_MSG),)
+
+ACE_CACHE_CHECK(for condition variable support, ace_cv_struct_cond_t,
+ [
+ AC_TRY_COMPILE(
+ [
+#include <pthread.h>
+ ],
+ [
+ pthread_cond_t ace_pthread_cond_t;
+ ],
+ [
+ ace_cv_struct_cond_t=yes
+ ],
+ [
+ AC_TRY_COMPILE(
+ [
+#include <synch.h>
+ ],
+ [
+ cond_t ace_cond_t;
+ ],
+ [
+ ace_cv_struct_cond_t=yes
+ ],
+ [
+ ace_cv_struct_cond_t=no
+ ])
+ ])
+ ], , AC_DEFINE(ACE_LACKS_COND_T))
+
+dnl Check for struct timespec
+ACE_CACHE_CHECK(for POSIX timer structure,
+ ace_cv_lib_posix_timer_struct,[
+ AC_TRY_COMPILE(
+ [
+#include <time.h>
+
+#if defined(ACE_LACKS_SYSTIME_H)
+# include <sys/time.h>
+#endif
+ ],
+ [
+ timespec sr;
+ ],
+ [
+ ace_cv_lib_posix_timer_struct=yes
+ ],
+ [
+ dnl Check if platform uses struct timestruc_t for POSIX timers
+ dnl instead of struct timespec.
+ AC_TRY_COMPILE(
+ [
+#include <time.h>
+
+#if defined(ACE_LACKS_SYSTIME_H)
+# include <sys/time.h>
+#endif
+ ],
+ [
+ timestruc_t sr;
+ ],
+ [
+ ace_cv_lib_posix_timer_struct=yes
+ dnl Check for struct timespec in <sys/timers.h>
+ ACE_CACHE_CHECK(for struct timespec in sys/timers.h,
+ ace_cv_lib_posix_struct_timespec_broken,[
+ AC_TRY_COMPILE(
+ [
+#include <sys/timers.h>
+ ],
+ [
+ timespec sr;
+ ],
+ [
+ ace_cv_lib_posix_struct_timespec_broken=yes
+ ],
+ [
+ ace_cv_lib_posix_struct_timespec_broken=no
+ ])
+ ], AC_DEFINE(ACE_HAS_BROKEN_POSIX_TIME),)
+ ],
+ [
+ ace_cv_lib_posix_timer_struct=no
+ ])
+ ])
+ ],
+ [
+ AC_DEFINE(ACE_HAS_POSIX_TIME)
+ if test "$ace_cv_lib_posix_struct_timespec_broken" = yes; then
+ AC_DEFINE(ACE_HAS_BROKEN_POSIX_TIME)
+ fi
+ ],
+ [
+ dnl Check for struct timespec in <sys/timers.h>
+ ACE_CACHE_CHECK(for struct timespec in sys/timers.h,
+ ace_cv_lib_posix_struct_timespec_broken,[
+ AC_TRY_COMPILE(
+ [
+#include <sys/timers.h>
+ ],
+ [
+ timespec sr;
+ ],
+ [
+ ace_cv_lib_posix_struct_timespec_broken=yes
+ ],
+ [
+ ace_cv_lib_posix_struct_timespec_broken=no
+ ])
+ ], AC_DEFINE(ACE_HAS_BROKEN_POSIX_TIME),)
+ ])
+
+dnl Check for typedef timespec_t
+dnl TODO: Check whether this typedef can be defined somewhere else.
+ACE_CACHE_CHECK(for timespec_t,
+ ace_cv_lib_posix_timespec_t,[
+ AC_TRY_COMPILE(
+ [
+#include <time.h>
+
+#if defined(ACE_LACKS_SYSTIME_H)
+# include <sys/time.h>
+#endif
+ ],
+ [
+ timespec_t tt;
+ ],
+ [
+ ace_cv_lib_posix_timespec_t=yes
+ ],
+ [
+ ace_cv_lib_posix_timespec_t=no
+ ])
+], , AC_DEFINE(ACE_LACKS_TIMESPEC_T))
+
+dnl Check for union semun
+ACE_CACHE_CHECK(for union semun,
+ ace_cv_lib_posix_defines_union_semun,[
+ AC_TRY_COMPILE(
+ [
+#ifndef ACE_LACKS_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#include <sys/sem.h>
+ ],
+ [
+ semun us;
+ ],
+ [
+ ace_cv_lib_posix_defines_union_semun=yes
+ ],
+ [
+ ace_cv_lib_posix_defines_union_semun=no
+ ])
+], AC_DEFINE(ACE_HAS_SEMUN),)
+
+dnl
+dnl SECTION 8: checks for variables
+dnl
+
+dnl Check for broken struct timespec members
+ACE_CACHE_CHECK(for broken struct timespec members,
+ ace_cv_lib_broken_timespec,
+ [
+ AC_TRY_COMPILE(
+ [
+#include <time.h>
+
+#if defined(ACE_LACKS_SYSTIME_H)
+# include <sys/time.h>
+#endif
+ ],
+ [
+ timespec sr;
+ sr.ts_sec = 0;
+ sr.ts_nsec = 0;
+ ],
+ [
+ ace_cv_lib_broken_timespec=yes
+ ],
+ [
+ ace_cv_lib_broken_timespec=no
+ ])
+ ], AC_DEFINE(ACE_HAS_BROKEN_TIMESPEC_MEMBERS),)
+
+dnl Check for more than two fields in struct rusage
+ACE_CACHE_CHECK(for limited struct rusage,
+ ace_cv_lib_limited_rusage,[
+ AC_TRY_COMPILE(
+ [
+#include <sys/resource.h>
+ ],
+ [
+ rusage ace_rusage;
+ /*
+ We just pick three (i.e. > 2) of the fields that
+ ACE uses to see if we have a struct rusage that
+ has more than two fields.
+ */
+ ace_rusage.ru_ixrss = 0;
+ ace_rusage.ru_idrss = 0;
+ ace_rusage.ru_isrss = 0;
+ ],
+ [
+ ace_cv_lib_limited_rusage=no
+ ],
+ [
+ ace_cv_lib_limited_rusage=yes
+ ])
+], AC_DEFINE(ACE_HAS_LIMITED_RUSAGE_T),)
+
+if test "$ace_cv_struct_siginfo_t" = yes; then
+ dnl Check for si_addr member in struct siginfo_t
+ ACE_CACHE_CHECK(for si_addr member in struct siginfo_t,
+ ace_cv_lib_posix_si_addr,[
+ AC_TRY_COMPILE(
+ [
+#ifndef ACE_LACKS_SIGINFO_H
+# include <siginfo.h>
+#endif
+#include <signal.h>
+ ],
+ [
+ siginfo_t acesig;
+ acesig.si_addr = 0;
+ ],
+ [
+ ace_cv_lib_posix_si_addr=yes
+ ],
+ [
+ ace_cv_lib_posix_si_addr=no
+ ])
+ ], , AC_DEFINE(ACE_LACKS_SI_ADDR))
+fi dnl test "$ace_cv_struct_siginfo_t" = yes
+
+dnl Check for sin_len member in struct sockaddr_in
+ACE_CACHE_CHECK(for sin_len member in struct sockaddr_in,
+ ace_cv_lib_has_sin_len,[
+ AC_TRY_COMPILE(
+ [
+#ifndef ACE_LACKS_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+qQqq#include <netinet/in.h>
+ ],
+ [
+ sockaddr_in ace_sin;
+ ace_sin.sin_len = sizeof(ace_sin);
+ ],
+ [
+ ace_cv_lib_has_sin_len=yes
+ ],
+ [
+ ace_cv_lib_has_sin_len=no
+ ])
+], AC_DEFINE(ACE_HAS_SIN_LEN),)
+
+dnl Check for sys_siglist
+dnl TODO: Check whether this variable can be defined somewhere else.
+dnl [OSSAMA: Should we use autoconf's AC_DECL_SYS_SIGLIST test instead?]
+ACE_CACHE_CHECK(for sys_siglist,
+ ace_cv_lib_posix_sys_siglist,[
+ AC_TRY_COMPILE(
+ [
+#ifndef ACE_LACKS_UNISTD_H
+# include <unistd.h>
+#endif
+#include <signal.h>
+#if !defined (_sys_siglist)
+# define _sys_siglist sys_siglist
+#endif
+ ],
+ [
+ void* vp = (void*) &_sys_siglist;
+ ],
+ [
+ ace_cv_lib_posix_sys_siglist=yes
+ ],
+ [
+ ace_cv_lib_posix_sys_siglist=no
+ ])
+], AC_DEFINE(ACE_HAS_SYS_SIGLIST),)
+
+dnl Check for sys_errlist
+dnl TODO: Check whether this variable can be defined somewhere else.
+ACE_CACHE_CHECK(for sys_errlist,
+ ace_cv_lib_posix_sys_errlist,[
+ AC_TRY_COMPILE(
+ [
+#include <stdio.h>
+#include <errno.h>
+#if !defined (_sys_errlist)
+# define _sys_errlist sys_errlist
+#endif
+ ],
+ [
+ void* vp = (void*) &_sys_errlist;
+ ],
+ [
+ ace_cv_lib_posix_sys_errlist=yes
+ ],
+ [
+ ace_cv_lib_posix_sys_errlist=no
+ ])
+], AC_DEFINE(ACE_HAS_SYS_ERRLIST),)
+
+dnl Check for sys_nerr
+dnl TODO: Check whether this variable can be defined somewhere else.
+ACE_CACHE_CHECK(for sys_nerr in headers,
+ ace_cv_lib_posix_sys_nerr,[
+ AC_TRY_COMPILE(
+ [
+#include <stdio.h>
+#include <errno.h>
+#if !defined (_sys_nerr)
+# define _sys_nerr sys_nerr
+#endif
+ ],
+ [
+ void* vp = (void*) &_sys_nerr;
+ ],
+ [
+ ace_cv_lib_posix_sys_nerr=yes
+ ],
+ [
+ ace_cv_lib_posix_sys_nerr=no
+ ])
+ ],
+ [
+ dnl Do nothing
+ ],
+ [
+ AC_CHECK_FUNC(sys_nerr,,
+ AC_DEFINE(ACE_LACKS_SYS_NERR))
+ ])
+
+dnl
+dnl SECTION 9: checks for compiler characteristics
+dnl
+
+dnl Check if compiler accepts "#pragma once" directive
+ACE_CONVERT_WARNINGS_TO_ERRORS([
+ ACE_CACHE_CHECK(if compiler accepts \"pragma once\" directive,
+ ace_cv_has_pragma_once,
+ [
+ AC_TRY_COMPILE(
+ [
+#pragma once
+ ],
+ [
+ int a = 0; /* Put this here so we don't have an empty main(). */
+ ],
+ [
+ ace_cv_has_pragma_once=yes
+ ],
+ [
+ ace_cv_has_pragma_once=no
+ ])
+ ], , AC_DEFINE(ACE_LACKS_PRAGMA_ONCE))
+]) dnl ACE_CONVERT_WARNINGS_TO_ERRORS
+
+dnl If we are using GNU C++, see if it accepts the -pipe compiler flag.
+dnl "-pipe" on cygwin32 doesn't seem to work, for example.
+if test -n "$GXX"; then
+ PREPIPECXXFLAGS="$CXXFLAGS"
+ CXXFLAGS="$CXXFLAGS -pipe"
+ PREPIPECFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -pipe"
+ ACE_CACHE_CHECK(if \"-pipe\" compiler flag is supported,
+ ace_cv_feature_gxx_has_pipe,
+ [
+ AC_TRY_COMPILE(, [int a = 0;],
+ [
+ ace_cv_feature_gxx_has_pipe=yes
+ ],
+ [
+ ace_cv_feature_gxx_has_pipe=no
+ ])
+ ],
+ [
+ dnl We don't need to add "-pipe" here since it was already added
+ dnl for the test.
+ dnl CXXFLAGS="$PREPIPECXXFLAGS -pipe"
+ dnl CFLAGS="$PREPIPECFLAGS -pipe"
+ ],
+ [
+ CXXFLAGS="$PREPIPECXXFLAGS"
+ CFLAGS="$PREPIPECFLAGS"
+ ])
+fi
+
+dnl Check for working "const"
+dnl This test doesn't always work.
+dnl AC_C_CONST
+
+dnl Check for working "inline"
+AC_C_INLINE
+if test "$ac_cv_c_inline" = no; then
+ AC_DEFINE(ACE_LACKS_INLINE_FUNCTIONS)
+fi
+
+dnl Check to see if we are running on a big endian platform
+dnl "ace/Basic_Types.h" should perhaps be modified to take advantage
+dnl of the results of this test.
+dnl Do not run this test if we are using a cross-compiler.
+if test "$cross_compiling" != yes; then
+ AC_C_BIGENDIAN
+fi
+
+dnl Check type sizes
+dnl If we get a size of zero, then the type is unknown to the compiler.
+
+dnl We don't need to check for sizeof(char) right now. Also conflicts with
+dnl ACE definition in Basic_Types.h, so we leave the test out.
+if test "$cross_compiling" != yes; then
+ dnl AC_CHECK_SIZEOF(char, 1)
+ dnl if test "$ac_cv_sizeof_char" != "0"; then
+ dnl AC_DEFINE(ACE_SIZEOF_CHAR, SIZEOF_CHAR)
+ dnl fi
+ AC_CHECK_SIZEOF(short, 2)
+ if test $ac_cv_sizeof_short != 0; then
+ AC_DEFINE_UNQUOTED(ACE_SIZEOF_SHORT, $ac_cv_sizeof_short)
+ fi
+ AC_CHECK_SIZEOF(int, 4)
+ if test $ac_cv_sizeof_int != 0; then
+ AC_DEFINE_UNQUOTED(ACE_SIZEOF_INT, $ac_cv_sizeof_int)
+ fi
+ AC_CHECK_SIZEOF(long, 4)
+ if test $ac_cv_sizeof_long != 0; then
+ AC_DEFINE_UNQUOTED(ACE_SIZEOF_LONG, $ac_cv_sizeof_long)
+ fi
+ AC_CHECK_SIZEOF(long long, 8)
+ if test $ac_cv_sizeof_long_long != 0; then
+ AC_DEFINE_UNQUOTED(ACE_SIZEOF_LONG_LONG, $ac_cv_sizeof_long_long)
+ else
+ AC_DEFINE(ACE_LACKS_LONGLONG_T)
+ fi
+ AC_CHECK_SIZEOF(void *, 4)
+ if test $ac_cv_sizeof_void_p != 0; then
+ AC_DEFINE_UNQUOTED(ACE_SIZEOF_VOID_P, $ac_cv_sizeof_void_p)
+ fi
+ AC_CHECK_SIZEOF(float, 4)
+ if test $ac_cv_sizeof_float != 0; then
+ AC_DEFINE_UNQUOTED(ACE_SIZEOF_FLOAT, $ac_cv_sizeof_float)
+ else
+ AC_DEFINE(ACE_LACKS_FLOATING_POINT)
+ fi
+ AC_CHECK_SIZEOF(double, 8)
+ if test $ac_cv_sizeof_double != 0; then
+ AC_DEFINE_UNQUOTED(ACE_SIZEOF_DOUBLE, $ac_cv_sizeof_double)
+ else
+ AC_DEFINE(ACE_LACKS_FLOATING_POINT)
+ fi
+ AC_CHECK_SIZEOF(long double, 16)
+ if test $ac_cv_sizeof_long_double != 0; then
+ AC_DEFINE_UNQUOTED(ACE_SIZEOF_LONG_DOUBLE, $ac_cv_sizeof_long_double)
+ fi
+
+ dnl Set the 64 bit unsigned int typedef
+ ACE_UINT64=""
+ dnl if test "$ace_cv_type_u_longlong_t" = yes; then
+ dnl This doesn't work: AC_CHECK_SIZEOF(u_longlong_t, 8)
+ dnl if test $ac_cv_sizeof_u_longlong_t = 8; then
+ dnl ACE_UINT64="u_longlong_t"
+ dnl ace_u_long_long_typedef_set=yes
+ dnl fi
+ dnl elif test $ac_cv_sizeof_long = 8; then
+ if test $ac_cv_sizeof_long = 8; then
+ ACE_UINT64="unsigned long"
+ ace_u_long_long_typedef_set=yes
+ elif test $ac_cv_sizeof_long_long = 8; then
+ ACE_UINT64="unsigned long long"
+ ace_u_long_long_typedef_set=yes
+ else
+ ace_u_long_long_typedef_set=no
+ fi
+
+ dnl Check for broken "signed char"
+ dnl If AC_CHECK_SIZEOF(signed char) returns zero then "signed char"
+ dnl is broken.
+ AC_CHECK_SIZEOF(signed char, 1)
+ if test $ac_cv_sizeof_signed_char = 0; then
+ AC_DEFINE(ACE_LACKS_SIGNED_CHAR)
+ fi
+fi dnl test "$cross_compiling" != yes
+
+dnl Other checks
+
+dnl Check if we have working C++ explicit template destructors
+dnl Thanks to Nanbor Wang <nanbor@cs.wustl.edu> for providing this test.
+ACE_CACHE_CHECK(for working C++ explicit template destructors,
+ ace_cv_feature_working_explicit_des,
+ [
+ AC_TRY_COMPILE([
+#include <iostream.h>
+
+class dyn
+{
+ public:
+ dyn () { cout << "dyn" << endl; }
+ ~dyn () { cout << "~dyn" << endl; }
+};
+
+template <class T>
+class Base
+{
+ public:
+ Base () { cout << "Base" << endl; }
+ virtual void f (void) { cout << "Base::f" << endl; }
+ ~Base () { cout << "~Base" << endl; }
+};
+
+template <class T>
+class Derived
+{
+ public:
+ Derived ()
+ {
+ x_ = new Base<T> (); cout << "Derived" << endl ;
+ }
+ virtual void f (void) { cout << "Derived::f" << endl; }
+ ~Derived () { x_->~Base (); cout << "~Derived" << endl; }
+ private:
+ Base<T> *x_;
+ T t_;
+};
+ ],
+ [
+ Derived<dyn> *x = new Derived<dyn> ();
+
+ x->f ();
+
+ delete x;
+ return 0;
+ ],
+ [
+ ace_cv_feature_working_explicit_des=yes
+ ],
+ [
+ ace_cv_feature_working_explicit_des=no
+ ])
+ ], AC_DEFINE(ACE_HAS_WORKING_EXPLICIT_TEMPLATE_DESTRUCTOR),)
+
+dnl Checkfor C++ "using" keyword support
+ACE_CACHE_CHECK(for C++ \"using\" keyword support,
+ ace_cv_feature_cxx_using_keyword,
+ [
+ AC_TRY_COMPILE([
+#include <iostream.h>
+ ],
+ [
+ using namespace std;
+ ],
+ [
+ ace_cv_feature_cxx_using_keyword=yes
+ ],
+ [
+ ace_cv_feature_cxx_using_keyword=no
+ ])
+ ], AC_DEFINE(ACE_HAS_USING_KEYWORD),)
+
+dnl Check for C++ standard namespace
+ACE_CACHE_CHECK(for C++ standard namespace,
+ ace_cv_feature_posix_uses_std_namespace,[
+ AC_TRY_COMPILE([
+#include <vector.h>
+ ],
+ [
+ std::vector< int > iv;
+ ],
+ [
+ ace_cv_feature_posix_uses_std_namespace=yes
+ ],
+ [
+ ace_cv_feature_posix_uses_std_namespace=no
+ ])
+ ], AC_DEFINE(ACE_USES_STD_NAMESPACE_FOR_STDCPP_LIB),)
+
+dnl Check for new style C++ include file support
+ACE_CACHE_CHECK(for new style C++ include file support,
+ ace_cv_lib_posix_standard_includes,[
+ ace_cv_lib_posix_standard_includes=no
+ if test "$ace_cv_feature_posix_uses_std_namespace" = yes; then
+ AC_TRY_COMPILE(
+ [
+#include <string>
+ ],
+ [
+ std::string str;
+ ],
+ ace_cv_lib_posix_standard_includes=yes)
+ else
+ AC_TRY_COMPILE(
+ [
+#include <string>
+ ],
+ [
+ string str;
+ ],
+ ace_cv_lib_posix_standard_includes=yes)
+ fi
+ ],
+ [
+ AC_DEFINE(ACE_HAS_STDCPP_STL_INCLUDES)
+ AC_DEFINE(ACE_HAS_STRING_CLASS)
+ ],)
+
+dnl Check for ANSI C++ cast support
+ACE_CACHE_CHECK(for ANSI C++ cast support,
+ ace_cv_lib_posix_standard_casts,[
+ AC_TRY_COMPILE(
+ [/* No headers */],
+ [
+ class B { public: int b_; virtual int b() const = 0; };
+ class D : public B { virtual int b() const { return b_; } };
+
+ void* vp = 0;
+ char* cp = 0;
+ float f = 1.0;
+ int i = 0;
+ int* ip = 0;
+ const int* jp = 0;
+
+ i = static_cast<int> (f);
+ ip = const_cast<int*> (jp);
+ cp = reinterpret_cast<char*> (vp);
+
+ B* bp = new D;
+ D* dp = dynamic_cast<D*> (bp);
+ delete bp;
+ ],
+ [
+ ace_cv_lib_posix_standard_casts=yes
+ AC_CACHE_VAL(ace_cv_lib_rtti, ace_cv_lib_rtti=yes)
+ ],
+ [
+ AC_TRY_COMPILE(
+ [/* No headers */],
+ [
+ class B { public: int b_; virtual int b() const = 0; };
+ class D : public B { virtual int b() const { return b_; } };
+
+ void* vp = 0;
+ char* cp = 0;
+ float f = 1.0;
+ int i = 0;
+ int* ip = 0;
+ const int* jp = 0;
+
+ i = static_cast<int> (f);
+ ip = const_cast<int*> (jp);
+ cp = reinterpret_cast<char*> (vp);
+ ],
+ [
+ ace_cv_lib_posix_standard_casts=yes
+ AC_CACHE_VAL(ace_cv_lib_rtti, ace_cv_lib_rtti=no)
+ ],
+ [
+ ace_cv_lib_posix_standard_casts=no
+ ])
+ ])
+ ],
+ [
+ AC_DEFINE(ACE_HAS_ANSI_CASTS)
+ if test "$ace_cv_lib_rtti" = no; then
+ AC_DEFINE(ACE_LACKS_RTTI)
+ fi
+ ],)
+
+dnl Check if platform supports explicit template instantiation
+ACE_CACHE_CHECK(if platform supports explicit template instantiation,
+ ace_cv_feature_explicit_template_instantiation,[
+ AC_TRY_COMPILE([
+ template <class T>
+ class Foo
+ {
+ public:
+ Foo(T bar) : bar_(bar) {};
+ private:
+ T bar_;
+ };
+ template class Foo<int>;
+ ],
+ [
+ Foo<int> foo(11);
+ ],
+ [
+ ace_cv_feature_explicit_template_instantiation=yes
+ ],
+ [
+ ace_cv_feature_explicit_template_instantiation=no
+ ])
+ ],
+ [
+ AC_DEFINE(ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
+ ],
+ [
+ ACE_CACHE_CHECK(if platform supports pragma template instantiation,
+ ace_cv_feature_pragma_template_instantiation,[
+ AC_TRY_COMPILE([
+ template <class T>
+ class Foo
+ {
+ public:
+ Foo(T bar) : bar_(bar) {};
+ private:
+ T bar_;
+ };
+#pragma instantiate Foo<int>;
+ ],
+ [
+ Foo<int> foo(11);
+ ],
+ [
+ ace_cv_feature_pragma_template_instantiation=yes
+ ],
+ [
+ ace_cv_feature_pragma_template_instantiation=no
+ ])
+ ], AC_DEFINE(ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA),)
+ ])
+
+dnl Check if templates require source on platform
+dnl FIXME: This test may be broken.
+ACE_CACHE_CHECK(if templates require source on platform,
+ ace_cv_feature_templates_require_source,[
+ AC_TRY_LINK([
+/*
+#include "config/trs.h"
+*/
+ ],
+ [
+ Foo<int> foo(15);
+ ],
+ [
+ ace_cv_feature_templates_require_source=no
+ ],
+ [
+ ace_cv_feature_templates_require_source=yes
+ ])
+ ],
+ [
+ AC_DEFINE(ACE_TEMPLATES_REQUIRE_SOURCE)
+ ],)
+AM_CONDITIONAL(TEMPLATES_REQUIRE_SOURCE,
+ test X$ace_cv_feature_templates_require_source = Xyes)
+
+dnl Check if platform supports template specialization
+ACE_CACHE_CHECK(if platform supports template specialization,
+ ace_cv_feature_posix_template_specialization,[
+ AC_TRY_COMPILE([
+ template <class T>
+ class Foo
+ {
+ public:
+ Foo(T bar) : bar_(bar) {};
+ private:
+ T bar_;
+ };
+ class Foo<int>
+ {
+ public:
+ Foo(int bar) : bar_(bar + 1) {};
+ private:
+ int bar_;
+ };
+ ],
+ [
+ Foo<int> foo(11);
+ ],
+ [
+ ace_cv_feature_posix_template_specialization=yes
+ ],
+ [
+ ace_cv_feature_posix_template_specialization=no
+ ])
+ ], AC_DEFINE(ACE_HAS_TEMPLATE_SPECIALIZATION),)
+
+dnl Check if platform supports typename keyword
+ACE_CACHE_CHECK(if platform supports typename keyword,
+ ace_cv_feature_posix_typename_keyword,[
+ AC_TRY_COMPILE([
+ class Bar
+ {
+ public:
+ typedef int Y;
+ Bar(int bar) : bar_(bar) {}
+ private:
+ int bar_;
+ };
+
+ template <class T>
+ class Foo
+ {
+ public:
+ typedef typename T::Y Y;
+ Foo(T* foo) : foo_(foo) {}
+ void bilbo(typename T::Y y);
+ private:
+ T* foo_;
+ };
+
+ template <class T>
+ void Foo<T>::bilbo(typename T::Y y)
+ {
+ }
+ ],
+ [
+ Bar bar(15);
+ Foo<Bar> foo(&bar);
+ foo.bilbo(10);
+ ],
+ [
+ ace_cv_feature_posix_typename_keyword=yes
+ ],
+ [
+ ace_cv_feature_posix_typename_keyword=no
+ ])
+ ], AC_DEFINE(ACE_HAS_TYPENAME_KEYWORD),)
+
+dnl Check if platform supports template typedefs
+ACE_CACHE_CHECK(if platform supports template typedefs,
+ ace_cv_feature_posix_template_typedefs,[
+ AC_TRY_COMPILE([
+#if defined (ACE_HAS_TYPENAME_KEYWORD)
+#define TYPENAME typename
+#else
+#define TYPENAME
+#endif
+
+ class Bar
+ {
+ public:
+ typedef int Y;
+ Bar(int bar) : bar_(bar) {}
+ int value() const { return bar_; }
+ private:
+ int bar_;
+ };
+
+ template <class T>
+ class Foo
+ {
+ public:
+ typedef TYPENAME T::Y Y;
+ Foo(T* foo) : foo_(foo) {}
+ void print(Y y);
+ private:
+ T* foo_;
+ };
+
+ template <class T>
+ void Foo<T>::print(TYPENAME T::Y y)
+ {
+ }
+ ],
+ [
+ Bar bar(15);
+ Foo<Bar> foo(&bar);
+ foo.print(11);
+ ],
+ [
+ ace_cv_feature_posix_template_typedefs=yes
+ ],
+ [
+ ace_cv_feature_posix_template_typedefs=no
+ ])
+ ], AC_DEFINE(ACE_HAS_TEMPLATE_TYPEDEFS),)
+
+dnl Check if platform supports static data member templates
+ACE_CACHE_CHECK(if platform supports static data member templates,
+ ace_cv_feature_posix_static_data_member_templates,[
+ AC_TRY_COMPILE([
+ template <class T>
+ class Foo
+ {
+ public:
+ static T* sdm;
+ };
+ template <class T> T* Foo<T>::sdm = 0;
+ ],
+ [
+ /* No body */
+ ],
+ [
+ ace_cv_feature_posix_static_data_member_templates=yes
+ ],
+ [
+ ace_cv_feature_posix_static_data_member_templates=no
+ ])
+ ], ,AC_DEFINE(ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES))
+
+dnl if platform supports C++ exceptions
+if test "$ace_user_enable_exceptions" = yes; then
+ ACE_CACHE_CHECK(if platform supports C++ exceptions,
+ ace_cv_feature_posix_exceptions,[
+ AC_TRY_COMPILE(,
+ [
+ int ret = 0;
+ class ACE {};
+ try
+ {
+ throw ACE();
+ }
+ catch (ACE)
+ {
+ ret = 1;
+ }
+ ],
+ [
+ ace_cv_feature_posix_exceptions=yes
+ ],
+ [
+ ace_cv_feature_posix_exceptions=no
+ ])
+ ], AC_DEFINE(ACE_HAS_EXCEPTIONS), ace_user_enable_exceptions=no)
+
+fi dnl test "$ace_user_enable_exceptions" = yes
+
+dnl Check if we need a non-static object manager
+dnl TODO / FIXME
+dnl ACE_CACHE_CHECK(if we need a non-static object manager,
+dnl ace_cv_feature_nonstatic_object_manager,[
+dnl ace_cv_feature_nonstatic_object_manager=yes
+ dnl TODO: Should we check for this thing (and HOW), or
+ dnl should it be the user's choice?
+ dnl
+ dnl For now, we will leave it as a user's choice.
+ dnl -Ossama
+dnl ],
+dnl [
+ dnl Don't define anything until we have a test for this.
+ dnl AC_DEFINE(ACE_HAS_NONSTATIC_OBJECT_MANAGER)
+dnl ],)
+
+dnl Check whether platform supports the standard C++ library
+dnl TODO: For now, check whether headers <new> and <iomanip>
+dnl and <auto_ptr> exist; is there a better way?
+if test "$ac_cv_header_new" = yes &&
+ test "$ac_cv_header_iomanip" = yes &&
+ test "$ac_cv_header_auto_ptr" = yes; then
+ AC_DEFINE(ACE_HAS_STANDARD_CPP_LIBRARY)
+fi
+
+
+dnl
+dnl SECTION 10: checks for library functions
+dnl
+
+AC_FUNC_ALLOCA
+if test "$ac_cv_header_alloca_h" = yes; then
+ AC_DEFINE(ACE_HAS_ALLOCA_H)
+fi
+if test "$ac_cv_func_alloca_works" = yes; then
+ AC_DEFINE(ACE_HAS_ALLOCA)
+fi
+
+dnl ACE should really have something for both the sys/mman.h header
+dnl and the mmap function since we need sys/mman.h for functions like
+dnl mprotect and msync, but don't want to use mmap if it doesn't work.
+dnl For now, we just check for the sys/mman.h header earlier in this
+dnl configure script.
+dnl
+dnl AC_FUNC_MMAP
+dnl if test "$ac_cv_func_mmap_fixed_mapped" = no; then
+dnl Even if we have mmap, do not use if broken!
+dnl AC_DEFINE(ACE_LACKS_MMAP)
+dnl fi
+
+dnl Check if closedir() returns a meaningful value
+AC_FUNC_CLOSEDIR_VOID
+
+dnl Check for PWD functions
+AC_CHECK_FUNC(getpwnam,,) dnl
+AC_CHECK_FUNC(setpwent,,) dnl
+AC_CHECK_FUNC(endpwent,,) dnl
+AC_CHECK_FUNC(getpwent,,) dnl
+
+if test "$ac_cv_func_getpwnam" != yes ||
+ test "$ac_cv_func_setpwent" != yes ||
+ test "$ac_cv_func_endpwent" != yes ||
+ test "$ac_cv_func_getpwent" != yes; then
+ AC_DEFINE(ACE_LACKS_PWD_FUNCTIONS)
+fi
+
+dnl Check for `strftime' in the `intl' library, for SCO UNIX
+AC_FUNC_STRFTIME
+
+case "$target" in
+ *win32*)
+ AC_CHECK_FUNC(CancelIO, dnl
+ AC_DEFINE(ACE_HAS_CANCEL_IO),)
+
+ AC_CHECK_FUNC(SignalObjectAndWait, dnl
+ AC_DEFINE(ACE_HAS_SIGNAL_OBJECT_AND_WAIT),)
+
+ AC_CHECK_FUNC(TryEnterCriticalSection, dnl
+ AC_DEFINE(ACE_HAS_WIN32_TRYLOCK),)
+ ;;
+ *)
+ ;;
+esac
+
+AC_CHECK_FUNC(access, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_ACCESS))
+
+AC_CHECK_FUNC(bsearch, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_BSEARCH))
+
+AC_CHECK_FUNC(qsort, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_QSORT))
+
+dnl ACE uses execv, execvp and execve, so we don't bother to check
+dnl for the others (e.g. execl, execlp, execle)
+AC_CHECK_FUNCS(execv execvp execve, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_EXEC))
+
+AC_CHECK_FUNC(fcntl, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_FCNTL))
+
+AC_CHECK_FUNC(fsync, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_FSYNC))
+
+dnl TODO: Right now we only check for the getmsg() function when checking
+dnl for ACE_HAS_STREAM_PIPES. Is this enough?
+AC_CHECK_FUNC(getmsg, dnl
+ AC_DEFINE(ACE_HAS_STREAM_PIPES),)
+
+AC_CHECK_FUNC(gethostbyaddr,,) dnl
+
+dnl We already check for getservbyname during the library checks.
+dnl AC_CHECK_FUNC(getservbyname, dnl
+dnl ,
+dnl AC_DEFINE(ACE_LACKS_GETSERVBYNAME))
+
+AC_CHECK_FUNC(difftime, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_DIFFTIME))
+
+AC_CHECK_FUNC(bind, dnl
+ [
+ ACE_CACHE_CHECK(if bind() will select the port if it is zero,
+ ace_cv_have_wildcard_bind,
+ [
+ AC_TRY_RUN(
+ [
+#ifndef ACE_LACKS_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <string.h> /* for memset() */
+
+ int main () {
+
+ int sockfd = socket(AF_INET, SOCK_STREAM, 0);
+
+ sockaddr_in serv_addr;
+
+ (void) memset ((void *) &serv_addr, 0, sizeof(serv_addr));
+
+ serv_addr.sin_family = AF_INET;
+ serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
+ serv_addr.sin_port = 0;
+
+ return bind (sockfd, (struct sockaddr *) &serv_addr,
+ sizeof(serv_addr));
+ }
+ ],
+ [
+ ace_cv_have_wildcard_bind=yes
+ ],
+ [
+ ace_cv_have_wildcard_bind=no
+ ],
+ [
+ dnl action if cross-compiling
+ ace_cv_have_wildcard_bind=yes
+ ])
+ ],, AC_DEFINE(ACE_LACKS_WILDCARD_BIND))
+ ],)
+
+AC_CHECK_FUNC(poll, dnl
+ [
+ ACE_CACHE_CHECK(if poll is broken,
+ ace_cv_poll_is_broken,
+ [
+ AC_TRY_RUN(
+ [
+#include <poll.h>
+#include <time.h>
+
+#ifdef ACE_LACKS_SYSTIME_H
+# include <sys/time.h>
+#endif
+
+ int main () {
+
+ int timeout = 2000; /* 2000 milliseconds */
+ int timeout_arg = timeout;
+ /* poll() modifies timeout argument on some platforms */
+
+ int result = 0;
+
+ time_t *t = 0;
+
+ time_t time1 = time(t);
+
+ result = poll(0, 0, timeout_arg);
+
+ time_t time2 = time(t);
+ time_t diff = time2 - time1;
+
+ /* If (diff * 1000) < timeout then poll() is broken! */
+ if (result >= 0)
+ return (((diff * 1000) < timeout) ? 1 : 0);
+ else
+ return 1; /* We had a problem with poll() so we don't
+ know what really happened. */
+ }
+ ],
+ [
+ ace_cv_poll_is_broken=no
+ ],
+ [
+ ace_cv_poll_is_broken=yes
+ ],
+ [
+ dnl action if cross-compiling
+ ace_cv_poll_is_broken=no
+ ])
+ ], AC_DEFINE(ACE_POLL_IS_BROKEN), AC_DEFINE(ACE_USE_POLL))
+ ],)
+
+AC_CHECK_FUNC(gethrtime, dnl
+ [
+ ACE_CHECK_TYPE(hrtime_t, sys/time.h, AC_DEFINE(ACE_HAS_HI_RES_TIMER),)
+ ],)
+
+AC_CHECK_FUNC(pread, dnl
+ AC_CHECK_FUNC(pwrite,
+ AC_DEFINE(ACE_HAS_P_READ_WRITE),),
+ )
+
+AC_CHECK_FUNC(readv, , AC_DEFINE(ACE_LACKS_READV)) dnl
+
+AC_CHECK_FUNC(writev, , AC_DEFINE(ACE_LACKS_WRITEV)) dnl
+
+AC_CHECK_FUNC(set_t_errno, AC_DEFINE(ACE_HAS_SET_T_ERRNO),) dnl
+
+AC_CHECK_FUNC(socketpair, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_SOCKETPAIR))
+
+AC_CHECK_FUNC(strcasecmp, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_STRCASECMP))
+
+AC_CHECK_FUNC(strdup, dnl
+ ,
+ AC_DEFINE(ACE_HAS_STRDUP_EMULATION))
+
+AC_CHECK_FUNC(strrchr, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_STRRCHR))
+
+AC_CHECK_FUNC(syscall, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_SYSCALL))
+
+AC_CHECK_FUNC(ualarm, dnl
+ AC_DEFINE(ACE_HAS_UALARM),)
+
+AC_CHECK_FUNC(alarm,,) dnl
+AC_CHECK_FUNC(signal,,) dnl
+
+if test "$ac_cv_func_alarm" != yes &&
+ test "$ac_cv_func_signal" != yes; then
+ AC_DEFINE(ACE_LACKS_UNIX_SIGNALS)
+fi
+
+AC_CHECK_FUNC(clock_gettime, dnl
+ AC_DEFINE(ACE_HAS_CLOCK_GETTIME),)
+
+AC_CHECK_FUNC(fork, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_FORK))
+
+AC_CHECK_FUNC(getrlimit, dnl
+ [
+ AC_CHECK_FUNC(setrlimit,
+ ,
+ AC_DEFINE(ACE_LACKS_RLIMIT))
+ ],
+ [
+ AC_DEFINE(ACE_LACKS_RLIMIT)
+ ])
+
+AC_CHECK_FUNC(sysinfo, dnl
+ [
+ if test "$ac_cv_header_sys_systeminfo_h" = yes; then
+ AC_DEFINE(ACE_HAS_SYSINFO)
+ fi
+ ],)
+
+AC_CHECK_FUNC(strerror, dnl
+ AC_DEFINE(ACE_HAS_STRERROR),)
+
+AC_CHECK_FUNC(lstat, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_LSTAT))
+
+AC_CHECK_FUNC(readlink, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_READLINK))
+
+AC_CHECK_FUNC(recvmsg, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_RECVMSG))
+
+AC_CHECK_FUNC(sendmsg, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_SENDMSG))
+
+if test "$ace_has_tli" = yes; then
+ AC_CHECK_FUNC(t_getname, dnl
+ AC_DEFINE(ACE_HAS_SVR4_TLI),)
+fi
+
+AC_CHECK_FUNC(getrusage, dnl
+ AC_DEFINE(ACE_HAS_GETRUSAGE),)
+
+AC_CHECK_FUNC(getpgid, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_GETPGID))
+
+AC_CHECK_FUNC(getpagesize, dnl
+ AC_DEFINE(ACE_HAS_GETPAGESIZE),
+ AC_DEFINE(ACE_PAGE_SIZE, 4096))
+
+AC_CHECK_FUNC(msync, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_MSYNC))
+
+AC_CHECK_FUNC(mprotect, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_MPROTECT))
+
+AC_CHECK_FUNC(mkfifo, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_MKFIFO))
+
+AC_CHECK_FUNC(mktemp, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_MKTEMP))
+
+AC_CHECK_FUNC(madvise, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_MADVISE))
+
+if test "$ac_cv_header_sys_priocntl_h" = yes; then
+ AC_CHECK_FUNC(priocntl, dnl
+ AC_DEFINE(ACE_HAS_PRIOCNTL),)
+
+dnl Some platforms define priocntl as a macro!
+ if test "$ac_cv_func_priocntl" = no; then
+ ACE_CACHE_CHECK(if platform defines priocntl as a macro,
+ ace_cv_lib_has_priocntl_macro,
+ [
+ AC_EGREP_CPP(ACE_PRIOCNTL_MACRO,
+ [
+#include <sys/priocntl.h>
+
+#if defined (priocntl)
+ ACE_PRIOCNTL_MACRO
+#endif
+ ],
+ [
+ ace_cv_lib_has_priocntl_macro=yes
+ ],
+ [
+ ace_cv_lib_has_priocntl_macro=no
+ ])
+ ], AC_DEFINE(ACE_HAS_PRIOCNTL),)
+ fi dnl test "$ac_cv_func_priocntl" = no
+fi dnl test "$ac_cv_header_sys_priocntl_h" = yes
+
+dnl FIXME: How do we check for a working sbrk()? Do we need to?
+AC_CHECK_FUNC(sbrk,, AC_DEFINE(ACE_LACKS_SBRK))
+
+dnl Check for SYSV IPC functions
+AC_CHECK_FUNC(msgctl,,)
+
+AC_CHECK_FUNC(msgget,,)
+
+AC_CHECK_FUNC(msgrcv,,)
+
+AC_CHECK_FUNC(semctl,,)
+
+AC_CHECK_FUNC(semget,,)
+
+AC_CHECK_FUNC(semop,,)
+
+AC_CHECK_FUNC(shmat,,)
+
+AC_CHECK_FUNC(shmctl,,)
+
+AC_CHECK_FUNC(shmdt,,)
+
+AC_CHECK_FUNC(shmget,,)
+dnl End check for SYSV IPC functions
+
+AC_CHECK_FUNC(read_real_time, dnl
+ AC_DEFINE(ACE_HAS_AIX_HI_RES_TIMER),)
+
+AC_CHECK_FUNC(shm_open, dnl
+ [
+ AC_MSG_WARN(platform supports shm_open but shm_open support will not be)
+ AC_MSG_WARN(enabled since ACE currently supports it only on LynxOS)
+dnl AC_DEFINE(ACE_HAS_SHM_OPEN)
+ ],)
+
+AC_CHECK_FUNC(tempnam, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_TEMPNAM))
+
+AC_CHECK_FUNC(truncate, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_TRUNCATE))
+
+dnl Check for MIT pthreads APIs for timed send/recv operations
+AC_CHECK_FUNC(recv_timedwait, dnl
+ AC_DEFINE(ACE_HAS_RECV_TIMEDWAIT),)
+
+AC_CHECK_FUNC(recvfrom_timedwait, dnl
+ AC_DEFINE(ACE_HAS_RECVFROM_TIMEDWAIT),)
+
+AC_CHECK_FUNC(recvmsg_timedwait, dnl
+ AC_DEFINE(ACE_HAS_RECVMSG_TIMEDWAIT),)
+
+AC_CHECK_FUNC(send_timedwait, dnl
+ AC_DEFINE(ACE_HAS_SEND_TIMEDWAIT),)
+
+AC_CHECK_FUNC(sendto_timedwait, dnl
+ AC_DEFINE(ACE_HAS_SENDTO_TIMEDWAIT),)
+
+AC_CHECK_FUNC(sendmsg_timedwait, dnl
+ AC_DEFINE(ACE_HAS_SENDMSG_TIMEDWAIT),)
+
+AC_CHECK_FUNC(read_timedwait, dnl
+ AC_DEFINE(ACE_HAS_READ_TIMEDWAIT),)
+
+AC_CHECK_FUNC(readv_timedwait, dnl
+ AC_DEFINE(ACE_HAS_READV_TIMEDWAIT),)
+
+AC_CHECK_FUNC(write_timedwait, dnl
+ AC_DEFINE(ACE_HAS_WRITE_TIMEDWAIT),)
+
+AC_CHECK_FUNC(writev_timedwait, dnl
+ AC_DEFINE(ACE_HAS_WRITEV_TIMEDWAIT),)
+
+dnl Check for POSIX Semaphore functions
+dnl We only check for a few of them since some platforms don't have these.
+AC_CHECK_FUNC(sem_init,,) dnl
+AC_CHECK_FUNC(sem_destroy,,) dnl
+AC_CHECK_FUNC(sem_open,,) dnl
+AC_CHECK_FUNC(sem_close,,) dnl
+
+dnl We only enable POSIX semaphores if we are not using UNIX International
+dnl threads. Enabling POSIX semaphores on Solaris seems to cause problems
+dnl for ACE, for example.
+if test "$ac_cv_func_sem_init" = yes &&
+ test "$ac_cv_func_sem_destroy" = yes &&
+ test "$ace_cv_type_sem_t" = yes &&
+ test "$ace_has_sthreads" != yes; then
+ AC_DEFINE(ACE_HAS_POSIX_SEM)
+
+ if test "$ac_cv_func_sem_open" != yes ||
+ test "$ac_cv_func_sem_close" != yes; then
+ AC_DEFINE(ACE_LACKS_NAMED_POSIX_SEM)
+ fi
+fi dnl check for POSIX Semaphore functions
+
+dnl
+dnl The following tests are performed only when the user has enabled
+dnl support for threads.
+
+dnl NOTE: Make sure the thread library is in "LIBS"
+dnl (e.g.: LIBS="$LIBS -lpthread")
+dnl otherwise the below thread "CHECK_FUNCs"
+dnl will not work correctly.
+if test "$ace_user_enable_threads" = yes; then
+
+ if test "$ace_has_pthreads" = yes; then
+dnl Digital UNIX 4.0 "mangles" the following pthread functions:
+dnl pthread_attr_getguardsize_np
+dnl pthread_attr_getinheritsched
+dnl pthread_attr_getstacksize
+dnl pthread_attr_setguardsize_np
+dnl pthread_attr_setinheritsched
+dnl pthread_attr_setstacksize
+dnl pthread_cancel
+dnl pthread_cond_broadcast
+dnl pthread_cond_destroy
+dnl pthread_cond_init
+dnl pthread_cond_sig_preempt_int_np
+dnl pthread_cond_signal
+dnl pthread_cond_signal_int_np
+dnl pthread_cond_timedwait
+dnl pthread_cond_wait
+dnl pthread_create
+dnl pthread_delay_np
+dnl pthread_detach
+dnl pthread_equal
+dnl pthread_exit
+dnl pthread_get_expiration_np
+dnl pthread_getspecific
+dnl pthread_join
+dnl pthread_lock_global_np
+dnl pthread_mutex_destroy
+dnl pthread_mutex_init
+dnl pthread_mutex_lock
+dnl pthread_mutex_trylock
+dnl pthread_mutex_unlock
+dnl pthread_once
+dnl pthread_self
+dnl pthread_setspecific
+dnl pthread_testcancel
+dnl pthread_unlock_global_np
+dnl These functions have a double underscore "__" prepended to maintain
+dnl backwards compatibility with Pthread Draft 4 functions of the same
+dnl name.
+
+ AC_CHECK_FUNC(pthread_sigmask, dnl
+ AC_DEFINE(ACE_HAS_PTHREAD_SIGMASK),)
+
+ AC_CHECK_FUNC(pthread_key_create, dnl
+ AC_DEFINE(ACE_HAS_THREAD_SPECIFIC_STORAGE),
+ AC_DEFINE(ACE_HAS_TSS_EMULATION))
+
+ AC_CHECK_FUNC(pthread_condattr_setpshared, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_CONDATTR_PSHARED))
+
+ AC_CHECK_FUNC(pthread_attr_setstackaddr, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_THREAD_STACK_ADDR))
+
+ ACE_CHECK_FUNC(pthread_attr_setstacksize, pthread.h, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_THREAD_STACK_SIZE))
+
+ ACE_CHECK_FUNC(pthread_cancel, pthread.h, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_PTHREAD_CANCEL))
+
+ AC_CHECK_FUNC(pthread_yield, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_PTHREAD_YIELD))
+
+ AC_CHECK_FUNC(pthread_thr_sigsetmask, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_PTHREAD_THR_SIGSETMASK))
+
+ AC_CHECK_FUNC(pthread_attr_setdetachstate, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_SETDETACH))
+
+ AC_CHECK_FUNC(pthread_attr_setsched,, dnl
+ AC_CHECK_FUNC(pthread_attr_setschedpolicy,,
+ AC_DEFINE(ACE_LACKS_SETSCHED)))
+
+ AC_CHECK_FUNC(pthread_attr_setscope, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_THREAD_PROCESS_SCOPING))
+
+ AC_CHECK_FUNC(pthread_mutexattr_setpshared, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_MUTEXATTR_PSHARED))
+
+dnl Check for POSIX Threads Draft 4 functions
+ AC_CHECK_FUNC(pthread_mutexattr_create,,) dnl
+ AC_CHECK_FUNC(pthread_mutexattr_delete,,) dnl
+ AC_CHECK_FUNC(pthread_condattr_delete,,) dnl
+ AC_CHECK_FUNC(pthread_condattr_create,,) dnl
+ AC_CHECK_FUNC(pthread_setprio,,) dnl
+ AC_CHECK_FUNC(pthread_getprio,,) dnl
+ AC_CHECK_FUNC(pthread_setcancel,,) dnl
+ AC_CHECK_FUNC(pthread_setasynccancel,,) dnl
+ AC_CHECK_FUNC(pthread_kill,,) dnl
+dnl Check for POSIX Threads Draft 6 functions
+ AC_CHECK_FUNC(pthread_attr_setprio,,) dnl
+ AC_CHECK_FUNC(pthread_attr_getprio,,) dnl
+ AC_CHECK_FUNC(pthread_setintr,,) dnl
+ AC_CHECK_FUNC(pthread_setintrtype,,) dnl
+dnl Check for POSIX threads Draft 6, 7 and Standard common functions
+ AC_CHECK_FUNC(pthread_mutexattr_init,,) dnl
+ AC_CHECK_FUNC(pthread_mutexattr_destroy,,) dnl
+ AC_CHECK_FUNC(pthread_condattr_init,,) dnl
+ AC_CHECK_FUNC(pthread_condattr_destroy,,) dnl
+dnl Check for POSIX Threads Draft 7 and Draft Standard common functions
+ AC_CHECK_FUNC(pthread_setschedparam,,) dnl
+ AC_CHECK_FUNC(pthread_getschedparam,,) dnl
+ AC_CHECK_FUNC(pthread_setcancelstate,,) dnl
+ AC_CHECK_FUNC(pthread_setcanceltype,,) dnl
+dnl Check for POSIX Threads Draft Standard functions
+dnl sched_yield() is in the C library or perhaps in "-lposix4."
+dnl We need to add other library checks in this script's "check libraries"
+dnl section if it is in another library.
+dnl AC_CHECK_FUNC(sched_yield,,) dnl
+dnl We already check for this during the library checks
+
+dnl Check if platform has thread_self() rather than pthread_self()
+ ACE_CHECK_FUNC(pthread_self, pthread.h, dnl
+ ,
+ [
+ AC_CHECK_FUNC(thread_self,
+ [
+ AC_DEFINE(ACE_HAS_THREAD_SELF)
+ ],)
+ ])
+
+
+dnl FIXME: These tests look sloppy to me. -Ossama
+ AC_CACHE_CHECK(if platform defines a minimum thread priority,
+ ace_cv_lib_pthread_pthread_min_priority,[
+ ace_cv_lib_pthread_pthread_min_priority=0
+ AC_EGREP_HEADER(PTHREAD_MIN_PRIORITY, pthread.h,
+ ace_cv_lib_pthread_pthread_min_priority=PTHREAD_MIN_PRIORITY)
+ AC_EGREP_HEADER(PX_PRIO_MIN, pthread.h,
+ ace_cv_lib_pthread_pthread_min_priority=PX_PRIO_MIN)
+ ])
+ AC_DEFINE_UNQUOTED(ACE_THREAD_MIN_PRIORITY,
+ $ace_cv_lib_pthread_pthread_min_priority)
+
+ AC_CACHE_CHECK(if platform defines a maximum thread priority,
+ ace_cv_lib_pthread_pthread_max_priority,[
+ ace_cv_lib_pthread_pthread_max_priority=99
+ case "$target" in
+ *linux*)
+ if test "$ac_cv_func_pthread_sigmask" = yes; then
+ ace_cv_lib_pthread_pthread_max_priority=99
+ else
+ ace_cv_lib_pthread_pthread_max_priority=32
+ fi
+ ;;
+ *)
+ esac
+ AC_EGREP_HEADER(PTHREAD_MAX_PRIORITY, pthread.h,
+ ace_cv_lib_pthread_pthread_max_priority=PTHREAD_MAX_PRIORITY)
+ AC_EGREP_HEADER(PX_PRIO_MAX, pthread.h,
+ ace_cv_lib_pthread_pthread_max_priority=PX_PRIO_MAX)
+ ])
+ AC_DEFINE_UNQUOTED(ACE_THREAD_MAX_PRIORITY,
+ $ace_cv_lib_pthread_pthread_max_priority)
+
+ fi dnl test "$ace_has_pthreads" = yes
+
+ if test "$ace_has_sthreads" = yes; then
+dnl Only check for these functions if we have the UNIX International
+dnl Threads library "thread."
+ AC_CHECK_FUNC(thr_keycreate, dnl
+ AC_DEFINE(ACE_HAS_THREAD_SPECIFIC_STORAGE),
+ AC_DEFINE(ACE_HAS_TSS_EMULATION))
+
+ AC_CHECK_FUNC(thr_yield, dnl
+ AC_DEFINE(ACE_HAS_THR_YIELD),)
+
+ AC_CHECK_FUNC(thr_keydelete, dnl
+ AC_DEFINE(ACE_HAS_THR_KEYDELETE),)
+
+ AC_CHECK_FUNC(thr_min_stack, dnl
+ ,
+ [
+ AC_CHECK_FUNC(thr_minstack,
+ AC_DEFINE(ACE_HAS_THR_MINSTACK),)
+ ])
+
+ fi dnl test "$ace_has_sthreads" = yes
+
+fi dnl test "$ace_user_enable_threads" = yes
+
+dnl
+dnl By Eric:
+dnl ACE will define a sigwait function if we lie and say we don't have
+dnl one. Unfortunately, the ACE function may conflict with our
+dnl function, so we'll go ahead and turn this on, even if we are
+dnl ignoring threads.
+dnl
+
+AC_CHECK_FUNC(sigwait, dnl
+ AC_DEFINE(ACE_HAS_SIGWAIT),)
+
+
+dnl Check for reentrant functions
+if test "$ace_user_enable_reentrant_funcs" = yes; then
+ AC_CHECK_FUNC(rand_r,,)
+
+ AC_CHECK_FUNC(strtok_r,,)
+
+ AC_CHECK_FUNC(getpwnam_r,, AC_DEFINE(ACE_LACKS_PWD_REENTRANT_FUNCTIONS))
+
+ AC_CHECK_FUNC(ctime_r,,)
+
+ AC_CHECK_FUNC(localtime_r,,)
+
+ AC_CHECK_FUNC(gmtime_r,,)
+
+ AC_CHECK_FUNC(asctime_r,,)
+
+ AC_CHECK_FUNC(getprotobyname_r,,)
+
+ AC_CHECK_FUNC(getprotobynumber_r,,)
+
+ AC_CHECK_FUNC(gethostbyaddr_r,,)
+
+ AC_CHECK_FUNC(gethostbyname_r,,)
+
+ AC_CHECK_FUNC(getservbyname_r,,)
+fi dnl End checks for reentrant functions
+
+AC_CHECK_FUNC(readdir_r, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_READDIR_R))
+
+AC_CHECK_FUNC(seekdir, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_SEEKDIR))
+
+AC_CHECK_FUNC(telldir, dnl
+ ,
+ AC_DEFINE(ACE_LACKS_TELLDIR))
+
+
+dnl
+dnl SECTION 11: checks for function characteristics
+dnl
+
+ACE_CONVERT_WARNINGS_TO_ERRORS([
+dnl Check if dlopen takes a char * arg instead of const char *
+ if test "$ace_has_svr4_dynamic_linking" = yes; then
+ ACE_CACHE_CHECK(if dlopen takes a char *,
+ ace_cv_lib_charptr_dl,
+ [
+ dnl Check if it takes a const char *, first.
+ AC_TRY_COMPILE(
+ [
+#include <dlfcn.h>
+ ],
+ [
+ const char *filename = 0;
+ int flag = 0;
+ void *ptr = dlopen(filename, flag);
+ ],
+ [
+ ace_cv_lib_charptr_dl=no
+ ],
+ [
+ dnl Now check if it takes a non-const char *.
+ AC_TRY_COMPILE(
+ [
+#include <dlfcn.h>
+ ],
+ [
+ char *filename = 0;
+ int flag = 0;
+ void *ptr = dlopen(filename, flag);
+ ],
+ [
+ ace_cv_lib_charptr_dl=yes
+ ],
+ [
+ ace_cv_lib_charptr_dl=no
+ ])
+ ])
+ ], AC_DEFINE(ACE_HAS_CHARPTR_DL),)
+ fi dnl test "$ace_has_svr4_dynamic_linking" = yes
+]) dnl ACE_CONVERT_WARNINGS_TO_ERRORS
+
+ACE_CONVERT_WARNINGS_TO_ERRORS([
+dnl Check if "getby" functions use a non-const char * argument
+ if test "$ac_cv_func_gethostbyaddr" = yes; then
+ ACE_CACHE_CHECK(\"getby\" functions take a non-const char *,
+ ace_cv_lib_nonconst_getby,
+ [
+ AC_TRY_COMPILE(
+ [
+#include <sys/socket.h>
+ ],
+ [
+ char *addr = 0;
+ int len = 0;
+ int type = 0;
+ struct hostent *mystruct = 0;
+
+ mystruct = gethostbyaddr(name, len, type);
+ ],
+ [
+ ace_cv_lib_nonconst_getby=yes
+ ],
+ [
+ ace_cv_lib_nonconst_getby=no
+ ])
+ ], AC_DEFINE(ACE_HAS_NONCONST_GETBY),)
+ fi dnl test "$ac_cv_func_gethostbyaddr" = yes
+]) dnl ACE_CONVERT_WARNINGS_TO_ERRORS
+
+dnl Check if new throws exception upon failure
+if test "$ace_user_enable_exceptions" = yes; then
+ ACE_CACHE_CHECK(if new throws bad_alloc exception on failure,
+ ace_cv_new_throws_bad_alloc_exception,
+ [
+ AC_TRY_RUN(
+ [
+#if defined (ACE_HAS_NEW_NO_H)
+# include <new>
+#elif defined (ACE_HAS_NEW_H)
+# include <new.h>
+#endif
+
+#if defined (ACE_HAS_STDEXCEPT_NO_H)
+# include <stdexcept>
+#elif defined (ACE_HAS_EXCEPTION_H)
+# include <exception.h>
+#endif
+
+ int main() {
+ while (1) {
+ try {
+ char *a = new char[1024*1024];
+ if (a == 0) {
+ return 1; /* new() does NOT throw exceptions */
+ }
+ }
+
+ catch (bad_alloc)
+ {
+ return 0; /* new() does throw exceptions */
+ }
+ };
+
+ return 1; /* ERROR: We shouldn't get this far! */
+ }
+ ],
+ [
+ ace_cv_new_throws_bad_alloc_exception=yes
+ ],
+ [
+ ace_cv_new_throws_bad_alloc_exception=no
+ ],
+ [
+ ace_cv_new_throws_bad_alloc_exception=no
+ ])
+ ], AC_DEFINE(ACE_NEW_THROWS_EXCEPTIONS),)
+
+ if test "$ace_cv_new_throws_bad_alloc_exception" != yes; then
+ ACE_CACHE_CHECK(if new throws xalloc exception on failure,
+ ace_cv_new_throws_xalloc_exception,
+ [
+ AC_TRY_RUN(
+ [
+#if defined (ACE_HAS_NEW_NO_H)
+# include <new>
+#elif defined (ACE_HAS_NEW_H)
+# include <new.h>
+#endif
+
+#if defined (ACE_HAS_STDEXCEPT_NO_H)
+# include <stdexcept>
+#elif defined (ACE_HAS_EXCEPTION_H)
+# include <exception.h>
+#endif
+
+ int main() {
+ while (1) {
+ try {
+ char *a = new char[1024*1024];
+ if (a == 0) {
+ return 1; /* new() does NOT throw exceptions */
+ }
+ }
+
+ catch (xalloc)
+ {
+ return 0; /* new() does throw exceptions */
+ }
+ };
+
+ return 1; /* ERROR: We shouldn't get this far! */
+ }
+ ],
+ [
+ ace_cv_new_throws_xalloc_exception=yes
+ ],
+ [
+ ace_cv_new_throws_xalloc_exception=no
+ ],
+ [
+ ace_cv_new_throws_xalloc_exception=no
+ ])
+ ], AC_DEFINE(ACE_NEW_THROWS_EXCEPTIONS),)
+ fi dnl ace_cv_new_throws_bad_alloc_exceptions = no
+fi dnl $ace_user_enable_exceptions = yes
+
+ACE_CONVERT_WARNINGS_TO_ERRORS([
+dnl Check if putmsg takes a const struct strbuf *
+dnl If we have getmsg() we can be pretty sure that we have putmsg()
+ if test "$ac_cv_func_getmsg" = yes ||
+ test "$ac_cv_header_stropts_h" = yes; then
+ ACE_CACHE_CHECK(if putmsg takes a const struct strbuf*,
+ ace_cv_lib_const_strbufptr,
+ [
+ dnl Check if it takes a const struct strbuf *, first.
+ AC_TRY_COMPILE(
+ [
+#include <stropts.h>
+ ],
+ [
+ int result = 0;
+ int fd = 0;
+ const struct strbuf * ace_str = 0;
+ int flags = 0;
+
+ result = putmsg(fd, ace_str, ace_str, flags);
+ ],
+ [
+ ace_cv_lib_const_strbufptr=yes
+ ],
+ [
+ ace_cv_lib_const_strbufptr=no
+ ])
+ ],, AC_DEFINE(ACE_LACKS_CONST_STRBUF_PTR))
+ fi dnl "$ac_cv_func_getmsg" = yes || "$ac_cv_header_stropts_h" = yes
+]) dnl ACE_CONVERT_WARNINGS_TO_ERRORS
+
+dnl Check if select takes int instead of fd_set
+ACE_CONVERT_WARNINGS_TO_ERRORS([
+ ACE_CACHE_CHECK(if select takes int instead of fd_set,
+ ace_cv_lib_select_takes_int,
+ [
+ AC_TRY_COMPILE(
+ [
+#ifndef ACE_LACKS_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#include <sys/time.h>
+#ifndef ACE_LACKS_UNISTD_H
+# include <unistd.h>
+#endif
+#ifdef ACE_HAS_SELECT_H
+# include <sys/select.h>
+#endif
+ ],
+ [
+ int n;
+ fd_set* readfds = 0;
+ fd_set* writefds = 0;
+ fd_set* exceptfds = 0;
+ timeval* timeout = 0;
+ int result = 0;
+
+ result = select(n, readfds, writefds, exceptfds, timeout);
+ ],
+ [
+ ace_cv_lib_select_takes_int=no
+ ],
+ [
+dnl Now check if select will actually take int* arguments
+ AC_TRY_COMPILE(
+ [
+#ifndef ACE_LACKS_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#include <sys/time.h>
+#ifndef ACE_LACKS_UNISTD_H
+# include <unistd.h>
+#endif
+#ifdef ACE_HAS_SELECT_H
+# include <sys/select.h>
+#endif
+ ],
+ [
+ int n;
+ int* readfds = 0;
+ int* writefds = 0;
+ int* exceptfds = 0;
+ timeval* timeout = 0;
+ int result = 0;
+
+ result = select(n, readfds, writefds, exceptfds, timeout);
+ ],
+ [
+ ace_cv_lib_select_takes_int=yes
+ ],
+ [
+ ace_cv_lib_select_takes_int=no
+ dnl If we get here we don't know what select() takes.
+ ])
+ ])
+ ], AC_DEFINE(ACE_SELECT_USES_INT),)
+]) dnl ACE_CONVERT_WARNINGS_TO_ERRORS
+
+
+dnl Check if setrlimit() takes an enum as 1st parameter (a)
+AC_CACHE_CHECK(if setrlimit() takes an enum as 1st parameter (a),
+ ace_cv_lib_posix_setrlimit_enum_1_a,[
+ ace_cv_lib_posix_setrlimit_enum_1_a=no
+ AC_TRY_COMPILE([#include <sys/resource.h>],
+ [enum __rlimit_resource rsrc;
+ const struct rlimit* rlp;
+ setrlimit(rsrc, rlp);],
+ ace_cv_lib_posix_setrlimit_enum_1_a=yes)
+ ])
+
+dnl Check if setrlimit() takes an enum as 1st parameter (b)
+AC_CACHE_CHECK(if setrlimit() takes an enum as 1st parameter (b),
+ ace_cv_lib_posix_setrlimit_enum_1_b,[
+ ace_cv_lib_posix_setrlimit_enum_1_b=no
+ AC_TRY_COMPILE([#include <sys/resource.h>],
+ [enum __rlimit_resource rsrc;
+ struct rlimit* rlp;
+ setrlimit(rsrc, rlp);],
+ ace_cv_lib_posix_setrlimit_enum_1_b=yes)
+ ])
+
+if test "$ace_cv_lib_posix_setrlimit_enum_1_a" = yes ||
+ test "$ace_cv_lib_posix_setrlimit_enum_1_b" = yes; then
+ AC_DEFINE(ACE_HAS_RLIMIT_RESOURCE_ENUM, enum __rlimit_resource)
+fi
+
+dnl These two tests fail (i.e. pass when they shouldn't) when compiling with
+dnl GCC/G++ since the compiler treats passing a const to a non-const argument
+dnl as a warning and not as an error since the const is simply discarded.
+dnl To correct this problem, we use "-Werror" which converts all warnings
+dnl to errors, whenever we are compiling with G++.
+dnl -Ossama
+
+ACE_CONVERT_WARNINGS_TO_ERRORS( dnl
+[
+dnl Check if setrlimit() takes a const pointer as 2nd parameter (a)
+AC_CACHE_CHECK(if setrlimit() takes a const pointer as 2nd parameter (a),
+ ace_cv_lib_posix_setrlimit_const_2_a,[
+ AC_TRY_COMPILE(
+ [
+#include <sys/resource.h>
+ ],
+ [
+ int rsrc;
+ const struct rlimit* rlp;
+ setrlimit(rsrc, rlp);
+ ],
+ [
+ ace_cv_lib_posix_setrlimit_const_2_a=yes
+ ],
+ [
+ ace_cv_lib_posix_setrlimit_const_2_a=no
+ ])
+ ])
+
+dnl Check if setrlimit() takes a const pointer as 2nd parameter (b)
+AC_CACHE_CHECK(if setrlimit() takes a const pointer as 2nd parameter (b),
+ ace_cv_lib_posix_setrlimit_const_2_b,[
+ ace_cv_lib_posix_setrlimit_const_2_b=no
+ AC_TRY_COMPILE([#include <sys/resource.h>],
+ [enum __rlimit_resource rsrc;
+ const struct rlimit* rlp;
+ setrlimit(rsrc, rlp);],
+ ace_cv_lib_posix_setrlimit_const_2_b=yes)
+ ])
+
+if test "$ace_cv_lib_posix_setrlimit_const_2_a" != yes &&
+ test "$ace_cv_lib_posix_setrlimit_const_2_b" != yes; then
+ AC_DEFINE(ACE_HAS_BROKEN_SETRLIMIT)
+fi
+]) dnl ACE_CONVERT_WARNINGS_TO_ERRORS
+
+dnl Check if getrusage() takes an enum as 1st parameter
+if test "$ac_cv_func_getrusage" = yes; then
+ ACE_CACHE_CHECK(if getrusage() takes an enum as 1st parameter,
+ ace_cv_lib_posix_getrusage_enum_1,[
+ AC_TRY_COMPILE(
+ [
+#include <sys/resource.h>
+ ],
+ [
+ enum __rusage_who who;
+ struct rusage* rup;
+ getrusage(who, rup);
+ ],
+ [
+ ace_cv_lib_posix_getrusage_enum_1=yes
+ ],
+ [
+ ace_cv_lib_posix_getrusage_enum_1=no
+ ])
+ ], AC_DEFINE(ACE_HAS_RUSAGE_WHO_ENUM, enum __rusage_who),)
+fi
+
+dnl TODO: This doesn't work.
+dnl The compiler in linux just issues a warning, and the test passes!!!
+dnl
+dnl FIXED by adding "-Werror" to compiler flags when using GNU C++
+dnl -Ossama
+ACE_CONVERT_WARNINGS_TO_ERRORS( dnl
+[
+dnl Check if select takes a const fifth parameter
+ACE_CACHE_CHECK(if select takes a const fifth parameter,
+ ace_cv_lib_posix_select_const_5,[
+ AC_TRY_COMPILE(
+ [
+#ifndef ACE_LACKS_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#include <sys/time.h>
+#ifndef ACE_LACKS_UNISTD_H
+# include <unistd.h>
+#endif
+#ifdef ACE_HAS_SELECT_H
+# include <sys/select.h>
+#endif
+ ],
+ [
+ int n;
+ fd_set *readfds;
+ fd_set *writefds;
+ fd_set *exceptfds;
+ const struct timeval* timeout = 0;
+ select(n, readfds, writefds, exceptfds, timeout);
+ ],
+ [
+ ace_cv_lib_posix_select_const_5=yes
+ ],
+ [
+ ace_cv_lib_posix_select_const_5=no
+ ])
+ ], , AC_DEFINE(ACE_HAS_NONCONST_SELECT_TIMEVAL))
+]) dnl ACE_CONVERT_WARNINGS_TO_ERRORS
+
+dnl Only run the following tests if the msghdr structure exists.
+if test "$ace_cv_struct_msghdr" = yes &&
+ test "$ac_cv_func_sendmsg" = yes; then
+ ACE_CONVERT_WARNINGS_TO_ERRORS( dnl
+ [
+dnl Check if sendmsg takes a const 2nd parameter
+ ACE_CACHE_CHECK(if sendmsg omits the const from the second parameter,
+ ace_cv_lib_broken_sendmsg,[
+ AC_TRY_COMPILE(
+ [
+#ifndef ACE_LACKS_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#include <sys/socket.h>
+ ],
+ [
+ int s = 0;
+ const struct msghdr *msg = 0;
+ unsigned int flags = 0;
+
+ int result = 0;
+
+ result = (int) sendmsg(s, msg, flags);
+ ],
+ [
+ ace_cv_lib_broken_sendmsg=no
+ ],
+ [
+ ace_cv_lib_broken_sendmsg=yes
+ ])
+ ], AC_DEFINE(ACE_HAS_BROKEN_SENDMSG),)
+ ]) dnl ACE_CONVERT_WARNINGS_TO_ERRORS
+fi dnl test "$ace_cv_struct_msghdr" = yes
+
+dnl Only run the following tests if the writev function exists
+if test "$ac_cv_header_sys_uio_h" = yes &&
+ test "$ac_cv_func_writev" = yes; then
+ ACE_CONVERT_WARNINGS_TO_ERRORS( dnl
+ [
+dnl Check if writev omits the const from the iovec parameter
+ ACE_CACHE_CHECK(if writev omits the const from the iovec parameter,
+ ace_cv_lib_broken_writev,[
+ AC_TRY_COMPILE(
+ [
+#ifdef ACE_HAS_UNISTD_H
+# include <unistd.h>
+#endif
+
+#include <sys/uio.h>
+ ],
+ [
+ int filedes = 0;
+ const struct iovec *vector = 0;
+ size_t count = 0;
+
+ int result = 0;
+
+ result = (int) writev(filedes, vector, count);
+ ],
+ [
+ ace_cv_lib_broken_writev=no
+ ],
+ [
+ ace_cv_lib_broken_writev=yes
+ ])
+ ], AC_DEFINE(ACE_HAS_BROKEN_WRITEV),)
+ ]) dnl ACE_CONVERT_WARNINGS_TO_ERRORS
+fi dnl $ac_cv_header_sys_uio_h = yes && $ac_cv_func_writev = yes
+
+
+dnl The compiler in linux just issues a warning, and the test passes!!!
+dnl
+dnl FIXED by adding "-Werror" to compiler flags when using GNU C++
+dnl -Ossama
+ACE_CONVERT_WARNINGS_TO_ERRORS( dnl
+[
+dnl Check if socket size is denoted by size_t
+ACE_CACHE_CHECK(if socket size is denoted by size_t,
+ ace_cv_lib_posix_socket_len_size_t,[
+ AC_TRY_COMPILE(
+ [
+#ifndef ACE_LACKS_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#include <sys/socket.h>
+ ],
+ [
+ int s;
+ struct sockaddr* addr;
+ int* addrlen;
+ accept(s, addr, addrlen);
+ ],
+ [
+ ace_cv_lib_posix_socket_len_size_t=no
+ ],
+ [
+dnl Now see if it really does take a size_t socket size
+ AC_TRY_COMPILE(
+ [
+#ifndef ACE_LACKS_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#include <sys/socket.h>
+ ],
+ [
+ int s;
+ struct sockaddr* addr;
+ size_t* addrlen;
+ accept(s, addr, addrlen);
+ ],
+ [
+ ace_cv_lib_posix_socket_len_size_t=yes
+ ],
+ [
+ ace_cv_lib_posix_socket_len_size_t=no
+ ])
+ ])
+ ], AC_DEFINE(ACE_HAS_SIZET_SOCKET_LEN),)
+]) dnl ACE_CONVERT_WARNINGS_TO_ERRORS
+
+ACE_CONVERT_WARNINGS_TO_ERRORS( dnl
+[
+ACE_CACHE_CHECK(for (struct sockaddr *) msg_name field,
+ ace_cv_lib_sockaddr_msg_name,[
+ AC_TRY_COMPILE(
+ [
+#ifndef ACE_LACKS_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#include <sys/socket.h>
+ ],
+ [
+ msghdr ace_msghdr;
+ sockaddr name;
+
+ ace_msghdr.msg_name = (struct sockaddr *)name;
+ ],
+ [
+ ace_cv_lib_sockaddr_msg_name=yes
+ ],
+ [
+ ace_cv_lib_sockaddr_msg_name=no
+ ])
+ ], AC_DEFINE(ACE_HAS_SOCKADDR_MSG_NAME),)
+]) dnl ACE_CONVERT_WARNINGS_TO_ERRORS
+
+
+ACE_CONVERT_WARNINGS_TO_ERRORS( dnl
+[
+ACE_CACHE_CHECK(if setsockopt() takes a char* fourth parameter,
+ ace_cv_lib_posix_setsockopt_charp_4,[
+ AC_TRY_COMPILE(
+ [
+#ifndef ACE_LACKS_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#include <sys/socket.h>
+ ],
+ [
+ int s;
+ int level;
+ int optname;
+ char* optval;
+#if defined(ACE_HAS_SIZET_SOCKET_LEN)
+ size_t* optlen;
+#else
+ int* optlen;
+#endif
+ setsockopt(s, level, optname, optval, optlen);
+ ],
+ [
+ ace_cv_lib_posix_setsockopt_charp_4=yes
+ ],
+ [
+ ace_cv_lib_posix_setsockopt_charp_4=no
+ ])
+ ], AC_DEFINE(ACE_HAS_CHARPTR_SOCKOPT),)
+]) dnl ACE_CONVERT_WARNINGS_TO_ERRORS
+
+ACE_CONVERT_WARNINGS_TO_ERRORS( dnl
+[
+ACE_CACHE_CHECK(if setsockopt() takes a void* fourth parameter,
+ ace_cv_lib_posix_setsockopt_voidp_4,[
+ AC_TRY_COMPILE(
+ [
+#ifndef ACE_LACKS_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#include <sys/socket.h>
+ ],
+ [
+ int s;
+ int level;
+ int optname;
+ void* optval;
+#if defined(ACE_HAS_SIZET_SOCKET_LEN)
+ size_t* optlen;
+#else
+ int* optlen;
+#endif
+ setsockopt(s, level, optname, optval, optlen);
+ ],
+ [
+ ace_cv_lib_posix_setsockopt_voidp_4=yes
+ ],
+ [
+ ace_cv_lib_posix_setsockopt_voidp_4=no
+ ])
+ ], AC_DEFINE(ACE_HAS_VOIDPTR_SOCKOPT),)
+]) dnl ACE_CONVERT_WARNINGS_TO_ERRORS
+
+ACE_CONVERT_WARNINGS_TO_ERRORS( dnl
+[
+ACE_CACHE_CHECK(if mmap() takes a void* first argument,
+ ace_cv_lib_posix_voidptr_mmap,[
+ AC_TRY_COMPILE(
+ [
+#ifndef ACE_LACKS_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifndef ACE_LACKS_UNISTD_H
+# include <unistd.h>
+#endif
+#include <sys/mman.h>
+ ],
+ [
+ void *start;
+ size_t length;
+ int prot;
+ int flags;
+ int fd;
+ off_t offset;
+
+ void *result = 0;
+
+ result = (void *)mmap(start, length, prot, flags, fd, offset);
+ ],
+ [
+ ace_cv_lib_posix_voidptr_mmap=yes
+ ],
+ [
+ ace_cv_lib_posix_voidptr_mmap=no
+ ])
+ ], AC_DEFINE(ACE_HAS_VOIDPTR_MMAP),)
+]) dnl ACE_CONVERT_WARNINGS_TO_ERRORS
+
+dnl Check if msync is broken, i.e. doesn't accept third "sync" argument.
+dnl This test should come after the test for checking if mmap takes a void*
+dnl argument since we need the ACE_MMAP_TYPE type for this test.
+if test "$ac_cv_func_msync" = yes; then
+ACE_CACHE_CHECK(if msync accepts a third "sync" argument,
+ ace_cv_lib_broken_msync,
+ [
+ AC_TRY_COMPILE(
+ [
+#include <sys/mman.h>
+
+#if defined (ACE_HAS_VOIDPTR_MMAP)
+ /* Needed for some odd OS's (e.g., SGI). */
+ typedef void *ACE_MMAP_TYPE;
+#else
+ typedef char *ACE_MMAP_TYPE;
+#endif /* ACE_HAS_VOIDPTR_MMAP */
+ ],
+ [
+ ACE_MMAP_TYPE start = 0;
+ size_t length = 0;
+ int flags = MS_SYNC;
+
+ int result;
+
+ result = msync(start, length, flags);
+ ],
+ [
+ ace_cv_lib_broken_msync=no
+ ],
+ [
+ dnl Now see if it works with just two arguments
+ AC_TRY_COMPILE(
+ [
+#include <sys/mman.h>
+
+#if defined (ACE_HAS_VOIDPTR_MMAP)
+ /* Needed for some odd OS's (e.g., SGI). */
+ typedef void *ACE_MMAP_TYPE;
+#else
+ typedef char *ACE_MMAP_TYPE;
+#endif /* ACE_HAS_VOIDPTR_MMAP */
+ ],
+ [
+ ACE_MMAP_TYPE start = 0;
+ size_t length = 0;
+
+ int result;
+
+ result = msync(start, length);
+ ],
+ [
+ ace_cv_lib_broken_msync=yes
+ ],
+ [
+ dnl If we get to this point then we don't know if msync is
+ dnl is broken or not.
+ ace_cv_lib_broken_msync=no
+ ])
+ ])
+ ], AC_DEFINE(ACE_HAS_BROKEN_NETBSD_MSYNC),)
+fi dnl test "$ac_cv_func_msync" = yes
+
+dnl Check if platform has iostream method ipfx()
+ACE_CACHE_CHECK(if platform has iostream method ipfx(),
+ ace_cv_feature_has_iostream_ipfx,[
+ AC_TRY_COMPILE(
+ [
+#include <iostream.h>
+ ],
+ [
+ cin.ipfx();
+ ],
+ [
+ ace_cv_feature_has_iostream_ipfx=yes
+ ],
+ [
+ ace_cv_feature_has_iostream_ipfx=no
+ ])
+ ], , AC_DEFINE(ACE_LACKS_IOSTREAM_FX))
+
+dnl Check if platform has line-buffered streambufs
+ACE_CACHE_CHECK(if platform has line-buffered streambufs,
+ ace_cv_feature_has_linebuffered_streambuf,[
+ AC_TRY_COMPILE(
+ [
+#include <iostream.h>
+ ],
+ [
+ cin.rdbuf()->linebuffered(1);
+ ],
+ [
+ ace_cv_feature_has_linebuffered_streambuf=yes
+ ],
+ [
+ ace_cv_feature_has_linebuffered_streambuf=no
+ ])
+ ], , AC_DEFINE(ACE_LACKS_LINEBUFFERED_STREAMBUF))
+
+dnl Check if platform has unbuffered streambufs
+ACE_CACHE_CHECK(if platform has unbuffered streambufs,
+ ace_cv_feature_has_unbuffered_streambuf,[
+ A_TRY_COMPILE(
+ [
+#include <iostream.h>
+ ],
+ [
+ cin.rdbuf()->unbuffered(1);
+ ],
+ [
+ ace_cv_feature_has_unbuffered_streambuf=yes
+ ],
+ [
+ ace_cv_feature_has_unbuffered_streambuf=no
+ ])
+ ], , AC_DEFINE(ACE_LACKS_UNBUFFERED_STREAMBUF))
+
+dnl Check if signal takes a void (*)(int) as second parameter
+AC_CACHE_CHECK(if signal takes a void (*)(int) as second parameter,
+ ace_cv_lib_signal_vi1_2,[
+ AC_TRY_COMPILE(
+ [
+#include <signal.h>
+ typedef void (*SA)(int);
+ void handler(int)
+ {
+ }
+ ],
+ [
+ SA nn = handler;
+ signal(SIGINT, nn);
+ ],
+ [
+ ace_cv_lib_signal_vi1_2=yes
+ ],
+ [
+ ace_cv_lib_signal_vi1_2=no
+ ])
+ ])
+
+dnl Check if signal takes a void (*)(void) as second parameter
+AC_CACHE_CHECK(if signal takes a void (*)(void) as second parameter,
+ ace_cv_lib_signal_vv1_2,[
+ AC_TRY_COMPILE(
+ [
+#include <signal.h>
+ typedef void (*SA)(void);
+ void handler(int) { }
+ ],
+ [
+ SA nn = handler;
+ signal(SIGINT, nn);
+ ],
+ [
+ ace_cv_lib_signal_vv1_2=yes
+ ],
+ [
+ ace_cv_lib_signal_vv1_2=no
+ ])
+ ])
+
+dnl Check if signal takes a void (*)(int, ...) as second parameter
+AC_CACHE_CHECK(if signal takes a void (*)(int, ...) as second parameter,
+ ace_cv_lib_signal_vi1a2_2,[
+ AC_TRY_COMPILE(
+ [
+#include <signal.h>
+ typedef void (*SA)(int, ...);
+ void handler(int, ...) { }
+ ],
+ [
+ SA nn = handler;
+ signal(SIGINT, nn);
+ ],
+ [
+ ace_cv_lib_signal_vi1a2_2=yes
+ ],
+ [
+ ace_cv_lib_signal_vi1a2_2=no
+ ])
+ ])
+
+dnl Check if signal takes a void (*)(...) as second parameter
+AC_CACHE_CHECK(if signal takes a void (*)(...) as second parameter,
+ ace_cv_lib_signal_va1_2,[
+ AC_TRY_COMPILE(
+ [
+#include <signal.h>
+ typedef void (*SA)(...);
+ void handler(...) { }
+ ],
+ [
+ SA nn = handler;
+ signal(SIGINT, nn);
+ ],
+ [
+ ace_cv_lib_signal_va1_2=yes
+ ],
+ [
+ ace_cv_lib_signal_va1_2=no
+ ])
+ ])
+
+dnl Check if signal returns a void (*)(int)
+AC_CACHE_CHECK(if signal returns a void (*)(int),
+ ace_cv_lib_signal_vi1_ret,[
+ AC_TRY_COMPILE(
+ [
+#include <signal.h>
+ typedef void (*SA)(int);
+ void foo(SA nn) { }
+ ],
+ [
+ SA nn = SIG_DFL;
+ nn = signal(SIGINT, 0);
+ foo(nn);
+ ],
+ [
+ ace_cv_lib_signal_vi1_ret=yes
+ ],
+ [
+ ace_cv_lib_signal_vi1_ret=no
+ ])
+ ])
+
+dnl Check if signal returns a void (*)(void)
+AC_CACHE_CHECK(if signal returns a void (*)(void),
+ ace_cv_lib_signal_vv1_ret,[
+ AC_TRY_COMPILE(
+ [
+#include <signal.h>
+ typedef void (*SA)(void);
+ void foo(SA nn) { }
+ ],
+ [
+ SA nn = SIG_DFL;
+ nn = signal(SIGINT, 0);
+ foo(nn);
+ ],
+ [
+ ace_cv_lib_signal_vv1_ret=yes
+ ],
+ [
+ ace_cv_lib_signal_vv1_ret=no
+ ])
+ ])
+
+dnl Check if signal returns a void (*)(int, ...)
+AC_CACHE_CHECK(if signal returns a void (*)(int, ...),
+ ace_cv_lib_signal_vi1a2_ret,[
+ AC_TRY_COMPILE(
+ [
+#include <signal.h>
+ typedef void (*SA)(int, ...);
+ ],
+ [
+ SA oo = signal(SIGINT, 0);
+ ],
+ [
+ ace_cv_lib_signal_vi1a2_ret=yes
+ ],
+ [
+ ace_cv_lib_signal_vi1a2_ret=no
+ ])
+ ])
+
+dnl Check if signal returns a void (*)(...)
+AC_CACHE_CHECK(if signal returns a void (*)(...),
+ ace_cv_lib_signal_va1_ret,[
+ AC_TRY_COMPILE(
+ [
+#include <signal.h>
+ typedef void (*SA)(...);
+ ],
+ [
+ SA oo = signal(SIGINT, 0);
+ ],
+ [
+ ace_cv_lib_signal_va1_ret=yes
+ ],
+ [
+ ace_cv_lib_signal_va1_ret=no
+ ])
+ ])
+
+if test "$ace_cv_struct_sigaction" = yes; then
+dnl Check if struct sigaction takes a void (*)(int) handler
+ AC_CACHE_CHECK(if struct sigaction takes a void (*)(int) handler,
+ ace_cv_lib_struct_sigaction_vi1_handler,[
+ AC_TRY_COMPILE(
+ [
+#include <signal.h>
+ typedef void (*SA)(int);
+ void foo(struct sigaction* sa, SA nn) { }
+ ],
+ [
+ struct sigaction sa;
+ SA nn = SIG_DFL;
+ sa.sa_handler = nn;
+ foo(&sa, nn);
+ ],
+ [
+ ace_cv_lib_struct_sigaction_vi1_handler=yes
+ ],
+ [
+ ace_cv_lib_struct_sigaction_vi1_handler=no
+ ])
+ ])
+
+dnl Check if struct sigaction takes a void (*)(void) handler
+ AC_CACHE_CHECK(if struct sigaction takes a void (*)(void) handler,
+ ace_cv_lib_struct_sigaction_vv1_handler,[
+ AC_TRY_COMPILE(
+ [
+#include <signal.h>
+ typedef void (*SA)(void);
+ void foo(struct sigaction* sa, SA nn) { }
+ ],
+ [
+ struct sigaction sa;
+ SA nn = SIG_DFL;
+ sa.sa_handler = nn;
+ foo(&sa, nn);
+ ],
+ [
+ ace_cv_lib_struct_sigaction_vv1_handler=yes
+ ],
+ [
+ ace_cv_lib_struct_sigaction_vv1_handler=no
+ ])
+ ])
+
+dnl Check if struct sigaction takes a void (*)(int, ...) handler
+ AC_CACHE_CHECK(if struct sigaction takes a void (*)(int, ...) handler,
+ ace_cv_lib_struct_sigaction_vi1a2_handler,[
+ AC_TRY_COMPILE(
+ [
+#include <signal.h>
+ typedef void (*SA)(int, ...);
+ void foo(struct sigaction* sa, SA nn) { }
+ ],
+ [
+ struct sigaction sa;
+ SA nn = SIG_DFL;
+ sa.sa_handler = nn;
+ foo(&sa, nn);
+ ],
+ [
+ ace_cv_lib_struct_sigaction_vi1a2_handler=yes
+ ],
+ [
+ ace_cv_lib_struct_sigaction_vi1a2_handler=no
+ ])
+ ])
+
+dnl Check if struct sigaction takes a void (*)(...) handler
+ AC_CACHE_CHECK(if struct sigaction takes a void (*)(...) handler,
+ ace_cv_lib_struct_sigaction_va1_handler,[
+ AC_TRY_COMPILE(
+ [
+#include <signal.h>
+ typedef void (*SA)(...);
+ void foo(struct sigaction* sa, SA nn) { }
+ ],
+ [
+ struct sigaction sa;
+ SA nn = SIG_DFL;
+ sa.sa_handler = nn;
+ foo(&sa, nn);
+ ],
+ [
+ ace_cv_lib_struct_sigaction_va1_handler=yes
+ ],
+ [
+ ace_cv_lib_struct_sigaction_va1_handler=no
+ ])
+ ])
+fi dnl test "$ace_cv_struct_sigaction" = yes
+
+dnl TODO: This doesn't work.
+dnl The linux compiler issues a warning regarding the invalid void*
+dnl conversion.
+dnl
+dnl FIXED by adding "-Werror" to compiler flags when using GNU C++
+dnl -Ossama
+ACE_CONVERT_WARNINGS_TO_ERRORS( dnl
+[
+dnl Check if msgsnd() takes a struct msgbuf* second parameter
+ACE_CACHE_CHECK(if msgsnd() takes a struct msgbuf* second parameter,
+ ace_cv_lib_posix_msgsnd_msgbufp_2,[
+ AC_TRY_COMPILE(
+ [
+#ifndef ACE_LACKS_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+# include <sys/ipc.h>
+#ifndef ACE_LACKS_SYSV_MSG_H
+# include <sys/msg.h>
+#endif
+ ],
+ [
+ int msqid;
+ struct msgbuf* msgp = 0;
+ int msgsz;
+ int msgflg;
+ msgsnd(msqid, msgp, msgsz, msgflg);
+ ],
+ [
+ ace_cv_lib_posix_msgsnd_msgbufp_2=yes
+ ],
+ [
+ ace_cv_lib_posix_msgsnd_msgbufp_2=no
+ ])
+ ],
+ [
+ dnl "ACTIONS-IF-SUCCESSFUL" handled later in configure.in
+ ],
+ [
+ dnl Check if msgsnd() takes a const void* second parameter
+ ACE_CACHE_CHECK(if msgsnd() takes a const void* second parameter,
+ ace_cv_lib_posix_msgsnd_cvoidp_2,[
+ AC_TRY_COMPILE(
+ [
+#ifndef ACE_LACKS_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+# include <sys/ipc.h>
+#ifndef ACE_LACKS_SYSV_MSG_H
+# include <sys/msg.h>
+#endif
+ ],
+ [
+ int msqid;
+ const void* msgp = 0;
+ int msgsz;
+ int msgflg;
+ msgsnd(msqid, msgp, msgsz, msgflg);
+ ],
+ [
+ ace_cv_lib_posix_msgsnd_cvoidp_2=yes
+ ],
+ [
+ ace_cv_lib_posix_msgsnd_cvoidp_2=no
+ ])
+ ],
+ [
+ dnl Do nothing if msgsnd takes a const void* second parameter
+ ],
+ [
+ dnl If we get this far we presumably have a non-const void* second param
+ AC_DEFINE(ACE_HAS_NONCONST_MSGSND)
+ ])
+ ])
+]) dnl ACE_CONVERT_WARNINGS_TO_ERRORS
+
+dnl TODO: This doesn't work.
+dnl The linux compiler issues a warning regarding the invalid void*
+dnl conversion.
+dnl
+dnl FIXED by adding "-Werror" to compiler flags when using GNU C++
+dnl -Ossama
+ACE_CONVERT_WARNINGS_TO_ERRORS( dnl
+[
+dnl Check if msgrcv() takes a void* second parameter
+AC_CACHE_CHECK(if msgrcv() takes a void* second parameter,
+ ace_cv_lib_posix_msgrcv_voidp_2,[
+ AC_TRY_COMPILE(
+ [
+#ifndef ACE_LACKS_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+# include <sys/ipc.h>
+#ifndef ACE_LACKS_SYSV_MSG_H
+# include <sys/msg.h>
+#endif
+ ],
+ [
+ int msqid;
+ void* msgp;
+ int msgsz;
+ long msgtyp;
+ int msgflg;
+ msgrcv(msqid, msgp, msgsz, msgtyp, msgflg);
+ ],
+ [
+ ace_cv_lib_posix_msgrcv_voidp_2=yes
+ ],
+ [
+ ace_cv_lib_posix_msgrcv_voidp_2=no
+ ])
+ ])
+]) dnl ACE_CONVERT_WARNINGS_TO_ERRORS
+
+dnl TODO: This doesn't work.
+dnl The linux compiler issues a warning regarding the invalid void*
+dnl conversion.
+dnl
+dnl FIXED by adding "-Werror" to compiler flags when using GNU C++
+dnl -Ossama
+ACE_CONVERT_WARNINGS_TO_ERRORS( dnl
+[
+dnl Check if shmat() takes a void* second parameter
+AC_CACHE_CHECK(if shmat() takes a void* second parameter,
+ ace_cv_lib_posix_shmat_voidp_2,[
+ AC_TRY_COMPILE(
+ [
+#ifndef ACE_LACKS_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+# include <sys/ipc.h>
+# include <sys/shm.h>
+ ],
+ [int shmid;
+ void* shmaddr;
+ int shmflg;
+ shmat(shmid, shmaddr, shmflg);
+ ],
+ [
+ ace_cv_lib_posix_shmat_voidp_2=yes
+ ],
+ [
+ ace_cv_lib_posix_shmat_voidp_2=no
+ ])
+ ])
+]) dnl ACE_CONVERT_WARNINGS_TO_ERRORS
+
+dnl TODO: This doesn't work.
+dnl The linux compiler issues a warning regarding the invalid void*
+dnl conversion.
+dnl
+dnl FIXED by adding "-Werror" to compiler flags when using GNU C++
+dnl -Ossama
+ACE_CONVERT_WARNINGS_TO_ERRORS( dnl
+[
+dnl Check if sigaction() takes a const* second parameter
+AC_CACHE_CHECK(if sigaction() takes a const* second parameter,
+ ace_cv_lib_posix_sigaction_constp_2,[
+ AC_TRY_COMPILE(
+ [
+#include <signal.h>
+ ],
+ [
+ int signum;
+ const struct sigaction* act = 0;
+ struct sigaction* oldact;
+ sigaction(signum, act, oldact);
+ ],
+ [
+ ace_cv_lib_posix_sigaction_constp_2=yes
+ ],
+ [
+ ace_cv_lib_posix_sigaction_constp_2=no
+ ])
+ ])
+]) dnl ACE_CONVERT_WARNINGS_TO_ERRORS
+
+dnl Check if the wait() system call takes a (union wait *) rather than int *
+ACE_CACHE_CHECK(if wait() takes a (union wait *) rather than int *,
+ ace_cv_lib_wait_takes_union_wait_ptr,
+ [
+ AC_TRY_COMPILE(
+ [
+#include <sys/wait.h>
+ ],
+ [
+ int* status;
+ int result;
+ result=wait(status);
+ ],
+ [
+ ace_cv_lib_wait_takes_union_wait_ptr=no
+ ],
+ [
+ AC_TRY_COMPILE(
+ [
+#include <sys/wait.h>
+ ],
+ [
+ union wait* status;
+ int result;
+ result=wait(status);
+ ],
+ [
+ ace_cv_lib_wait_takes_union_wait_ptr=yes
+ ],
+ [
+dnl If we get here then we're screwed! We can't use int* or union wait*.
+dnl It is very unlikely that we will ever get this far. For the sake
+dnl of setting some result, we'll assume that we can actually use int*.
+ ace_cv_lib_wait_takes_union_wait_ptr=no
+ AC_MSG_WARN(wait() doesn't seem to take either int* or union wait*)
+ AC_MSG_WARN(as an argument. Going to assume that int* will work.)
+ ])
+ ])
+ ], AC_DEFINE(ACE_HAS_UNION_WAIT),)
+
+dnl We need to use the ACE_CONVERT_WARNINGS_TO_ERRORS() macro since
+dnl passing a void * just caused implicit conversion warnings when
+dnl using GNU C++, for example.
+ACE_CONVERT_WARNINGS_TO_ERRORS( dnl
+[
+dnl Check for SVR4 style gettimeofday()
+AC_CACHE_CHECK(if gettimeofday() takes a void * second argument,
+ ace_cv_lib_voidptr_gettimeofday,
+ [
+ AC_TRY_COMPILE(
+ [
+#include <sys/time.h>
+#ifndef ACE_LACKS_UNISTD_H
+# include <unistd.h>
+#endif
+ ],
+ [
+ struct timeval *tv = 0;
+ void *tzp = 0;
+
+ gettimeofday(tv, tzp);
+ ],
+ [
+ ace_cv_lib_voidptr_gettimeofday=yes
+ ],
+ [
+ ace_cv_lib_voidptr_gettimeofday=no
+ ])
+ ])
+]) dnl ACE_CONVERT_WARNINGS_TO_ERRORS
+
+if test "$ace_cv_lib_voidptr_gettimeofday" = no; then
+ACE_CONVERT_WARNINGS_TO_ERRORS( dnl
+[
+dnl Check for old OSF1 style gettimeofday()
+ AC_CACHE_CHECK(if gettimeofday() takes a timzeone * second argument,
+ ace_cv_lib_timezone_gettimeofday,
+ [
+ AC_TRY_COMPILE(
+ [
+#include <sys/time.h>
+#ifndef ACE_LACKS_UNISTD_H
+# include <unistd.h>
+#endif
+ ],
+ [
+ struct timeval *tv = 0;
+ struct timezone *tzp = 0;
+
+ gettimeofday(tv, tzp);
+ ],
+ [
+ ace_cv_lib_timezone_gettimeofday=yes
+ ],
+ [
+ ace_cv_lib_timezone_gettimeofday=no
+ ])
+ ])
+]) dnl ACE_CONVERT_WARNINGS_TO_ERRORS
+fi dnl test "$ace_cv_lib_voidptr_gettimeofday" = no
+
+dnl Check for gettimeofday() protoype
+if test "$ace_cv_lib_voidptr_gettimeofday" = yes ||
+ test "$ace_cv_lib_timezone_gettimeofday" = yes; then
+ ACE_CACHE_CHECK(for gettimeofday() protoype,
+ ace_cv_lib_has_gettimeofday_prototype,
+ [
+ AC_EGREP_CPP(gettimeofday,
+ [
+#include <time.h>
+
+#ifdef ACE_LACKS_SYSTIME_H
+# include <sys/time.h>
+#endif
+ ],
+ [
+dnl We have a gettimeofday prototype
+ ace_cv_lib_has_gettimeofday_prototype=yes
+ ],
+ [
+dnl We don't have a gettimeofday prototype
+ ace_cv_lib_has_gettimeofday_prototype=no
+ ])
+ ],
+ [
+ if test "$ace_cv_lib_voidptr_gettimeofday" = yes; then
+ AC_DEFINE(ACE_HAS_SUNOS4_GETTIMEOFDAY)
+ else
+ AC_DEFINE(ACE_HAS_TIMEZONE_GETTIMEOFDAY)
+ fi
+ ],
+ [
+ if test "$ace_cv_lib_voidptr_gettimeofday" = yes; then
+ AC_DEFINE(ACE_HAS_SVR4_GETTIMEOFDAY)
+ else
+ AC_DEFINE(ACE_HAS_OSF1_GETTIMEOFDAY)
+ fi
+ ])
+fi dnl Check for gettimeofday() protoype
+
+
+dnl Check if ctime_r() takes two parameters
+if test "$ac_cv_func_ctime_r" = yes; then
+ ACE_CACHE_CHECK(if ctime_r() takes two parameters,
+ ace_cv_lib_posix_ctime_r_2_params,
+ [
+ AC_TRY_COMPILE(
+ [
+#ifndef _REENTRANT
+# define _REENTRANT
+#endif
+
+#include <time.h>
+
+#if defined(ACE_LACKS_SYSTIME_H)
+# include <sys/time.h>
+#endif
+ ],
+ [
+ const time_t *t ;
+ char *buf;
+ ctime_r(t, buf);
+ ],
+ [
+ ace_cv_lib_posix_ctime_r_2_params=yes
+ ],
+ [
+ ace_cv_lib_posix_ctime_r_2_params=no
+ ])
+ ], AC_DEFINE(ACE_HAS_2_PARAM_ASCTIME_R_AND_CTIME_R),)
+fi dnl test "$ac_cv_func_ctime_r" = yes
+
+
+dnl
+dnl SECTION 12: checks for type characteristics
+dnl
+
+dnl struct msghdr stuff
+dnl Only run the following tests if the msghdr structure exists.
+if test "$ace_cv_struct_msghdr" = yes; then
+
+ ACE_CACHE_CHECK(if struct msghdr has a msg_accrights member,
+ ace_cv_lib_posix_struct_msghdr_has_msg_accrights,[
+ AC_TRY_COMPILE(
+ [
+#ifndef ACE_LACKS_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#include <sys/socket.h>
+ ],
+ [
+ msghdr mh;
+ mh.msg_accrights = 0;
+ ],
+ [
+ ace_cv_lib_posix_struct_msghdr_has_msg_accrights=yes
+ ],
+ [
+ ace_cv_lib_posix_struct_msghdr_has_msg_accrights=no
+ ])
+ ])
+
+ ACE_CACHE_CHECK(if struct msghdr has a msg_accrights_len member,
+ ace_cv_lib_posix_struct_msghdr_has_msg_accrights_len,[
+ AC_TRY_COMPILE(
+ [
+#ifndef ACE_LACKS_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#include <sys/socket.h>
+ ],
+ [
+ msghdr mh;
+ mh.msg_accrightslen = 0;
+ ],
+ [
+ ace_cv_lib_posix_struct_msghdr_has_msg_accrights_len=yes
+ ],
+ [
+ ace_cv_lib_posix_struct_msghdr_has_msg_accrights_len=no
+ ])
+ ])
+
+dnl Check for 4.4 BSD style struct msghdr members
+dnl The following test should only be run if the above two testsfail.
+ if test "$ace_cv_lib_posix_struct_msghdr_has_msg_accrights" = no &&
+ test "$ace_cv_lib_posix_struct_msghdr_has_msg_accrights_len" = no; then
+ AC_DEFINE(ACE_LACKS_MSG_ACCRIGHTS)
+ ACE_CACHE_CHECK(for 4.4 BSD style struct msghdr,
+ ace_cv_lib_4_4bsd_msghdr,[
+ AC_EGREP_HEADER(msg_control, sys/socket.h,
+ [
+ ace_cv_lib_4_4bsd_msghdr=yes
+ ],
+ [
+ ace_cv_lib_4_4bsd_msghdr=no
+ ])
+ ],
+ [
+ AC_DEFINE(ACE_HAS_4_4BSD_SENDMSG_RECVMSG)
+ ],
+ [
+ AC_MSG_WARN(No supported msghdr structure was found. ACE may not compile or function properly.)
+ ])
+ fi
+
+dnl Now check if CMSG_DATA is defined if and only if we have 4.4 BSD
+dnl style struct msghdr members. If CMSG_DATA isn't defined, then
+dnl we try to figure out what it should be defined to.
+ if test "$ace_cv_lib_4_4bsd_msghdr" = yes; then
+ ACE_CACHE_CHECK(if CMSG_DATA is defined,
+ ace_cv_lib_cmsg_data,
+ [
+ AC_EGREP_CPP(ACE_CMSG_DATA_DEFINED,
+ [
+#ifndef ACE_LACKS_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#include <sys/socket.h>
+#include <sys/un.h>
+
+#if defined (CMSG_DATA)
+ ACE_CMSG_DATA_DEFINED
+#endif
+ ],
+ [
+ ace_cv_lib_cmsg_data=yes
+ ],
+ [
+ ace_cv_lib_cmsg_data=no
+dnl Now check which type of CMSG_DATA #define we need.
+ AC_TRY_COMPILE(
+ [
+#ifndef ACE_LACKS_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#include <sys/socket.h>
+#include <sys/un.h>
+ ],
+ [
+ /* This is sloppy. Oh well. :) */
+ unsigned char ace_cmsg_data[0];
+
+ cmsghdr ace_cmsg;
+ ace_cmsg.cmsg_data = ace_cmsg_data;
+ ],
+ [
+ dnl Do nothing
+ ],
+ [
+ AC_TRY_COMPILE(
+ [
+#ifndef ACE_LACKS_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#include <sys/socket.h>
+#include <sys/un.h>
+ ],
+ [
+ /* This is sloppy. Oh well. :) */
+ unsigned char ace_cmsg_data[0];
+
+ cmsghdr ace_cmsg;
+ ace_cmsg.__cmsg_data = ace_cmsg_data;
+ ],
+ [
+ AC_MSG_ERROR(cmsgmdr member '__cmsg_data[0]' not supported by ACE's CMSG_DATA macro)
+ ],
+ [
+ AC_TRY_COMPILE(
+ [
+#ifndef ACE_LACKS_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#include <sys/socket.h>
+#include <sys/un.h>
+ ],
+ [
+ cmsghdr ace_cmsg;
+ ],
+ [
+ AC_CACHE_VAL(ace_cv_lib_cmsg_data_member,
+ ace_cv_lib_cmsg_data_member=no)
+ ],
+ [
+ AC_MSG_ERROR(No supported cmsghdr structure exists. ACE cannot be built without one.)
+ ])
+ ])
+ ])
+ ])
+ ], ,
+ [
+ AC_DEFINE(ACE_LACKS_CMSG_DATA_MACRO)
+ if test "$ace_cv_lib_cmsg_data_member"=no; then
+ AC_DEFINE(ACE_LACKS_CMSG_DATA_MEMBER)
+ fi
+
+ ])
+ fi dnl test "$ace_cv_lib_4_4bsd_msghdr" = yes
+
+fi dnl End struct msghdr_stuff
+
+dnl
+dnl SECTION 13: checks for system services
+dnl
+
+dnl TODO: I'm not sure if I am interpreting the meaning of
+dnl ACE_HAS_SIGNAL_SAFE_OS_CALLS. Could someone make
+dnl sure I am testing for ACE_HAS_SIGNAL_SAFE_OS_CALLS
+dnl correctly?
+dnl -Ossama
+dnl Do not run this test if we are using a cross-compiler.
+if test "$cross_compiling" != yes; then
+ AC_SYS_RESTARTABLE_SYSCALLS
+ if test "$ac_cv_sys_restartable_syscalls" = yes; then
+ AC_DEFINE(ACE_HAS_SIGNAL_SAFE_OS_CALLS)
+ fi
+fi
+
+dnl Check if platform defines ctime() as a macro
+ACE_CACHE_CHECK(if platform defines ctime() as a macro,
+ ace_cv_feature_have_ctime_macro,
+ [
+ AC_EGREP_CPP(ACE_CTIME_MACRO,
+ [
+#include <time.h>
+
+#if defined(ACE_LACKS_SYSTIME_H)
+# include <sys/time.h>
+#endif
+
+#if defined (ctime)
+ ACE_CTIME_MACRO
+#endif
+ ],
+ [
+ ace_cv_feature_have_ctime_macro=yes
+ ],
+ [
+ ace_cv_feature_have_ctime_macro=no
+ ])
+ ], AC_DEFINE(ACE_HAS_BROKEN_CTIME),)
+
+dnl Check if platform defines ctime_r, asctime_r, rand_r or getpwnam_r
+dnl as macros.
+ACE_CACHE_CHECK(if platform defines some reentrant functions as macros,
+ ace_cv_feature_has_broken_r_routines,
+ [
+ AC_EGREP_CPP(ACE_R_MACROS,
+ [
+#ifndef _REENTRANT
+# define _REENTRANT
+#endif
+
+#include <time.h>
+
+#if defined(ACE_LACKS_SYSTIME_H)
+# include <sys/time.h>
+#endif
+
+#if defined (HAVE_PWD_H)
+# include <pwd.h>
+#endif
+
+#if defined (ctime_r) || \
+ defined (asctime_r) || \
+ defined (rand_r) || \
+ defined (getpwnam_r)
+ ACE_R_MACROS
+#endif
+ ],
+ [
+ ace_cv_feature_has_broken_r_routines=yes
+ ],
+ [
+ ace_cv_feature_has_broken_r_routines=no
+ ])
+ ], AC_DEFINE(ACE_HAS_BROKEN_R_ROUTINES),)
+
+dnl Check if platform defines sig{empty,fill,add,del}set as macros
+ACE_CACHE_CHECK(if platform defines sig{empty fill add del}set as macros,
+ ace_cv_feature_have_sig_macros,
+ [
+ AC_EGREP_CPP(ACE_SIG_MACROS,
+ [
+#ifndef ACE_LACKS_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#include <signal.h>
+
+#if defined (sigemptyset) && \
+ defined (sigfillset) && \
+ defined (sigaddset) && \
+ defined (sigdelset) && \
+ defined (sigismember)
+ ACE_SIG_MACROS
+#endif
+ ],
+ [
+ ace_cv_feature_have_sig_macros=yes
+ ],
+ [
+ ace_cv_feature_have_sig_macros=no
+ ])
+ ], AC_DEFINE(ACE_HAS_SIG_MACROS),)
+
+dnl Check for open() mode masks
+ACE_CACHE_CHECK(for open() mode masks,
+ ace_cv_feature_have_open_mode_masks,[
+ AC_EGREP_CPP(ACE_OPEN_MODE_MASKS_EXIST,
+ [
+#ifndef ACE_LACKS_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#include <sys/stat.h>
+#include <fcntl.h>
+
+ /* These are ORed so that ACE will not redefine
+ any of them if any of them exist. */
+#if defined (S_IRWXU) || \
+ defined (S_IRUSR) || \
+ defined (S_IWUSR) || \
+ defined (S_IXUSR) || \
+ defined (S_IRWXG) || \
+ defined (S_IRGRP) || \
+ defined (S_IWGRP) || \
+ defined (S_IXGRP) || \
+ defined (S_IRWXO) || \
+ defined (S_IROTH) || \
+ defined (S_IWOTH) || \
+ defined (S_IXOTH)
+ ACE_OPEN_MODE_MASKS_EXIST
+#endif
+ ],
+ [
+ ace_cv_feature_have_open_mode_masks=yes
+ ],
+ [
+ ace_cv_feature_have_open_mode_masks=no
+ ])
+ ], , AC_DEFINE(ACE_LACKS_MODE_MASKS))
+
+
+dnl Check if platform supports POSIX O_NONBLOCK semantics
+ACE_CACHE_CHECK(for POSIX O_NONBLOCK semantics,
+ ace_cv_feature_posix_o_nonblock,[
+ AC_EGREP_CPP(ACE_POSIX_O_NONBLOCK,
+ [
+#ifndef ACE_LACKS_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#if defined (O_NONBLOCK)
+ ACE_POSIX_O_NONBLOCK
+#endif
+ ],
+ [
+ ace_cv_feature_posix_o_nonblock=yes
+ ],
+ [
+ ace_cv_feature_posix_o_nonblock=no
+ ])
+ ], AC_DEFINE(ACE_HAS_POSIX_NONBLOCK),)
+
+dnl Check if platform defines MAP_FAILED as a long constant
+ACE_CACHE_CHECK(if platform defines MAP_FAILED as a long constant,
+ ace_cv_feature_long_map_failed,[
+ dnl We need the square brackets around "ACEMAPFAILED.+[0-9]L" to
+ dnl prevent the character class "[0-9]" from becoming "0-9" due to
+ dnl M4 quoting.
+ AC_EGREP_CPP([ACEMAPFAILED.+[0-9]L],
+ [
+#include <sys/mman.h>
+ ACEMAPFAILED MAP_FAILED
+ ],
+ [
+ ace_cv_feature_long_map_failed=yes
+ ],
+ [
+ ace_cv_feature_long_map_failed=no
+ ])
+ ], AC_DEFINE(ACE_HAS_LONG_MAP_FAILED),)
+
+dnl Check if platform supports SO_SNDBUF/SO_RCVBUF socket options
+ACE_CACHE_CHECK(if platform supports SO_SNDBUF/SO_RCVBUF socket options,
+ ace_cv_feature_so_sndbuf_rcvbuf,[
+ AC_EGREP_CPP(ACE_SO_BUF,
+ [
+#ifndef ACE_LACKS_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#include <sys/socket.h>
+
+#if defined (SO_SNDBUF) && \
+ defined (SO_RCVBUF)
+ ACE_SO_BUF
+#endif
+ ],
+ [
+ ace_cv_feature_so_sndbuf_rcvbuf=yes
+ ],
+ [
+ ace_cv_feature_so_sndbuf_rcvbuf=no
+ ])
+ ], , AC_DEFINE(ACE_LACKS_SOCKET_BUFSIZ))
+
+dnl TODO: We only check for ACE_HAS_AUTOMATIC_INIT_FINI on platforms that
+dnl have SVR4 dynamic linking since ACE doesn't support it otherwise.
+if test "$ac_cv_header_dlfcn_h" = yes &&
+ test "$ace_has_svr4_dynamic_linking" = yes; then
+dnl Check if platform calls init/fini automatically
+ ACE_CACHE_CHECK(if platform calls init/fini automatically,
+ ace_cv_feature_auto_init_fini,[
+ ace_cv_feature_auto_init_fini=yes
+ # TODO: We know how to check for this, but we need to:
+ #
+ # 1. Compile one file.
+ # 2. Compile and link another file.
+ # 3. Run file in point (2); it returns what we need.
+ #
+ # How do we do all that?
+ ], AC_DEFINE(ACE_HAS_AUTOMATIC_INIT_FINI),)
+fi dnl test "$ac_cv_header_dlfcn_h" = yes &&
+ dnl "$ace_has_svr4_dynamic_linking" = yes
+
+dnl Check for recursive thread exit semantics
+if test "$ace_user_enable_threads" = yes; then
+ ACE_CACHE_CHECK(for recursive thread exit semantics,
+ ace_cv_feature_recursive_thr_exit,[
+ ace_cv_feature_recursive_thr_exit=yes
+ # TODO: How do we check for recursive thread exit semantics
+ ], AC_DEFINE(ACE_HAS_RECURSIVE_THR_EXIT_SEMANTICS),)
+fi
+
+dnl Check for asynchronous IO calls
+if test "$ace_has_aio_funcs" = yes; then
+ ACE_CACHE_CHECK(for asynchronous IO calls,
+ ace_cv_feature_aio_calls,[
+ AC_TRY_COMPILE(
+ [
+#include <aio.h>
+ ],
+ [
+ aiocb* aiocb_ptr (void);
+ ],
+ [
+ ace_cv_feature_aio_calls=yes
+ ],
+ [
+ ace_cv_feature_aio_calls=no
+ ])
+ ], AC_DEFINE(ACE_HAS_AIO_CALLS),)
+fi dnl test "$ace_has_aio_funcs" = yes
+
+dnl Check for UNIX domain sockets
+ACE_CACHE_CHECK(for UNIX domain sockets,
+ ace_cv_feature_unix_sockets,
+ [
+ AC_TRY_COMPILE(
+ [
+#include <sys/un.h>
+ ],
+ [
+ sockaddr_un su;
+ ],
+ [
+ ace_cv_feature_unix_sockets=yes
+ ],
+ [
+ ace_cv_feature_unix_sockets=no
+ ])
+ ], , AC_DEFINE(ACE_LACKS_UNIX_DOMAIN_SOCKETS))
+
+dnl Check for ACE_Handle_Set optimized for select()
+ACE_CACHE_CHECK(for ACE_Handle_Set optimized for select(),
+ ace_cv_feature_handle_set_optimized_for_select,[
+ ace_cv_feature_handle_set_optimized_for_select=yes
+ # TODO: We know how to check this. We need to:
+ #
+ # 1. Compile and link a file.
+ # 2. Run nm on that file.
+ #
+ # How do we do that?
+ ], AC_DEFINE(ACE_HAS_HANDLE_SET_OPTIMIZED_FOR_SELECT),)
+
+dnl Even we if we don't have IP multicasting, we still need to define
+dnl "ACE_HAS_IP_MULTICAST" since struct ip_mreq gets redefined by ACE.
+dnl What do we do about this problem?
+dnl -Ossama
+dnl Check for IP multicast support
+ACE_CACHE_CHECK(for IP multicast support,
+ ace_cv_feature_ip_multicast,[
+ AC_TRY_COMPILE(
+ [
+#ifndef ACE_LACKS_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#include <netinet/in.h>
+ ],
+ [
+ ip_mreq im;
+ ],
+ [
+ ace_cv_feature_ip_multicast=yes
+ ],
+ [
+dnl Some platforms define ip_mreq in <sys/netinet/in.h>.
+ AC_TRY_COMPILE(
+ [
+#ifndef ACE_LACKS_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#include <sys/netinet/in.h>
+ ],
+ [
+ ip_mreq im;
+ ],
+ [
+ ace_cv_feature_ip_multicast=yes
+ ],
+ [
+ ace_cv_feature_ip_multicast=no
+ ])
+ ])
+ ], AC_DEFINE(ACE_HAS_IP_MULTICAST),)
+
+ACE_CACHE_CHECK(if platform runs on an Alpha,
+ ace_cv_feature_alpha,[
+ case "$target" in
+ alpha*)
+ ace_cv_feature_alpha=yes
+ ;;
+ *)
+ ace_cv_feature_alpha=no
+ ;;
+ esac
+ ],
+ [
+ case "$target" in
+ *linux*)
+ dnl We only define ACE_HAS_ALPHA_TIMER if we are running Linux
+ dnl on an Alpha and are using GNU C++!
+ if test -n "$GXX"; then
+ AC_DEFINE(ACE_HAS_ALPHA_TIMER)
+ fi
+ ;;
+ esac
+ ],)
+
+ACE_CACHE_CHECK(if platform runs on a Power PC,
+ ace_cv_feature_powerpc,[
+ case "$target" in
+ powerpc*)
+ ace_cv_feature_powerpc=yes
+ ;;
+ *)
+ ace_cv_feature_powerpc=no
+ ;;
+ esac
+ ],
+ [
+ case "$target" in
+ *aix*)
+ dnl We don't do anything for AIX since AIX already has a
+ dnl hi-res timer function!
+ ;;
+ *)
+ dnl Only define ACE_HAS_POWERPC_TIMER when using GNU C++!
+ if test -n "$GXX"; then
+ AC_DEFINE(ACE_HAS_POWERPC_TIMER)
+ fi
+ ;;
+ esac
+ ],)
+
+ACE_CACHE_CHECK(if platform runs on a Pentium(tm) processor,
+ ace_cv_feature_pentium,[
+ case "$target" in
+ i386-* | i486-* |i586-* | i686-*)
+dnl If we do have a pentium, than define ACE_HAS_PENTIUM and add
+dnl gethrtime.cpp to the source list
+ ace_cv_feature_pentium=yes
+ ;;
+ *)
+ ace_cv_feature_pentium=no
+ ;;
+ esac
+ ],
+ [
+ AC_DEFINE(ACE_HAS_PENTIUM)
+ ],)
+AM_CONDITIONAL(ACE_ON_PENTIUM, test X$ace_cv_feature_pentium = Xyes)
+
+dnl We need to convert warnings to errors here since GNU C++ just gives
+dnl a warning about an implicit declaration of getpgid.
+ACE_CONVERT_WARNINGS_TO_ERRORS( dnl
+[
+dnl getpgid() requires _GNU_SOURCE to be defined in some platforms.
+dnl First check to see if getgpid calls fail without _GNU_SOURCE defines
+ACE_CACHE_CHECK(if platform requires _GNU_SOURCE for getpgid definition,
+ ace_cv_feature_gnu_source,[
+ AC_TRY_COMPILE(
+ [
+#ifndef ACE_LACKS_UNISTD_H
+# include <unistd.h>
+#endif
+ ],
+ [
+ int id = getpgid(0);
+ ],
+ [
+ ace_cv_feature_gnu_source=no
+ ],
+ [
+dnl Now check to make sure that these defines actually fix getpgid
+ AC_TRY_COMPILE(
+ [
+#define _GNU_SOURCE
+/* #define _GNU_SOURCE_EXTENDED */
+#ifndef ACE_LACKS_UNISTD_H
+# include <unistd.h>
+#endif
+ ],
+ [
+ int id = getpgid(0);
+ ],
+ [
+ ace_cv_feature_gnu_source=yes
+ ],
+ [
+ ace_cv_feature_gnu_source=no
+ ])
+ ])
+ ], AC_DEFINE(_GNU_SOURCE),)
+]) dnl ACE_CONVERT_WARNINGS_TO_ERRORS
+
+dnl Check if platform only supports SCHED_OTHER scheduling policy
+ACE_CACHE_CHECK(if platform only supports SCHED_OTHER scheduling policy,
+ ace_cv_feature_only_have_sched_other,[
+ AC_EGREP_CPP(WE_ONLY_HAVE_SCHED_OTHER,
+ [
+#ifdef ACE_HAS_PTHREADS
+# include <pthread.h>
+#elif defined (ACE_HAS_STHREADS)
+# include <thread.h>
+#endif
+
+#if defined (ACE_LACKS_SCHED_H)
+# include <sched.h>
+#endif
+
+ /* These are ORed so that ACE will not redefine
+ any of them if any of them exist. */
+#if !defined (SCHED_FIFO) && \
+ !defined (SCHED_RR)
+ WE_ONLY_HAVE_SCHED_OTHER
+#endif
+ ],
+ [
+ ace_cv_feature_only_have_sched_other=yes
+ ],
+ [
+ ace_cv_feature_only_have_sched_other=no
+ ])
+ ], AC_DEFINE(ACE_HAS_ONLY_SCHED_OTHER),)
+
+dnl
+dnl SECTION 14: checks for aggregated features
+dnl TODO: Little by little, get rid of these...
+dnl
+
+
+dnl Macro ACE_HAS_REENTRANT_FUNCTIONS means the following functions
+dnl are usable:
+dnl
+dnl rand_r
+dnl strtok_r
+dnl getpwnam_r (if we don't have, define ACE_LACKS_PWD_REENTRANT_FUNCTIONS)
+dnl ctime_r
+dnl localtime_r
+dnl gmtime_r
+dnl asctime_r
+dnl * getprotobyname_r
+dnl * getprotobynumber_r
+dnl * gethostbyaddr_r
+dnl * gethostbyname_r
+dnl * getservbyname_r
+dnl
+dnl Those marked with '*' are NOT usable if
+dnl ACE_LACKS_NETDB_REENTRANT_FUNCTIONS) is defined.
+dnl
+dnl The time has come to create feature macros for each of these...
+dnl With the separate feature macros, we will define (for now)
+dnl ACE_HAS_REENTRANT_FUNCTIONS only when all of those WITHOUHT a '*'
+dnl are defined. Also, if any of those with '*' are missing, we will
+dnl define ACE_LACKS_NETDB_REENTRANT_FUNCTIONS.
+
+dnl Don't bother with reentrant functions if they are disabled by the user.
+if test "$ace_user_enable_reentrant_funcs" = yes &&
+ test "$ac_cv_func_rand_r" = yes &&
+ test "$ac_cv_func_strtok_r" = yes &&
+ test "$ac_cv_func_ctime_r" = yes &&
+ test "$ac_cv_func_localtime_r" = yes &&
+ test "$ac_cv_func_gmtime_r" = yes &&
+ test "$ac_cv_func_asctime_r" = yes; then
+ AC_DEFINE(ACE_HAS_REENTRANT_FUNCTIONS
+fi
+
+dnl Don't bother with reentrant functions if they are disabled by the user.
+if test "$ace_user_enable_reentrant_funcs" = no ||
+ test "$ac_cv_func_getprotobyname_r" = no ||
+ test "$ac_cv_func_getprotobynumber_r" = no ||
+ test "$ac_cv_func_gethostbyaddr_r" = no ||
+ test "$ac_cv_func_gethostbyname_r" = no ||
+ test "$ac_cv_func_getservbyname_r" = no; then
+ AC_DEFINE(ACE_LACKS_NETDB_REENTRANT_FUNCTIONS)
+fi
+
+dnl FIXME!!!
+dnl The following is a kludge until the netdb reentrant function
+dnl number of arguments is handled.
+case "$target" in
+ *linux*) AC_DEFINE(ACE_LACKS_NETDB_REENTRANT_FUNCTIONS);;
+ *) ;;
+esac
+
+
+dnl Macro ACE_LACKS_SOME_POSIX_PROTOTYPES implies any of the following
+dnl features:
+dnl
+dnl ! ACE_HAS_MSGSND_MSGBUFP_2
+dnl ! ACE_LACKS_MSGRCV_VOIDP_2
+dnl ! ACE_LACKS_SHMAT_VOIDP_2
+dnl ! ACE_LACKS_SIGACTION_CONSTP_2
+dnl
+dnl So, for now, we define it if any of those were autoconf'ed.
+
+if test "$ace_cv_lib_posix_msgsnd_msgbufp_2" = yes ||
+ test "$ace_cv_lib_posix_msgrcv_voidp_2" != yes ||
+ test "$ace_cv_lib_posix_shmat_voidp_2" != yes ||
+ test "$ace_cv_lib_posix_sigaction_constp_2" != yes; then
+ AC_DEFINE(ACE_LACKS_SOME_POSIX_PROTOTYPES)
+fi
+
+if test "$ac_cv_func_msgctl" = yes &&
+ test "$ac_cv_func_msgget" = yes &&
+ test "$ac_cv_func_msgrcv" = yes &&
+ test "$ac_cv_func_semctl" = yes &&
+ test "$ac_cv_func_semget" = yes &&
+ test "$ac_cv_func_semop" = yes &&
+ test "$ac_cv_func_shmat" = yes &&
+ test "$ac_cv_func_shmctl" = yes &&
+ test "$ac_cv_func_shmdt" = yes &&
+ test "$ac_cv_func_shmget" = yes; then
+ AC_DEFINE(ACE_HAS_SYSV_IPC)
+fi
+
+if test "$ac_cv_func_shmat" != yes ||
+ test "$ac_cv_func_shmctl" != yes ||
+ test "$ac_cv_func_shmdt" != yes ||
+ test "$ac_cv_func_shmget" != yes; then
+ AC_DEFINE(ACE_LACKS_SYSV_SHMEM)
+fi
+
+dnl Check for what POSIX threads draft we have
+AC_MSG_CHECKING(which POSIX thread library was found)
+
+ace_has_pthreads=no
+
+dnl Check if we have Pthreads Draft 4
+dnl if test "$ac_cv_func_pthread_delay_np" = yes &&
+if test "$ac_cv_func_pthread_mutexattr_create" = yes &&
+dnl test "$ac_cv_func_pthread_mutexattr_setkind_np" = yes &&
+ test "$ac_cv_func_pthread_mutexattr_delete" = yes &&
+ test "$ac_cv_func_pthread_condattr_delete" = yes &&
+ test "$ac_cv_func_pthread_condattr_create" = yes &&
+ test "$ac_cv_func_pthread_setprio" = yes &&
+ test "$ac_cv_func_pthread_getprio" = yes &&
+dnl test "$ac_cv_func_pthread_getspecific" = yes &&
+ test "$ac_cv_func_pthread_setcancel" = yes &&
+ test "$ac_cv_func_pthread_setasynccancel" = yes &&
+ test "$ac_cv_func_pthread_kill" = yes; then
+ ace_has_pthreads=yes
+ AC_MSG_RESULT(POSIX Threads Draft 4)
+ AC_DEFINE(ACE_HAS_PTHREADS_DRAFT4)
+dnl Check if we have Pthreads Draft 6
+elif test "$ac_cv_func_pthread_mutexattr_init" = yes &&
+ test "$ac_cv_func_pthread_mutexattr_destroy" = yes &&
+ test "$ac_cv_func_pthread_condattr_destroy" = yes &&
+ test "$ac_cv_func_pthread_condattr_init" = yes &&
+ test "$ac_cv_func_pthread_attr_setprio" = yes &&
+ test "$ac_cv_func_pthread_attr_getprio" = yes &&
+ test "$ac_cv_func_pthread_setintr" = yes &&
+ test "$ac_cv_func_pthread_setintrtype" = yes; then
+ ace_has_pthreads=yes
+ AC_MSG_RESULT(POSIX Threads Draft 6)
+ AC_DEFINE(ACE_HAS_PTHREADS_DRAFT6)
+dnl Check if we have Pthreads Draft 7
+elif test "$ac_cv_func_pthread_mutexattr_init" = yes &&
+ test "$ac_cv_func_pthread_mutexattr_destroy" = yes &&
+ test "$ac_cv_func_pthread_condattr_destroy" = yes &&
+ test "$ac_cv_func_pthread_condattr_init" = yes &&
+ test "$ac_cv_func_pthread_setschedparam" = yes &&
+ test "$ac_cv_func_pthread_getschedparam" = yes &&
+ test "$ac_cv_func_pthread_setcancelstate" = yes &&
+ test "$ac_cv_func_pthread_setcanceltype" = yes &&
+ test "$ace_has_sched_yield" != yes; then
+ ace_has_pthreads=yes
+ AC_MSG_RESULT(POSIX Threads Draft 7)
+ AC_DEFINE(ACE_HAS_PTHREADS_DRAFT7)
+dnl Check if we have Pthreads Draft Standard
+elif test "$ac_cv_func_pthread_mutexattr_init" = yes &&
+ test "$ac_cv_func_pthread_mutexattr_destroy" = yes &&
+ test "$ac_cv_func_pthread_condattr_destroy" = yes &&
+ test "$ac_cv_func_pthread_condattr_init" = yes &&
+ test "$ac_cv_func_pthread_setschedparam" = yes &&
+ test "$ac_cv_func_pthread_getschedparam" = yes &&
+ test "$ac_cv_func_pthread_setcancelstate" = yes &&
+ test "$ac_cv_func_pthread_setcanceltype" = yes &&
+ test "$ace_has_sched_yield" = yes; then
+ ace_has_pthreads=yes
+ AC_MSG_RESULT(POSIX Threads Draft Standard)
+ AC_DEFINE(ACE_HAS_PTHREADS_STD)
+else
+ ace_has_pthreads=no
+ AC_MSG_RESULT(none)
+fi dnl PTHREAD DRAFT CHECKS
+
+dnl Check if we have UNIX International threads
+AC_MSG_CHECKING(if a UNIX International thread library was found)
+if test "$ace_has_sthreads" = yes; then
+ AC_MSG_RESULT(yes)
+else
+ AC_MSG_RESULT(no)
+fi
+
+if test "$ace_user_enable_threads" != yes ||
+ test "$ace_has_pthreads" != yes &&
+ test "$ace_has_sthreads" != yes; then
+dnl We don't have a usable thread library!
+ ace_user_enable_threads=no
+ AC_MSG_WARN(It appears that you do NOT have any usable thread libraries)
+ AC_MSG_WARN(or thread support was explicitly disabled.)
+ AC_MSG_WARN(Disabling thread support.)
+ dnl ACE uses different versions of readdir_r depending on the thread
+ dnl library being used, i.e. on the ACE_HAS_*THREADS* macros. Since
+ dnl it doesn't seem like a good idea to define any ACE_HAS_*THREADS*
+ dnl macro if ACE won't be supporting threads, define ACE_LACKS_READDIR_R
+ dnl regardless if readdir_r() exists.
+ if test "$ac_cv_func_readdir_r" = yes; then
+ AC_MSG_WARN(Disabling support for readdir_r() since thread support)
+ AC_MSG_WARN(is being disabled.)
+ AC_DEFINE(ACE_LACKS_READDIR_R)
+ fi dnl test "$ac_cv_func_readdir_r" = yes
+fi dnl
+
+if test "$ace_user_enable_threads" = yes; then
+dnl If we get this far then we have threads.
+dnl FIXME: The "_POSIX" macros may need to be defined _before_ the checks for
+dnl reentrant functions! However, we don't want to define them if
+dnl the UNIX International threads library was detected.
+ AC_DEFINE(ACE_HAS_THREADS)
+ AC_DEFINE(ACE_MT_SAFE)
+ AC_DEFINE(_REENTRANT)
+ if test "$ace_has_pthreads" = yes &&
+ test "$ace_has_sthreads" != yes; then
+ AC_DEFINE(_POSIX_THREADS)
+ AC_DEFINE(_POSIX_THREAD_SAFE_FUNCTIONS)
+ AC_DEFINE(_POSIX_PTHREAD_SEMANTICS)
+ fi dnl test "$ace_has_pthreads" = yes
+fi dnl test "$ace_user_enable_threads" = yes
+
+
+if test "$ac_cv_header_libc_h" != yes ||
+ test "$ac_cv_header_osfcn_h" != yes; then
+ AC_DEFINE(ACE_HAS_CPLUSPLUS_HEADERS)
+fi
+
+
+
+if test "$ace_cv_lib_signal_vi1_2" = yes &&
+ test "$ace_cv_lib_signal_vi1_ret" = yes &&
+ test "$ace_cv_lib_struct_sigaction_vi1_handler" = yes; then
+ AC_DEFINE(ACE_HAS_CONSISTENT_SIGNAL_PROTOTYPES)
+elif test "$ace_cv_lib_signal_vi1_2" != yes &&
+ test "$ace_cv_lib_signal_vv1_2" != yes &&
+ test "$ace_cv_lib_signal_vi1a2_2" != yes &&
+ test "$ace_cv_lib_signal_va1_2" = yes &&
+ test "$ace_cv_lib_signal_vi1_ret" != yes &&
+ test "$ace_cv_lib_signal_vv1_ret" != yes &&
+ test "$ace_cv_lib_signal_vi1a2_ret" != yes &&
+ test "$ace_cv_lib_signal_va1_ret" = yes &&
+ test "$ace_cv_lib_struct_sigaction_vi1_handler" != yes &&
+ test "$ace_cv_lib_struct_sigaction_vv1_handler" != yes &&
+ test "$ace_cv_lib_struct_sigaction_vi1a2_handler" != yes &&
+ test "$ace_cv_lib_struct_sigaction_va1_handler" = yes; then
+ AC_DEFINE(ACE_HAS_LYNXOS_SIGNALS)
+ AC_DEFINE(ACE_HAS_TANDEM_SIGNALS)
+ AC_DEFINE(ACE_HAS_IRIX_53_SIGNALS)
+ AC_DEFINE(ACE_HAS_SUNOS4_SIGNAL_T)
+elif test "$ace_cv_lib_signal_vi1a2_2" = yes &&
+ test "$ace_cv_lib_signal_vi1a2_ret" = yes &&
+ test "$ace_cv_lib_struct_sigaction_vi1a2_handler" = yes; then
+ AC_DEFINE(ACE_HAS_SPARCWORKS_401_SIGNALS)
+elif test "$ace_cv_lib_signal_vi1_2" = yes &&
+ test "$ace_cv_lib_signal_vi1_ret" = yes &&
+ test "$ace_cv_lib_struct_sigaction_vi1_handler" != yes; then
+ AC_DEFINE(ACE_HAS_SVR4_SIGNAL_T)
+elif test "$ace_cv_lib_signal_vi1_2" = yes &&
+ test "$ace_cv_lib_signal_vv1_ret" = yes &&
+ test "$ace_cv_lib_struct_sigaction_vv1_handler" = yes; then
+ AC_DEFINE(ACE_HAS_SVR4_SIGNAL_T)
+elif test "$ace_cv_lib_signal_vi1_2" = yes &&
+ test "$ace_cv_lib_signal_vi1_ret" != yes &&
+ test "$ace_cv_lib_signal_vv1_ret" != yes &&
+ test "$ace_cv_lib_signal_vi1a2_ret" != yes &&
+ test "$ace_cv_lib_signal_va1_ret" = yes &&
+ test "$ace_cv_lib_struct_sigaction_vi1_handler" != yes &&
+ test "$ace_cv_lib_struct_sigaction_vv1_handler" != yes &&
+ test "$ace_cv_lib_struct_sigaction_vi1a2_handler" != yes &&
+ test "$ace_cv_lib_struct_sigaction_va1_handler" = yes; then
+ AC_DEFINE(ACE_HAS_UNIXWARE_SVR4_SIGNAL_T)
+fi dnl ACE_HAS_CONSISTENT_SIGNAL_PROTOTYPES
+
+dnl
+dnl SECTION 15: Final checks
+dnl
+
+dnl At some point the below platform specific settings should be automated
+dnl as much as possible! We set things manually just to get things going
+dnl with the auto{conf,make}/libtool integration into the ACE source tree.
+
+dnl Platform specific flags
+case "$target" in
+ *aix3*)
+ AC_DEFINE(ACE_DEFAULT_BASE_ADDR, ((char *) 0x80000000))
+ ;;
+ *aix4.1*)
+ AC_DEFINE(AIX)
+ AC_DEFINE(ACE_DEFAULT_BASE_ADDR, ((char *) 0x80000000))
+ AC_DEFINE(ACE_HAS_AIX_BROKEN_SOCKET_HEADER)
+ ;;
+ *aix4.2*)
+ AC_DEFINE(AIX)
+ AC_DEFINE(ACE_DEFAULT_BASE_ADDR, ((char *) 0x80000000))
+dnl AC_DEFINE(ACE_HAS_AIX_BROKEN_SOCKET_HEADER)
+ AC_DEFINE(ACE_TLI_TCP_DEVICE, "/dev/xti/tcp")
+ ;;
+ *cray*)
+ ;;
+ *dgux4.11*)
+ AC_DEFINE(ACE_DGUX)
+ AC_DEFINE(IP_ADD_MEMBERSHIP, 0x13)
+ AC_DEFINE(IP_DROP_MEMBERSHIP, 0x14)
+ ;;
+ *dgux4*)
+ AC_DEFINE(ACE_DGUX)
+ AC_DEFINE(IP_ADD_MEMBERSHIP, 0x13)
+ AC_DEFINE(IP_DROP_MEMBERSHIP, 0x14)
+ ;;
+ *freebsd*)
+ ;;
+ *fsu*)
+dnl FIXME: "FSU" isn't a platform! We need to move this somewhere.
+ AC_DEFINE(PTHREAD_STACK_MIN, (1024*10))
+ ;;
+ *hpux9*)
+ AC_DEFINE(HPUX)
+ ;;
+ *hpux10*)
+ AC_DEFINE(HPUX)
+ AC_DEFINE(HPUX_10)
+ AC_DEFINE(ACE_DEFAULT_BASE_ADDR, ((char *) 0x80000000))
+ AC_DEFINE(ACE_TLI_TCP_DEVICE, "/dev/inet_cots")
+ ;;
+ *hpux11*)
+ AC_DEFINE(HPUX)
+ AC_DEFINE(HPUX_11)
+ AC_EGREP_CPP(ACE_ON_64BIT_HP,
+ [
+#ifdef __LP64__
+ ACE_ON_64BIT_HP
+#endif
+ ],
+ [
+ AC_DEFINE(ACE_DEFAULT_BASE_ADDR, ((char *) 0x0000001100000000))
+ AC_DEFINE(ACE_DEFAULT_BASE_ADDRL, ((char *) 0x0000001100000000))
+ ],
+ [
+ AC_DEFINE(ACE_DEFAULT_BASE_ADDR, ((char *) 0x80000000))
+ ])
+ AC_DEFINE(ACE_TIMER_SKEW, (1000 * 10))
+ ;;
+ *irix5.2*)
+ AC_DEFINE(IRIX5)
+ ;;
+ *irix5.3*)
+ AC_DEFINE(IRIX5)
+ ;;
+ *irix6*)
+ AC_DEFINE(IRIX6)
+ AC_DEFINE(ACE_HAS_IRIX62_THREADS)
+ AC_DEFINE(ACE_DEFAULT_BASE_ADDR, ((char *) (1024U * 1024 * 1024)))
+ if test "$ace_user_enable_threads" = yes; then
+ AC_DEFINE(ACE_HAS_IRIX62_THREADS)
+ fi
+ AC_DEFINE(ACE_TIMER_SKEW, (1000 * 10))
+ ;;
+ *linux*)
+ AC_DEFINE(ACE_DEFAULT_MAX_SOCKET_BUFSIZ, 65535)
+ AC_DEFINE(ACE_DEFAULT_SELECT_REACTOR_SIZE, 256)
+ AC_DEFINE(ACE_DEFAULT_BASE_ADDR, ((char *) 0x80000000))
+ AC_DEFINE(ACE_HAS_BIG_FD_SET) dnl FIXME: We need a test for this!
+ AC_DEFINE(ACE_UINT64_FORMAT_SPECIFIER, "%Lu")
+ AC_DEFINE(ACE_TIMER_SKEW, (1000 * 10))
+ ;;
+ *lynxos*)
+ AC_DEFINE(ACE_MALLOC_ALIGN, 8)
+ AC_DEFINE(ACE_MAP_PRIVATE, ACE_MAP_SHARED)
+ AC_DEFINE(ACE_USE_RCSID, 0)
+ AC_DEFINE(ACE_HAS_LYNXOS_SIGNALS)
+ AC_DEFINE(ACE_TIMER_SKEW, (1000 * 10))
+ ;;
+ *m88k*)
+ AC_DEFINE(m88k)
+ AC_DEFINE(__m88k__)
+ AC_DEFINE(IP_ADD_MEMBERSHIP, 0x13)
+ AC_DEFINE(IP_DROP_MEMBERSHIP, 0x14)
+ ;;
+ *mvs*)
+ ;;
+ *netbsd*)
+ AC_DEFINE(ACE_NETBSD)
+ ;;
+ *osf3.2*)
+ AC_EGREP_CPP(ACE_DEC_CXX,
+ [
+#if defined(__DECCXX)
+ ACE_DEC_CXX
+#endif
+ ],
+ [
+ AC_DEFINE(DEC_CXX)
+ ],)
+ ;;
+ *osf4.0*)
+dnl We need to add checks for g++, DEC C++ and Rational C++
+ AC_EGREP_CPP(ACE_DEC_CXX,
+ [
+#if defined(__DECCXX)
+ ACE_DEC_CXX
+#endif
+ ],
+ [
+ AC_DEFINE(DEC_CXX)
+ ],)
+dnl Check for _POSIX_C_SOURCE macro
+ AC_EGREP_CPP(ACE_ON_DEC_WITH_POS_SRC,
+ [
+ /* Include unistd.h to define _POSIX_C_SOURCE. */
+#ifndef ACE_LACKS_UNISTD_H
+# include <unistd.h>
+#endif
+
+#if defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 199506L)
+ ACE_ON_DEC_WITH_POS_SRC
+#endif
+ ],
+ [
+ AC_DEFINE(DIGITAL_UNIX)
+ ],)
+ AC_DEFINE(ACE_DEFAULT_BASE_ADDR, ((char *) 0x80000000))
+ AC_DEFINE(ACE_NEEDS_HUGE_THREAD_STACKSIZE, (1024 * 1024))
+ AC_DEFINE(ACE_TIMER_SKEW, (1000 * 10))
+ ;;
+ *psos*)
+ AC_DEFINE(ACE_PSOS)
+ AC_DEFINE(ACE_PSOSIM)
+ AC_DEFINE(ACE_PSOSTBD)
+ dnl need ACE_HAS_TSS_EMULATION for ACE_DEFAULT_THREAD_KEYS!
+ AC_EGREP_CPP(ACE_TSS_EMULATION,
+ [
+#if defined (ACE_HAS_TSS_EMULATION)
+ ACE_TSS_EMULATION
+#endif
+ ], AC_DEFINE(ACE_DEFAULT_THREAD_KEYS, 256),)
+ AC_DEFINE(ACE_MAIN, extern "C" void root)
+ AC_DEFINE(ACE_MALLOC_ALIGN, 8)
+ AC_DEFINE(ACE_USE_RCSID, 0)
+ ;;
+ *sco4.2*)
+ AC_DEFINE(SCO)
+ AC_DEFINE(ACE_DEFAULT_CLOSE_ALL_HANDLES, 0)
+ ;;
+ *sco5*)
+ AC_DEFINE(SCO)
+ AC_DEFINE(ACE_DEFAULT_CLOSE_ALL_HANDLES, 0)
+ AC_DEFINE(ACE_HAS_BIG_FD_SET) dnl FIXME: We need a test for this!
+ ;;
+ *sunos4*)
+ AC_DEFINE(ACE_TIMER_SKEW, (1000 * 10))
+ ;;
+ *solaris2.4*)
+ AC_DEFINE(ACE_TIMER_SKEW, (1000 * 10))
+ AC_DEFINE(ACE_NEEDS_LWP_PRIO_SET)
+ ;;
+ *solaris2.5*)
+ AC_DEFINE(ACE_MALLOC_ALIGN, 8)
+ AC_DEFINE(ACE_TIMER_SKEW, (1000 * 10))
+ AC_DEFINE(ACE_NEEDS_LWP_PRIO_SET)
+ ;;
+ *solaris2.6*)
+ AC_DEFINE(ACE_MALLOC_ALIGN, 8)
+ AC_DEFINE(ACE_TIMER_SKEW, (1000 * 10))
+ AC_DEFINE(ACE_NEEDS_LWP_PRIO_SET)
+ ;;
+ *solaris2.7*)
+ AC_DEFINE(ACE_MALLOC_ALIGN, 8)
+ AC_DEFINE(ACE_TIMER_SKEW, (1000 * 10))
+ AC_DEFINE(ACE_NEEDS_LWP_PRIO_SET)
+ ;;
+ *86*solaris*)
+ AC_DEFINE(ACE_HAS_X86_STAT_MACROS)
+ AC_DEFINE(ACE_TIMER_SKEW, (1000 * 10))
+ AC_DEFINE(ACE_NEEDS_LWP_PRIO_SET)
+ ;;
+ *tandem*)
+ AC_DEFINE(ACE_TIMER_SKEW, (1000 * 10))
+ ;;
+ *unixware2.0*)
+ AC_DEFINE(UNIXWARE)
+ AC_DEFINE(UNIXWARE_2_0)
+ ;;
+ *unixware2.1*)
+ AC_DEFINE(UNIXWARE)
+ AC_DEFINE(UNIXWARE_2_1)
+ ;;
+ *vxworks*)
+ AC_DEFINE(VXWORKS)
+ AC_DEFINE(ACE_MAIN, ace_main)
+ AC_DEFINE(ACE_DEFAULT_MAX_SOCKET_BUFSIZ, 32768)
+ dnl need ACE_HAS_TSS_EMULATION for ACE_DEFAULT_THREAD_KEYS!
+ AC_EGREP_CPP(ACE_TSS_EMULATION,
+ [
+#if defined (ACE_HAS_TSS_EMULATION)
+ ACE_TSS_EMULATION
+#endif
+ ], AC_DEFINE(ACE_DEFAULT_THREAD_KEYS, 16),)
+ AC_DEFINE(ACE_THR_PRI_FIFO_DEF, 101)
+ AC_DEFINE(ACE_USE_RCSID, 0)
+ ;;
+ *cygwin32*)
+ ;;
+ *win32*)
+ AC_DEFINE(ACE_WIN32)
+ AC_DEFINE(ACE_UINT64_FORMAT_SPECIFIER, "%I64u")
+dnl AC_DEFINE(ACE_USE_SELECT_REACTOR_FOR_REACTOR_IMPL)
+ if test "$ace_u_long_long_typedef_set" != yes; then
+ ACE_UINT64="unsigned __int64"
+ ace_u_long_long_typedef_set=yes
+ fi dnl "$ace_u_long_long_typedef_set" != yes
+ ;;
+ *)
+ ;;
+esac
+
+dnl Make final substitutions and defines
+if test "$ace_u_long_long_typedef_set" = yes; then
+ AC_DEFINE_UNQUOTED(ACE_UINT64_TYPEDEF, $ACE_UINT64)
+fi
+
+dnl Additional flags to set by the configure script
+
+if test -n "$GXX"; then
+ ACE_CXXFLAGS="$ACE_CXXFLAGS -Wall -Wpointer-arith"
+ if test "$ace_user_enable_repo" = no; then
+ ACE_CXXFLAGS="$ACE_CXXFLAGS -fno-implicit-templates"
+ fi
+fi
+
+if test -n "$GCC"; then
+ ACE_CFLAGS="$ACE_CFLAGS -Wall -Wpointer-arith"
+fi
+
+dnl Combine package set flags with user's flags.
+dnl User's flags go after package flags to allow user to override
+dnl package defaults.
+dnl X_CFLAGS comes from AC_PATH_XTRA. It may include, for example,
+dnl additional include file paths or macros that need to be defined
+dnl in order for X11 related files to be compiled properly.
+if test "$ace_user_enable_optimize"; then
+ dnl We want OCXXFLAGS to be on the end, so we use CXXFLAGS,
+ dnl not ACE_CXXFLAGS!
+ CXXFLAGS="$CXXFLAGS $OCXXFLAGS"
+ CFLAGS="$CFLAGS $OCFLAGS"
+fi
+CXXFLAGS="$ACE_CXXFLAGS $X_CFLAGS $CXXFLAGS"
+CXXCPPFLAGS="$ACE_CXXCPPFLAGS $CXXCPPFLAGS"
+CFLAGS="$ACE_CFLAGS $X_CFLAGS $CFLAGS"
+CPPFLAGS="$ACE_CPPFLAGS $CPPFLAGS"
+LDFLAGS="$ACE_LDFLAGS $LDFLAGS"
+
+dnl These tests should be performed _after_ the bulk of the ACE macros
+dnl have been defined.
+
+dnl Check for ACE iostream support
+ACE_CACHE_CHECK(for ACE iostream support,
+ ace_cv_feature_ace_iostream,
+ [
+ dnl We want an empty ace/config.h to prevent multiple defines
+ dnl with Autocnf's confdefs.h
+ ACE_USE_TEMP_FILE(ace/config.h,
+ [
+ dnl Now run the compilation test
+ ACE_TRY_COMPILE([-I. -I${srcdir}],
+ [
+#if defined(ACE_UINT64_TYPEDEF)
+ typedef ACE_UINT64_TYPEDEF ACE_UINT64;
+#endif /* ACE_UINT64_TYPEDEF */
+
+#include "ace/IOStream.cpp"
+ ],
+ [
+ int a=0; a += 1;
+ ],
+ [
+ ace_cv_feature_ace_iostream=yes
+ ],
+ [
+ ace_cv_feature_ace_iostream=no
+ ])
+ ])
+ ], , AC_DEFINE(ACE_LACKS_ACE_IOSTREAM))
+
+dnl Check if ACE needs minimum iostream header inclusion
+ACE_CACHE_CHECK(if ACE needs minimum iostream header inclusion,
+ ace_cv_lib_minimum_iostream,
+ [
+ dnl We want an empty ace/config.h to prevent multiple defines
+ dnl with Autoconf's confdefs.h
+ ACE_USE_TEMP_FILE(ace/config.h,
+ [
+ dnl Now run the compilation test
+ ACE_TRY_COMPILE([-I. -I${srcdir}],
+ [
+#if defined(ACE_UINT64_TYPEDEF)
+ typedef ACE_UINT64_TYPEDEF ACE_UINT64;
+#endif /* ACE_UINT64_TYPEDEF */
+
+#include "ace/OS.cpp"
+ ],
+ [
+ int a=0; a += 1;
+ ],
+ [
+ ace_cv_lib_minimum_iostream=no
+ ],
+ [
+ dnl Now check if ACE_HAS_MINIMUM_IOSTREAMH_INCLUSION makes
+ dnl compilation work!
+ ACE_TRY_COMPILE([-I. -I${srcdir}],
+ [
+#if defined(ACE_UINT64_TYPEDEF)
+ typedef ACE_UINT64_TYPEDEF ACE_UINT64;
+#endif /* ACE_UINT64_TYPEDEF */
+
+#define ACE_HAS_MINIMUM_IOSTREAMH_INCLUSION
+#include "ace/OS.cpp"
+ ],
+ [
+ int a=0; a += 1;
+ ],
+ [
+ ace_cv_lib_minimum_iostream=yes
+ ],
+ [
+ dnl If we get here, then we have no idea what is wrong!
+ ace_cv_lib_minimum_iostream=no
+ ])
+ ])
+ ])
+ ], AC_DEFINE(ACE_HAS_MINIMUM_IOSTREAMH_INCLUSION),)
+
+dnl Check if compiler can't handle the static ACE_Addr::sap_any construct
+ACE_CACHE_CHECK(for ACE_addr::sap_any support,
+ ace_cv_lib_sap_any_support,
+ [
+ dnl We want an empty ace/config.h to prevent multiple defines
+ dnl with Autoconf's confdefs.h
+ ACE_USE_TEMP_FILE(ace/config.h,
+ [
+ dnl Now run the compilation test
+ ACE_TRY_COMPILE([-I. -I${srcdir}],
+ [
+#if defined(ACE_UINT64_TYPEDEF)
+ typedef ACE_UINT64_TYPEDEF ACE_UINT64;
+#endif /* ACE_UINT64_TYPEDEF */
+
+#include "ace/Addr.cpp"
+ ],
+ [
+ int a=0; a += 1;
+ ],
+ [
+ ace_cv_lib_sap_any_support=yes
+ ],
+ [
+ dnl Now check if ACE_HAS_BROKEN_SAP_ANY makes
+ dnl compilation work!
+ ACE_TRY_COMPILE([-I. -I${srcdir}],
+ [
+#if defined(ACE_UINT64_TYPEDEF)
+ typedef ACE_UINT64_TYPEDEF ACE_UINT64;
+#endif /* ACE_UINT64_TYPEDEF */
+
+#define ACE_HAS_BROKEN_SAP_ANY
+#include "ace/Addr.cpp"
+ ],
+ [
+ int a=0; a += 1;
+ ],
+ [
+ ace_cv_lib_sap_any_support=no
+ ],
+ [
+ dnl If we get here, then we have no idea what is wrong!
+ ace_cv_lib_sap_any_support=yes
+ ])
+ ])
+ ])
+ ],, AC_DEFINE(ACE_HAS_BROKEN_SAP_ANY))
+
+dnl End ACE macro tests!
+
+dnl Substitute whatever X libraries ACE needs, if any.
+AC_SUBST(ACE_XLIBS)
+
+dnl Prepend purify and quantify command lines if purify and quantify are
+dnl enabled. Otherwise, PURELINK and PRELINK will just be "blank."
+LD="$PURELINK $PRELINK $LD"
+dnl LDFLAGS="$ACE_LDFLAGS $LDFLAGS"
+
+dnl AC_SUBST(LDFLAGS)
+dnl AC_SUBST(LIBOBJS)
+
+dnl These definitions are expanded in the makefile and ace-config
+if test "$no_x" != yes; then
+ ACE_LIBDIR="${X_LIBS} -L\${libdir}"
+else
+ ACE_LIBDIR='-L${libdir}'
+fi
+ACE_LIBS="${X_PRE_LIBS} ${ACE_XLIBS} ${X_EXTRA_LIBS} ${LIBS}"
+ACE_INCLUDEDIR='-I${includedir}'
+
+AC_SUBST(ACE_LIBDIR)
+AC_SUBST(ACE_LIBS)
+AC_SUBST(ACE_INCLUDEDIR)
+
+dnl Force CXXFLAGS to be substituted in Makefiles that don't "need" them.
+AC_SUBST(CXXFLAGS)
+
+dnl
+dnl SECTION 16: `AC_OUTPUT([FILE...])'
+dnl
+dnl
+dnl We can finally create all the files listed here; Makefile is
+dnl created from Makefile.in, etc. Top-level Makefiles should be
+dnl created first.
+AC_OUTPUT([
+dnl Makefile
+dnl NEWS
+ ace-config
+ ace-diff-config
+dnl ace/Makefile
+dnl apps/Makefile
+dnl apps/gperf/Makefile
+dnl apps/gperf/src/Makefile
+dnl man/Makefile
+dnl man/man3/Makefile
+dnl netsvcs/Makefile
+dnl netsvcs/clients/Makefile
+dnl netsvcs/clients/Logger/Makefile
+dnl netsvcs/clients/Naming/Makefile
+dnl netsvcs/clients/Naming/Client/Makefile
+dnl netsvcs/clients/Naming/Dump_Restore/Makefile
+dnl netsvcs/clients/Tokens/Makefile
+dnl netsvcs/clients/Tokens/collection/Makefile
+dnl netsvcs/clients/Tokens/deadlock/Makefile
+dnl netsvcs/clients/Tokens/invariant/Makefile
+dnl netsvcs/clients/Tokens/manual/Makefile
+dnl netsvcs/clients/Tokens/mutex/Makefile
+dnl netsvcs/clients/Tokens/rw_lock/Makefile
+dnl netsvcs/lib/Makefile
+dnl netsvcs/servers/Makefile
+dnl tests/Makefile
+dnl tests/log/Makefile
+ ])
+
+dnl Make sure ace-diff-config is executable
+dnl chmod 755 ace-diff-config
+
+echo ""
+echo "Configuration of ACE is now complete."
+echo ""