dnl
dnl Initialize configure bits.
dnl
-dnl Define OPTLEVEL='-O2' if new inlining code present.
-dnl
dnl GLIBCPP_CONFIGURE
AC_DEFUN(GLIBCPP_CONFIGURE, [
dnl Default to --enable-multilib
*) AC_MSG_ERROR(bad value ${enableval} for multilib option) ;;
esac], [multilib=yes])dnl
- dnl We may get other options which we dont document:
- dnl --with-target-subdir, --with-multisrctop, --with-multisubdir
- if test "[$]{srcdir}" = "."; then
- if test "[$]{with_target_subdir}" != "."; then
- glibcpp_basedir="[$]{srcdir}/[$]{with_multisrctop}../$1"
+# When building with srcdir == objdir, links to the source files will
+# be created in directories within the target_subdir. We have to
+# adjust toplevel_srcdir accordingly, so that configure finds
+# install-sh and other auxiliary files that live in the top-level
+# source directory.
+if test "${srcdir}" = "."; then
+ if test -z "${with_target_subdir}"; then
+ toprel=".."
+ else
+ if test "${with_target_subdir}" != "."; then
+ toprel="${with_multisrctop}../.."
else
- glibcpp_basedir="[$]{srcdir}/[$]{with_multisrctop}$1"
+ toprel="${with_multisrctop}.."
fi
- else
- glibcpp_basedir="[$]{srcdir}/$1"
fi
- AC_SUBST(glibcpp_basedir)
+else
+ toprel=".."
+fi
+AC_CONFIG_AUX_DIR(${srcdir}/$toprel)
+toplevel_srcdir=\${top_srcdir}/$toprel
+AC_SUBST(toplevel_srcdir)
+
+# Export build and source directories.
+# These need to be absolute paths, yet at the same time need to
+# canonicalize only relative paths, because then amd will not unmount
+# drives. Thus the use of PWDCMD: set it to 'pawd' or 'amq -w' if using amd.
+glibcpp_builddir=`pwd`
+case $srcdir in
+[\\/$]* | ?:[\\/]*) glibcpp_srcdir=${srcdir} ;;
+*) glibcpp_srcdir=`cd "$srcdir" && ${PWDCMD-pwd} || echo "$srcdir"` ;;
+esac
+AC_SUBST(glibcpp_builddir)
+AC_SUBST(glibcpp_srcdir)
+
+dnl This is here just to satisfy automake.
+ifelse(not,equal,[AC_CONFIG_AUX_DIR(..)])
- AM_INIT_AUTOMAKE(libstdc++, 2.90.8)
+# Will set LN_S to either 'ln -s' or 'ln'. With autoconf 2.50+, can also
+# be 'cp -p' if linking isn't available.
+#ac_cv_prog_LN_S='cp -p'
+AC_PROG_LN_S
+
+# We use these options to decide which functions to include.
+AC_ARG_WITH(target-subdir,
+[ --with-target-subdir=SUBDIR
+ configuring in a subdirectory])
+AC_ARG_WITH(cross-host,
+[ --with-cross-host=HOST configuring with a cross compiler])
+
+ glibcpp_basedir=$srcdir/$toprel/$1/libstdc++-v3
+ AC_SUBST(glibcpp_basedir)
# Never versions of autoconf add an underscore to these functions.
# Prevent future problems ...
[AC_BEFORE([$0], [AC_PROG_CXXCPP])dnl
dnl Fool anybody using AC_PROG_CXX.
AC_PROVIDE([AC_PROG_CXX])
-# Use CXX_libstdcxx so that we do not cause CXX to be cached with the
+# Use glibcpp_CXX so that we do not cause CXX to be cached with the
# flags that come in CXX while configuring libstdc++. They're different
# from those used for all other target libraries. If CXX is set in
# the environment, respect that here.
-CXX_libstdcxx=$CXX
-AC_CHECK_PROGS(CXX_libstdcxx, $CCC c++ g++ gcc CC cxx cc++, gcc)
-CXX=$CXX_libstdcxx
-AC_SUBST(CXX)
-test -z "$CXX" && AC_MSG_ERROR([no acceptable c++ found in \$PATH])
+glibcpp_CXX=$CXX
+AC_CHECK_PROGS(glibcpp_CXX, $CCC c++ g++ gcc CC cxx cc++, gcc)
+AC_SUBST(glibcpp_CXX)
+CXX=$glibcpp_CXX
+test -z "$glibcpp_CXX" && AC_MSG_ERROR([no acceptable c++ found in \$PATH])
AC_PROG_CXX_GNU
LIB_AC_PROG_CXX
+ # For some reason, gettext needs this.
+ AC_ISC_POSIX
+
AC_CHECK_TOOL(AS, as)
AC_CHECK_TOOL(AR, ar)
- AC_CHECK_TOOL(RANLIB, ranlib, :)
-
+ AC_CHECK_TOOL(RANLIB, ranlib, ranlib-not-found-in-path-error)
AC_PROG_INSTALL
AM_MAINTAINER_MODE
# automake happy, but we dont execute it, since we dont care about
# the result.
if false; then
+ # autoconf 2.50 runs AC_EXEEXT by default, and the macro expands
+ # to nothing, so nothing would remain between `then' and `fi' if it
+ # were not for the `:' below.
+ :
AC_EXEEXT
fi
- # configure.host sets the following important variables
- # glibcpp_cflags - host specific C compiler flags
- # glibcpp_cxxflags - host specific C++ compiler flags
- glibcpp_cflags=
- glibcpp_cxxflags=
-
. [$]{glibcpp_basedir}/configure.host
case [$]{glibcpp_basedir} in
- /* | [A-Za-z]:[/\\]*) libgcj_flagbasedir=[$]{glibcpp_basedir} ;;
+ /* | [A-Za-z]:[\\/]*) libgcj_flagbasedir=[$]{glibcpp_basedir} ;;
*) glibcpp_flagbasedir='[$](top_builddir)/'[$]{glibcpp_basedir} ;;
esac
# This does for the target what configure.host does for the host. In
- # addition to modifying the same flags, it also sets up symlinks.
+ # addition to possibly modifying the same flags, it also sets up symlinks.
GLIBCPP_CHECK_TARGET
- GLIBCPP_CFLAGS="[$]{glibcpp_cflags}"
- GLIBCPP_CXXFLAGS="[$]{glibcpp_cxxflags}"
- AC_SUBST(GLIBCPP_CFLAGS)
- AC_SUBST(GLIBCPP_CXXFLAGS)
+ #
])
dnl
dnl GLIBCPP_CHECK_COMPILER_VERSION
AC_DEFUN(GLIBCPP_CHECK_COMPILER_VERSION, [
- # Sanity check that g++ is capable of dealing with v-3.
- AC_MSG_CHECKING([for g++ that will successfully compile this code])
- AC_EGREP_CPP([ok], [
- #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
- ok
+if test ! -f stamp-sanity-compiler; then
+ AC_MSG_CHECKING([for g++ that will successfully compile libstdc++-v3])
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE(, [
+ #if __GNUC__ < 3
+ not_ok
#endif
- ], gpp_satisfactory=yes, AC_MSG_ERROR([please upgrade to gcc-2.95 or above]))
+ ], gpp_satisfactory=yes, AC_MSG_ERROR([please upgrade to GCC 3.0 or above]))
+ AC_LANG_RESTORE
AC_MSG_RESULT($gpp_satisfactory)
+ touch stamp-sanity-compiler
+fi
])
dnl
-dnl Test for newer compiler features, or features that are present in newer
-dnl compiler version but not older compiler versions should be placed
-dnl here.
+dnl Tests for newer compiler features, or features that are present in newer
+dnl compiler versions but not older compiler versions still in use, should
+dnl be placed here.
dnl
-dnl Define WFMT_FLAGS='-fdiagnostics-show-location=once' if possible
-dnl
dnl Define WERROR='-Werror' if requested and possible; g++'s that lack the
dnl new inlining code or the new system_header pragma will die on -Werror.
dnl Leave it out by default and use maint-mode to use it.
dnl
dnl Define SECTION_FLAGS='-ffunction-sections -fdata-sections' if
-dnl compiler supports it.
+dnl compiler supports it and the user has not requested debug mode.
+dnl
dnl GLIBCPP_CHECK_COMPILER_FEATURES
AC_DEFUN(GLIBCPP_CHECK_COMPILER_FEATURES, [
# All these tests are for C++; save the language and the compiler flags.
- # The CXXFLAGS thing is suspicious, but based on similar bits
+ # The CXXFLAGS thing is suspicious, but based on similar bits previously
# found in GLIBCPP_CONFIGURE.
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
WERROR='-Werror'
fi
- # Check for more sophisticated diagnostic control.
- AC_MSG_CHECKING([for g++ that supports -fdiagnostics-show-location=once])
- CXXFLAGS='-Werror -fdiagnostics-show-location=once'
- AC_TRY_COMPILE(, [int foo;
- ], [ac_gabydiags=yes], [ac_gabydiags=no])
- if test "$ac_test_CXXFLAGS" = set; then
- CXXFLAGS="$ac_save_CXXFLAGS"
- else
- # this is the suspicious part
- CXXFLAGS=''
- fi
- if test "$ac_gabydiags" = "yes"; then
- WFMT_FLAGS='-fdiagnostics-show-location=once'
- fi
- AC_MSG_RESULT($ac_gabydiags)
-
# Check for -ffunction-sections -fdata-sections
AC_MSG_CHECKING([for g++ that supports -ffunction-sections -fdata-sections])
CXXFLAGS='-Werror -ffunction-sections -fdata-sections'
# this is the suspicious part
CXXFLAGS=''
fi
- if test "$ac_fdsections" = "yes"; then
+ if test x"$ac_fdsections" = x"yes" &&
+ test x"$enable_debug" = x"no"; then
SECTION_FLAGS='-ffunction-sections -fdata-sections'
fi
AC_MSG_RESULT($ac_fdsections)
AC_LANG_RESTORE
AC_SUBST(WERROR)
- AC_SUBST(WFMT_FLAGS)
AC_SUBST(SECTION_FLAGS)
])
AC_REQUIRE([AC_PROG_LD])
# Set --gc-sections.
- if test "$ac_cv_prog_gnu_ld" = "broken"; then
+ if test "$ac_cv_prog_gnu_ld" = "notbroken"; then
# GNU ld it is! Joy and bunny rabbits!
# All these tests are for C++; save the language and the compiler flags.
fi
# Set linker optimization flags.
- if test "$ac_cv_prog_gnu_ld" = "yes"; then
+ if test x"$ac_cv_prog_gnu_ld" = x"yes" &&
+ test x"$enable_debug" = x"no"; then
OPT_LDFLAGS='-Wl,-O1'
fi
])
+dnl
+dnl Check to see if the (math function) argument passed is
+dnl declared when using the c++ compiler
+dnl ASSUMES argument is a math function with ONE parameter
+dnl
+dnl GLIBCPP_CHECK_MATH_DECL_1
+AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_1, [
+ AC_MSG_CHECKING([for $1 declaration])
+ if test x${glibcpp_cv_func_$1_use+set} != xset; then
+ AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE([#include <math.h>
+ #ifdef HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+ ],
+ [ $1(0);],
+ [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
+ AC_LANG_RESTORE
+ ])
+ fi
+ AC_MSG_RESULT($glibcpp_cv_func_$1_use)
+])
+
dnl
dnl Check to see if the (math function) argument passed is
dnl 1) declared when using the c++ compiler
dnl 2) has "C" linkage
+dnl 3) if not, see if 1) and 2) for argument prepended with '_'
dnl
dnl Define HAVE_CARGF etc if "cargf" is declared and links
dnl
dnl
dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1
AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1, [
- AC_MSG_CHECKING([for $1 declaration])
- AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
- AC_LANG_SAVE
- AC_LANG_CPLUSPLUS
- AC_TRY_COMPILE([#include <math.h>],
- [ $1(0);],
- [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
- AC_LANG_RESTORE
- ])
- AC_MSG_RESULT($glibcpp_cv_func_$1_use)
+ GLIBCPP_CHECK_MATH_DECL_1($1)
if test x$glibcpp_cv_func_$1_use = x"yes"; then
AC_CHECK_FUNCS($1)
+ else
+ GLIBCPP_CHECK_MATH_DECL_1(_$1)
+ if test x$glibcpp_cv_func__$1_use = x"yes"; then
+ AC_CHECK_FUNCS(_$1)
+ fi
fi
])
+dnl
+dnl Like GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1, but does a bunch of
+dnl of functions at once. It's an all-or-nothing check -- either
+dnl HAVE_XYZ is defined for each of the functions, or for none of them.
+dnl Doing it this way saves significant configure time.
+AC_DEFUN(GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1, [
+ AC_MSG_CHECKING([for $1 functions])
+ AC_CACHE_VAL(glibcpp_cv_func_$2_use, [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE([#include <math.h>],
+ [ `for x in $3; do echo "$x (0);"; done` ],
+ [glibcpp_cv_func_$2_use=yes],
+ [glibcpp_cv_func_$2_use=no])
+ AC_LANG_RESTORE])
+ AC_MSG_RESULT($glibcpp_cv_func_$2_use)
+ if test x$glibcpp_cv_func_$2_use = x"yes"; then
+ AC_CHECK_FUNCS($3)
+ fi
+])
+
+dnl
+dnl Check to see if the (math function) argument passed is
+dnl declared when using the c++ compiler
+dnl ASSUMES argument is a math function with TWO parameters
+dnl
+dnl GLIBCPP_CHECK_MATH_DECL_2
+AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_2, [
+ AC_MSG_CHECKING([for $1 declaration])
+ if test x${glibcpp_cv_func_$1_use+set} != xset; then
+ AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE([#include <math.h>],
+ [ $1(0, 0);],
+ [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
+ AC_LANG_RESTORE
+ ])
+ fi
+ AC_MSG_RESULT($glibcpp_cv_func_$1_use)
+])
+
dnl
dnl Check to see if the (math function) argument passed is
dnl 1) declared when using the c++ compiler
dnl
dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2
AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2, [
- AC_MSG_CHECKING([for $1 declaration])
- AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
- AC_LANG_SAVE
- AC_LANG_CPLUSPLUS
- AC_TRY_COMPILE([#include <math.h>],
- [ $1(0, 0);],
- [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
- AC_LANG_RESTORE
- ])
- AC_MSG_RESULT($glibcpp_cv_func_$1_use)
+ GLIBCPP_CHECK_MATH_DECL_2($1)
if test x$glibcpp_cv_func_$1_use = x"yes"; then
AC_CHECK_FUNCS($1)
+ else
+ GLIBCPP_CHECK_MATH_DECL_2(_$1)
+ if test x$glibcpp_cv_func__$1_use = x"yes"; then
+ AC_CHECK_FUNCS(_$1)
+ fi
fi
])
+dnl
+dnl Check to see if the (math function) argument passed is
+dnl declared when using the c++ compiler
+dnl ASSUMES argument is a math function with THREE parameters
+dnl
+dnl GLIBCPP_CHECK_MATH_DECL_3
+AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_3, [
+ AC_MSG_CHECKING([for $1 declaration])
+ if test x${glibcpp_cv_func_$1_use+set} != xset; then
+ AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE([#include <math.h>],
+ [ $1(0, 0, 0);],
+ [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
+ AC_LANG_RESTORE
+ ])
+ fi
+ AC_MSG_RESULT($glibcpp_cv_func_$1_use)
+])
+
dnl
dnl Check to see if the (math function) argument passed is
dnl 1) declared when using the c++ compiler
dnl
dnl GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3
AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3, [
- AC_MSG_CHECKING([for $1 declaration])
- AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
- AC_LANG_SAVE
- AC_LANG_CPLUSPLUS
- AC_TRY_COMPILE([#include <math.h>],
- [ $1(0, 0, 0);],
- [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
- AC_LANG_RESTORE
- ])
- AC_MSG_RESULT($glibcpp_cv_func_$1_use)
+ GLIBCPP_CHECK_MATH_DECL_3($1)
if test x$glibcpp_cv_func_$1_use = x"yes"; then
AC_CHECK_FUNCS($1)
+ else
+ GLIBCPP_CHECK_MATH_DECL_3(_$1)
+ if test x$glibcpp_cv_func__$1_use = x"yes"; then
+ AC_CHECK_FUNCS(_$1)
+ fi
fi
])
dnl 1) declared when using the c++ compiler
dnl 2) has "C" linkage
dnl
-dnl Define HAVE_STRTOLD if "strtold" is declared and links
-dnl Define HAVE_STRTOF if "strtof" is declared and links
-dnl
dnl argument 1 is name of function to check
dnl
dnl ASSUMES argument is a math function with TWO parameters
dnl GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2
AC_DEFUN(GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2, [
AC_MSG_CHECKING([for $1 declaration])
- AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
- AC_LANG_SAVE
- AC_LANG_CPLUSPLUS
- AC_TRY_COMPILE([#include <stdlib.h>],
- [ $1(0, 0);],
- [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
- AC_LANG_RESTORE
- ])
+ if test x${glibcpp_cv_func_$1_use+set} != xset; then
+ AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE([#include <stdlib.h>],
+ [ $1(0, 0);],
+ [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
+ AC_LANG_RESTORE
+ ])
+ fi
AC_MSG_RESULT($glibcpp_cv_func_$1_use)
if test x$glibcpp_cv_func_$1_use = x"yes"; then
AC_CHECK_FUNCS($1)
dnl GLIBCPP_CHECK_BUILTIN_MATH_DECL_LINKAGE_1
AC_DEFUN(GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1, [
AC_MSG_CHECKING([for $1 declaration])
- AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
- AC_LANG_SAVE
- AC_LANG_CPLUSPLUS
- AC_TRY_COMPILE([#include <math.h>],
- [ $1(0);],
- [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
- AC_LANG_RESTORE
- ])
+ if test x${glibcpp_cv_func_$1_use+set} != xset; then
+ AC_CACHE_VAL(glibcpp_cv_func_$1_use, [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE([#include <math.h>],
+ [ $1(0);],
+ [glibcpp_cv_func_$1_use=yes], [glibcpp_cv_func_$1_use=no])
+ AC_LANG_RESTORE
+ ])
+ fi
AC_MSG_RESULT($glibcpp_cv_func_$1_use)
if test x$glibcpp_cv_func_$1_use = x"yes"; then
AC_MSG_CHECKING([for $1 linkage])
- AC_CACHE_VAL(glibcpp_cv_func_$1_link, [
- AC_TRY_LINK([#include <math.h>],
- [ $1(0);],
- [glibcpp_cv_func_$1_link=yes], [glibcpp_cv_func_$1_link=no])
- ])
+ if test x${glibcpp_cv_func_$1_link+set} != xset; then
+ AC_CACHE_VAL(glibcpp_cv_func_$1_link, [
+ AC_TRY_LINK([#include <math.h>],
+ [ $1(0);],
+ [glibcpp_cv_func_$1_link=yes], [glibcpp_cv_func_$1_link=no])
+ ])
+ fi
AC_MSG_RESULT($glibcpp_cv_func_$1_link)
if test x$glibcpp_cv_func_$1_link = x"yes"; then
ac_tr_func=HAVE_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
dnl 2) make sure the name has "C" linkage
dnl This might seem like overkill but experience has shown that it's not...
dnl
-dnl Define HAVE_STRTOF etc if "strtof" is found.
-dnl Define HAVE_STRTOLD etc if "strtold" is found.
+dnl Define HAVE_STRTOLD if "strtold" is declared and links
+dnl Define HAVE_STRTOF if "strtof" is declared and links
+dnl Define HAVE_DRAND48 if "drand48" is declared and links
dnl
dnl GLIBCPP_CHECK_STDLIB_SUPPORT
AC_DEFUN(GLIBCPP_CHECK_STDLIB_SUPPORT, [
ac_save_CXXFLAGS="$CXXFLAGS"
CXXFLAGS='-fno-builtins -D_GNU_SOURCE'
- AC_CHECK_FUNCS(strtof)
GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2(strtold)
+ AC_CHECK_FUNCS(drand48)
CXXFLAGS="$ac_save_CXXFLAGS"
])
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincos)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fpclass)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(qfpclass)
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(hypot)
dnl Check to see if basic C math functions have float versions.
+ GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(float trig,
+ float_trig,
+ acosf asinf atanf \
+ cosf sinf tanf \
+ coshf sinhf tanhf)
+ GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(float round,
+ float_round,
+ ceilf floorf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnanf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinff)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(acosf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(asinf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(atanf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(atan2f)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(ceilf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(cosf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(coshf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(expf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(floorf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(fmodf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(frexpf)
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(hypotf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(logf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(log10f)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(modff)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(powf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sinf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sinhf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(tanf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(tanhf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincosf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(finitef)
dnl Check to see if basic C math functions have long double versions.
+ GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(long double trig,
+ long_double_trig,
+ acosl asinl atanl \
+ cosl sinl tanl \
+ coshl sinhl tanhl)
+ GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(long double round,
+ long_double_round,
+ ceill floorl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnanl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinfl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(copysignl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(acosl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(asinl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(atanl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(atan2l)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(ceill)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(cosl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(coshl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(expl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(floorl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(fmodl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(frexpl)
+ GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(hypotl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(logl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(log10l)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(modfl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(powl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sinl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sinhl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(tanl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(tanhl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincosl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(finitel)
dnl keep this sync'd with the one above. And if you add any new symbol,
dnl please add the corresponding block in the @BOTTOM@ section of acconfig.h.
dnl Check to see if certain C math functions exist.
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_isinf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_isnan)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_finite)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_copysign)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(_sincos)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_fpclass)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_qfpclass)
dnl Check to see if basic C math functions have float versions.
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_isnanf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_isinff)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_acosf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_asinf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_atanf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_atan2f)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_ceilf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_cosf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_coshf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_expf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_fabsf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_floorf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_fmodf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_frexpf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_ldexpf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_logf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_log10f)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_modff)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_powf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_sinf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_sinhf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_sqrtf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_tanf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_tanhf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(_sincosf)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_finitef)
+ GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(_float trig,
+ _float_trig,
+ _acosf _asinf _atanf \
+ _cosf _sinf _tanf \
+ _coshf _sinhf _tanhf)
+ GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(_float round,
+ _float_round,
+ _ceilf _floorf)
dnl Check to see if basic C math functions have long double versions.
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_isnanl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_isinfl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_copysignl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_acosl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_asinl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_atanl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_atan2l)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_ceill)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_cosl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_coshl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_expl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_fabsl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_floorl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_fmodl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_frexpl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_ldexpl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_logl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_log10l)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_modfl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(_powl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_sinl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_sinhl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_sqrtl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_tanl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_tanhl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(_sincosl)
- GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(_finitel)
+ GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(_long double trig,
+ _long_double_trig,
+ _acosl _asinl _atanl \
+ _cosl _sinl _tanl \
+ _coshl _sinhl _tanhl)
+ GLIBCPP_CHECK_MATH_DECLS_AND_LINKAGES_1(_long double round,
+ _long_double_round,
+ _ceill _floorl)
LIBS="$ac_save_LIBS"
CXXFLAGS="$ac_save_CXXFLAGS"
dnl
dnl Don't compile bits in math/* if native support exits.
dnl
-dnl Define USE_COMPLEX_LONG_DOUBLE etc if "atan2l/copysignl" is found.
+dnl Define USE_COMPLEX_LONG_DOUBLE etc if "copysignl" is found.
dnl
dnl GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT
AC_DEFUN(GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT, [
dnl Check for complex versions of math functions of platform.
- AC_CHECK_HEADERS([complex.h])
AC_CHECK_LIB(m, main)
- AC_REPLACE_MATHFUNCS(cabs cabsf ccos ccosf ccosh ccoshf cexp cexpf \
- c_log c_logf clog10 clog10f cpow cpowf csin csinf csinh csinhf csqrt \
- csqrtf ctan ctanf ctanh ctanhf carg cargf nan hypot hypotf atan2f expf \
- copysignf)
+ AC_REPLACE_MATHFUNCS(nan copysignf)
dnl Compile the long double complex functions only if the function
dnl provides the non-complex long double functions that are needed.
- dnl Currently this includes copysignl and atan2l, which should be
+ dnl Currently this includes copysignl, which should be
dnl cached from the GLIBCPP_CHECK_MATH_SUPPORT macro, above.
USE_COMPLEX_LONG_DOUBLE=no
- if test x$ac_cv_func_atan2l = x"yes" \
- && test x$ac_cv_func_copysignl = x"yes"; then
+ if test x$ac_cv_func_copysignl = x"yes"; then
USE_COMPLEX_LONG_DOUBLE=yes
- AC_REPLACE_MATHFUNCS(cabsl ccoshl ccosl cexpl cpowl csinhl csinl \
- csqrtl ctanhl ctanl cargl hypotl signbitl c_logl clog10l)
+ AC_REPLACE_MATHFUNCS(signbitl)
fi
AC_SUBST(USE_COMPLEX_LONG_DOUBLE)
. [$]{glibcpp_basedir}/configure.target
AC_MSG_RESULT(CPU config directory is $cpu_include_dir)
AC_MSG_RESULT(OS config directory is $os_include_dir)
- AC_LINK_FILES($os_include_dir/bits/os_defines.h, include/bits/os_defines.h)
-])
-
-
-dnl
-dnl Check to see what the underlying c library's interface to ctype looks
-dnl like. Bits of locale rely on things like isspace, toupper, etc. This
-dnl stuff makes sure the right bits from the clibrary get called.
-dnl
-dnl Depending on what is found, select various configure/*/bits/ctype_base.h
-dnl Depending on what is found, select various configure/*/ctype.cc
-dnl
-dnl GLIBCPP_CHECK_CTYPE_SUPPORT
-AC_DEFUN(GLIBCPP_CHECK_CTYPE_SUPPORT, [
- AC_CHECK_HEADER(ctype.h, [
-
- dnl If doesn't match any specified, go with defaults.
- ctype_default=yes
-
- dnl Test for <ctype> functionality -- GNU/Linux
- AC_MSG_CHECKING([<ctype> for GNU/Linux])
- AC_TRY_COMPILE([#include <ctype.h>],
- [int
- foo (int a)
- { return _ISspace + _ISprint + _IScntrl + _ISupper + _ISlower + _ISalpha \
- + _ISdigit + _ISpunct + _ISxdigit + _ISalnum + _ISgraph \
- + __ctype_tolower[a] + __ctype_toupper[a] + __ctype_b[a];}], \
- ctype_linux=yes, ctype_linux=no)
- AC_MSG_RESULT($ctype_linux)
- if test $ctype_linux = "yes"; then
- ctype_include_dir="config/os/gnu-linux"
- ctype_default=no
- fi
-
- dnl Test for <ctype> functionality -- FreeBSD 4.0
- if test $ctype_default = "yes"; then
- AC_MSG_CHECKING([<ctype> for FreeBSD 4.0])
- AC_TRY_COMPILE([#include <ctype.h>],
- [int
- foo (int a)
- { return _CTYPE_S + _CTYPE_R + _CTYPE_C + _CTYPE_U + _CTYPE_L + _CTYPE_A \
- + _CTYPE_D + _CTYPE_P + _CTYPE_X + _CTYPE_G ;}], \
- ctype_bsd=yes, ctype_bsd=no)
- AC_MSG_RESULT($ctype_bsd)
- if test $ctype_bsd = "yes"; then
- ctype_include_dir="config/os/bsd"
- ctype_default=no
- fi
- fi
-
- dnl Test for <ctype> functionality -- FreeBSD 3.4
- if test $ctype_default = "yes"; then
- AC_MSG_CHECKING([<ctype> for FreeBSD 3.4])
- AC_TRY_COMPILE([#include <ctype.h>],
- [int
- foo (int a)
- { return _S + _R + _C + _U + _L + _A \
- + _D + _P + _X + _G + __istype (a, 0);}], \
- ctype_freebsd34=yes, ctype_freebsd34=no)
- AC_MSG_RESULT($ctype_freebsd34)
- if test $ctype_freebsd34 = "yes"; then
- ctype_include_dir="config/os/bsd"
- ctype_default=no
- fi
- fi
-
- dnl Test for <ctype> functionality -- Solaris 2.6 and up
- if test $ctype_default = "yes"; then
- AC_MSG_CHECKING([<ctype> for Solaris 2.6,7,8])
- AC_TRY_COMPILE([#include <ctype.h>],
- [int
- foo (int a)
- { return _ISSPACE + _ISPRINT + _ISCNTRL + _ISUPPER + _ISLOWER + _ISALPHA \
- + _ISDIGIT + _ISPUNCT + _ISXDIGIT + _ISALNUM + _ISGRAPH \
- + __trans_lower[a] + __trans_upper[a] + __ctype_mask[a];}], \
- ctype_solaris=yes, ctype_solaris=no)
- AC_MSG_RESULT($ctype_solaris)
-
- if test $ctype_solaris = "yes"; then
- AC_MSG_CHECKING([ for version])
- AC_LANG_CPLUSPLUS
- AC_TRY_COMPILE([#include <ctype.h>],
- [typedef long* __to_type; __to_type const& _M_toupper = __trans_upper;],\
- ctype_solaris26=yes, ctype_solaris26=no)
- AC_LANG_C
- if test $ctype_solaris26 = "yes"; then
- ctype_include_dir="config/os/solaris/solaris2.6"
- AC_MSG_RESULT([Solaris 2.6])
- ctype_default=no
- else
- ctype_include_dir="config/os/solaris/solaris2.7"
- AC_MSG_RESULT([Solaris 7,8])
- ctype_default=no
- fi
- fi
- fi
-
- dnl Test for <ctype> functionality -- Solaris 2.5.1
- if test $ctype_default = "yes"; then
- AC_MSG_CHECKING([<ctype> for Solaris 2.5.1])
- AC_TRY_COMPILE([#include <ctype.h>],
- [int
- foo (int a)
- { return _U + _L + _N + _S + _P + _C + _X + _B \
- + __ctype[a];}], \
- ctype_solaris25=yes, ctype_solaris25=no)
- AC_MSG_RESULT($ctype_solaris25)
- if test $ctype_solaris25 = "yes"; then
- ctype_include_dir="config/os/solaris/solaris2.5"
- ctype_default=no
- fi
- fi
-
- dnl Test for <ctype> functionality -- AIX
- if test $ctype_default = "yes"; then
- AC_MSG_CHECKING([<ctype> for AIX])
- AC_TRY_COMPILE([#include <ctype.h>],
- [int
- foo (int a)
- { return _ISSPACE + _ISPRINT + _ISCNTRL + _ISUPPER + _ISLOWER + _ISALPHA \
- + _ISDIGIT + _ISPUNCT + _ISXDIGIT + _ISALNUM + _ISGRAPH \
- + _VALC('a') + _IS('c', 0);}], \
- ctype_aix=yes, ctype_aix=no)
- AC_MSG_RESULT($ctype_aix)
- if test $ctype_aix = "yes"; then
- ctype_include_dir="config/os/aix"
- ctype_default=no
- fi
- fi
-
- dnl Test for <ctype> functionality -- IRIX
- if test $ctype_default = "yes"; then
- AC_MSG_CHECKING([<ctype> for IRIX])
- AC_TRY_COMPILE([#include <ctype.h>],
- [int
- foo (int a)
- { return _U + _L + _N + _S + _P + _C + _B + _X + \
- _A + _PR + _G + _BL;}], \
- ctype_irix=yes, ctype_irix=no)
- AC_MSG_RESULT($ctype_irix)
- if test $ctype_irix = "yes"; then
- ctype_include_dir="config/os/irix"
- ctype_default=no
- fi
- fi
-
- dnl Test for <ctype> functionality -- newlib
- if test $ctype_default = "yes"; then
- AC_MSG_CHECKING([<ctype> for newlib])
- AC_TRY_COMPILE([#include <ctype.h>],
- [int
- foo (int a)
- { return _U + _L + _N + _S + _P + _C + _X + _B \
- + _ctype_[a];}], \
- ctype_newlib=yes, ctype_newlib=no)
- AC_MSG_RESULT($ctype_newlib)
- if test $ctype_newlib = "yes"; then
- ctype_include_dir="config/newlib"
- ctype_default=no
- fi
- fi
-
- if test $ctype_default = "yes"; then
- ctype_include_dir="config/os/generic"
- AC_MSG_WARN("Using default ctype headers.")
- fi
-
- AC_LINK_FILES($ctype_include_dir/bits/ctype_base.h,
- include/bits/ctype_base.h)
- AC_LINK_FILES($ctype_include_dir/bits/ctype_inline.h,
- include/bits/ctype_inline.h)
- AC_LINK_FILES($ctype_include_dir/bits/ctype_noninline.h, \
- include/bits/ctype_noninline.h)
- ])
])
dnl must have been previously checked.)
dnl
dnl Define _GLIBCPP_USE_WCHAR_T if all the bits are found
-dnl Define _GLIBCPP_NEED_MBSTATE_T if mbstate_t is not in wchar.h
+dnl Define HAVE_MBSTATE_T if mbstate_t is not in wchar.h
dnl
dnl GLIBCPP_CHECK_WCHAR_T_SUPPORT
AC_DEFUN(GLIBCPP_CHECK_WCHAR_T_SUPPORT, [
- if test x$enable_c_mbchar != xno; then
-
- dnl Sanity check for existence of ISO C9X headers for extended encoding.
- AC_CHECK_HEADER(wchar.h, ac_has_wchar_h=yes, ac_has_wchar_h=no)
- AC_CHECK_HEADER(wctype.h, ac_has_wctype_h=yes, ac_has_wctype_h=no)
-
- dnl Only continue checking if the ISO C9X headers exist.
- if test x"$ac_has_wchar_h" = xyes && test x"$ac_has_wctype_h" = xyes; then
+
+ dnl Test wchar.h for mbstate_t, which is needed for char_traits and
+ dnl others even if wchar_t support is not on.
+ AC_MSG_CHECKING([for mbstate_t])
+ AC_TRY_COMPILE([#include <wchar.h>],
+ [mbstate_t teststate;],
+ have_mbstate_t=yes, have_mbstate_t=no)
+ AC_MSG_RESULT($have_mbstate_t)
+ if test x"$have_mbstate_t" = xyes; then
+ AC_DEFINE(HAVE_MBSTATE_T)
+ fi
+
+ dnl Sanity check for existence of ISO C99 headers for extended encoding.
+ AC_CHECK_HEADERS(wchar.h, ac_has_wchar_h=yes, ac_has_wchar_h=no)
+ AC_CHECK_HEADER(wctype.h, ac_has_wctype_h=yes, ac_has_wctype_h=no)
- dnl Test wchar.h for mbstate_t, which is needed for char_traits
- dnl and others.
- AC_MSG_CHECKING([for mbstate_t])
- AC_TRY_COMPILE([#include <wchar.h>],
- [mbstate_t teststate;],
- use_native_mbstatet=yes, use_native_mbstatet=no)
- AC_MSG_RESULT($use_native_mbstatet)
- if test x"$use_native_mbstatet" = xno; then
- AC_DEFINE(_GLIBCPP_NEED_MBSTATE_T)
- fi
+ dnl Only continue checking if the ISO C99 headers exist and support is on.
+ if test x"$ac_has_wchar_h" = xyes &&
+ test x"$ac_has_wctype_h" = xyes &&
+ test x"$enable_c_mbchar" != xno; then
+
+ dnl Test wchar.h for WCHAR_MIN, WCHAR_MAX, which is needed before
+ dnl numeric_limits can instantiate type_traits<wchar_t>
+ AC_MSG_CHECKING([for WCHAR_MIN and WCHAR_MAX])
+ AC_TRY_COMPILE([#include <wchar.h>],
+ [int i = WCHAR_MIN; int j = WCHAR_MAX;],
+ has_wchar_minmax=yes, has_wchar_minmax=no)
+ AC_MSG_RESULT($has_wchar_minmax)
- dnl Test wchar.h for WCHAR_MIN, WCHAR_MAX, which is needed before
- dnl numeric_limits can instantiate type_traits<wchar_t>
- AC_MSG_CHECKING([for WCHAR_MIN and WCHAR_MAX])
- AC_TRY_COMPILE([#include <wchar.h>],
- [int i = WCHAR_MIN; int j = WCHAR_MAX;],
- has_wchar_minmax=yes, has_wchar_minmax=no)
- AC_MSG_RESULT($has_wchar_minmax)
-
- dnl Test wchar.h for WEOF, which is what we use to determine whether
- dnl to specialize for char_traits<wchar_t> or not.
- AC_MSG_CHECKING([for WEOF])
- AC_TRY_COMPILE([
- #include <wchar.h>
- #include <stddef.h>],
- [wint_t i = WEOF;],
- has_weof=yes, has_weof=no)
- AC_MSG_RESULT($has_weof)
+ dnl Test wchar.h for WEOF, which is what we use to determine whether
+ dnl to specialize for char_traits<wchar_t> or not.
+ AC_MSG_CHECKING([for WEOF])
+ AC_TRY_COMPILE([
+ #include <wchar.h>
+ #include <stddef.h>],
+ [wint_t i = WEOF;],
+ has_weof=yes, has_weof=no)
+ AC_MSG_RESULT($has_weof)
- dnl Tests for wide character functions used in char_traits<wchar_t>.
- AC_CHECK_FUNCS(wcslen wmemchr wmemcmp wmemcpy wmemmove wmemset \
- wcsrtombs mbsrtowcs, ac_wfuncs=yes, ac_wfuncs=no)
+ dnl Tests for wide character functions used in char_traits<wchar_t>.
+ ac_wfuncs=yes
+ AC_CHECK_FUNCS(wcslen wmemchr wmemcmp wmemcpy wmemmove wmemset,, \
+ ac_wfuncs=no)
- AC_MSG_CHECKING([for ISO C9X wchar_t support])
- if test x"$has_weof" = xyes && test x"$has_wchar_minmax" = xyes \
- && test x"$ac_wfuncs" = xyes; then
- ac_isoC9X_wchar_t=yes
- else
- ac_isoC9X_wchar_t=no
- fi
- AC_MSG_RESULT($ac_isoC9X_wchar_t)
+ dnl Checks for names injected into std:: by the c_std headers.
+ AC_CHECK_FUNCS(btowc wctob fgetwc fgetwc fgetws fputwc fputws fwide \
+ fwprintf fwscanf swprintf swscanf vfwprintf vfwscanf vswprintf vswscanf \
+ vwprintf vwscanf wprintf wscanf getwc getwchar mbsinit mbrlen mbrtowc \
+ mbsrtowcs wcsrtombs putwc putwchar ungetwc wcrtomb wcstod wcstof wcstol \
+ wcstoul wcscpy wcsncpy wcscat wcsncat wcscmp wcscoll wcsncmp wcsxfrm \
+ wcscspn wcsspn wcstok wcsftime wcschr wcspbrk wcsrchr wcsstr,, \
+ ac_wfuncs=no)
+
+ AC_MSG_CHECKING([for ISO C99 wchar_t support])
+ if test x"$has_weof" = xyes &&
+ test x"$has_wchar_minmax" = xyes &&
+ test x"$ac_wfuncs" = xyes; then
+ ac_isoC99_wchar_t=yes
+ else
+ ac_isoC99_wchar_t=no
+ fi
+ AC_MSG_RESULT($ac_isoC99_wchar_t)
- dnl Use iconv for wchar_t to char conversions. As such, check for
- dnl X/Open Portability Guide, version 2 features (XPG2).
- AC_CHECK_HEADER(iconv.h, ac_has_iconv_h=yes, ac_has_iconv_h=no)
- AC_CHECK_HEADER(langinfo.h, ac_has_langinfo_h=yes, ac_has_langinfo_h=no)
-
- dnl Check for existence of libiconv.a providing XPG2 wchar_t support.
- AC_CHECK_LIB(iconv, iconv, libiconv="-liconv")
- ac_save_LIBS="$LIBS"
- LIBS="$LIBS $libiconv"
-
- AC_CHECK_FUNCS(iconv_open iconv_close iconv nl_langinfo, \
- ac_XPG2funcs=yes, ac_XPG2funcs=no)
+ dnl Use iconv for wchar_t to char conversions. As such, check for
+ dnl X/Open Portability Guide, version 2 features (XPG2).
+ AC_CHECK_HEADER(iconv.h, ac_has_iconv_h=yes, ac_has_iconv_h=no)
+ AC_CHECK_HEADER(langinfo.h, ac_has_langinfo_h=yes, ac_has_langinfo_h=no)
+
+ dnl Check for existence of libiconv.a providing XPG2 wchar_t support.
+ AC_CHECK_LIB(iconv, iconv, libiconv="-liconv")
+ ac_save_LIBS="$LIBS"
+ LIBS="$LIBS $libiconv"
+
+ AC_CHECK_FUNCS(iconv_open iconv_close iconv nl_langinfo, \
+ ac_XPG2funcs=yes, ac_XPG2funcs=no)
- LIBS="$ac_save_LIBS"
+ LIBS="$ac_save_LIBS"
- AC_MSG_CHECKING([for XPG2 wchar_t support])
- if test x"$ac_has_iconv_h" = xyes && test x"$ac_has_langinfo_h" = xyes \
- && test x"$ac_XPG2funcs" = xyes; then
- ac_XPG2_wchar_t=yes
- else
- ac_XPG2_wchar_t=no
- fi
- AC_MSG_RESULT($ac_XPG2_wchar_t)
-
- dnl At the moment, only enable wchar_t specializations if all the
- dnl above support is present.
- AC_MSG_CHECKING([for enabled wchar_t specializations])
- if test x"$ac_isoC9X_wchar_t" = xyes \
- && test x"$ac_XPG2_wchar_t" = xyes; then
- libinst_wstring_la="libinst-wstring.la"
- AC_DEFINE(_GLIBCPP_USE_WCHAR_T)
- AC_MSG_RESULT("yes")
- else
- libinst_wstring_la=""
- AC_MSG_RESULT("no")
- fi
- AC_SUBST(libinst_wstring_la)
+ AC_MSG_CHECKING([for XPG2 wchar_t support])
+ if test x"$ac_has_iconv_h" = xyes &&
+ test x"$ac_has_langinfo_h" = xyes &&
+ test x"$ac_XPG2funcs" = xyes; then
+ ac_XPG2_wchar_t=yes
+ else
+ ac_XPG2_wchar_t=no
+ fi
+ AC_MSG_RESULT($ac_XPG2_wchar_t)
+ dnl At the moment, only enable wchar_t specializations if all the
+ dnl above support is present.
+ AC_MSG_CHECKING([for enabled wchar_t specializations])
+ if test x"$ac_isoC99_wchar_t" = xyes &&
+ test x"$ac_XPG2_wchar_t" = xyes; then
+ AC_DEFINE(_GLIBCPP_USE_WCHAR_T)
+ AC_MSG_RESULT("yes")
else
- AC_MSG_WARN([<wchar.h> not found])
- AC_DEFINE(_GLIBCPP_NEED_MBSTATE_T)
+ AC_MSG_RESULT("no")
fi
-
else
- dnl Wide characters disabled by the user. Maybe print a warning?
- :
- fi
-])
-
-
-dnl
-dnl Check to see if this version of GNU C++ is afflicted by bugs in
-dnl __complex__ float support.
-dnl
-dnl Define _GLIBCPP_BUGGY_FLOAT_COMPLEX if buggy.
-dnl
-dnl Check to see if this version of GNU C++ is afflicted by bugs in
-dnl __complex__ support.Check for buggy __complex__ that will cause ICE in
-dnl gcc-2.95.x when using the library, unless we define the default copy
-dnl ctor in the specializations of complex<>.
-dnl
-dnl Define _GLIBCPP_BUGGY_COMPLEX if buggy.
-dnl GLIBCPP_CHECK_COMPLEX_MATH_COMPILER_SUPPORT
-AC_DEFUN(GLIBCPP_CHECK_COMPLEX_MATH_COMPILER_SUPPORT, [
- AC_REQUIRE([AC_PROG_CXX])
-
- AC_MSG_CHECKING([for GNU C++ __complex__ support])
- AC_CACHE_VAL(glibcpp_cv_complex, [
- AC_LANG_SAVE
- AC_LANG_CPLUSPLUS
- AC_TRY_COMPILE([struct dcomplex { __complex__ double x; }; \
- dcomplex f(const dcomplex& x) { return dcomplex(x); }], \
- [ dcomplex x; f(x); ],
- glibcpp_cv_complex=ok,
- glibcpp_cv_complex=buggy
- )
- AC_LANG_RESTORE
- ])
- AC_MSG_RESULT($glibcpp_cv_complex)
- if test $glibcpp_cv_complex = buggy; then
- AC_DEFINE(_GLIBCPP_BUGGY_COMPLEX)
- fi
-
- AC_MSG_CHECKING([for GNU C++ __complex__ float support])
- AC_CACHE_VAL(glibcpp_cv_float_complex, [
- AC_LANG_SAVE
- AC_LANG_CPLUSPLUS
- rm -f conftest.h
- cat > conftest.h <<EOB
- //
- // Check for buggy __complex__ that causes ICE in most versions of egcs
- // and gcc-2.95.x on certain platforms (eg., x86-win32).
- //
- // See http://gcc.gnu.org/ml/gcc-bugs/1999-07n/msg00845.html for
- // more info on the bug itself.
- //
- struct
- float_complex
- {
- __complex__ float m_value;
- float_complex (float = 0.0f, float = 0.0f);
- float_complex (__complex__ float val) : m_value (val) {}
- float_complex foo (const float_complex &val)
- { return float_complex (~val.m_value); }
- };
-EOB
- AC_TRY_COMPILE([#include "conftest.h"], ,
- glibcpp_cv_float_complex=ok,
- glibcpp_cv_float_complex=buggy
- )
- AC_LANG_RESTORE
- ])
- AC_MSG_RESULT($glibcpp_cv_float_complex)
- if test $glibcpp_cv_float_complex = buggy; then
- AC_DEFINE(_GLIBCPP_BUGGY_FLOAT_COMPLEX)
+ dnl Wide characters disabled by the user.
+ AC_MSG_WARN([wchar_t support disabled.])
fi
])
case "${enable_debug}" in
yes)
DEBUG_FLAGS='-O0 -ggdb3'
- ;;
+ ;;
no)
DEBUG_FLAGS='-g'
;;
dnl Somehow this same set of flags must be passed when [re]building
dnl libgcc.
dnl --disable-cxx-flags passes nothing.
-dnl + See http://sourceware.cygnus.com/ml/libstdc++/2000-q2/msg00131.html
-dnl http://sourceware.cygnus.com/ml/libstdc++/2000-q2/msg00284.html
-dnl http://sourceware.cygnus.com/ml/libstdc++/2000-q1/msg00035.html
+dnl + See http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00131.html
+dnl http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00284.html
+dnl http://gcc.gnu.org/ml/libstdc++/2000-q1/msg00035.html
dnl + Usage: GLIBCPP_ENABLE_CXX_FLAGS(default flags)
dnl If "default flags" is an empty string (or "none"), the effect is
dnl the same as --disable or --enable=no.
])
+dnl
+dnl Check for which locale library to use: gnu or generic.
+dnl
+dnl GLIBCPP_ENABLE_CLOCALE
+dnl --enable-clocale=gnu sets config/locale/c_locale_gnu.cc and friends
+dnl --enable-clocale=generic sets config/locale/c_locale_generic.cc and friends
+dnl
+dnl default is generic
+dnl
+AC_DEFUN(GLIBCPP_ENABLE_CLOCALE, [
+ AC_MSG_CHECKING([for clocale to use])
+ AC_ARG_ENABLE(clocale,
+ [ --enable-clocale enable model for target locale package.
+ --enable-clocale=MODEL use MODEL target-speific locale package. [default=generic]
+ ],
+ if test x$enable_clocale = xno; then
+ enable_clocale=generic
+ fi,
+ enable_clocale=generic)
+
+ enable_clocale_flag=$enable_clocale
+
+ dnl Check if a valid locale package
+ case x${enable_clocale_flag} in
+ xgeneric)
+ AC_MSG_RESULT(generic)
+
+ # Don't use gettext.
+ USE_NLS=no
+
+ CLOCALE_H=config/locale/c_locale_generic.h
+ CLOCALE_CC=config/locale/c_locale_generic.cc
+ CCODECVT_H=config/locale/codecvt_specializations_generic.h
+ CCOLLATE_CC=config/locale/collate_members_generic.cc
+ CMESSAGES_H=config/locale/messages_members_generic.h
+ CMESSAGES_CC=config/locale/messages_members_generic.cc
+ CMONEY_CC=config/locale/moneypunct_members_generic.cc
+ CNUMERIC_CC=config/locale/numpunct_members_generic.cc
+ ;;
+ xgnu)
+ AC_MSG_RESULT(gnu)
+
+ # Declare intention to use gettext, and add support for specific
+ # languages.
+ # For some reason, ALL_LINGUAS has to be before AM_GNU_GETTEXT
+ ALL_LINGUAS="de fr"
+ # Don't call AM_GNU_GETTEXT here. Instead, assume glibc.
+ # Need to deal with MSGFMT, USE_NLS, and glibcpp_[P,M]OFILES
+ USE_NLS=yes
+
+ # Export the build objects.
+ for ling in $ALL_LINGUAS; do \
+ glibcpp_MOFILES="$glibcpp_MOFILES $ling.mo"; \
+ glibcpp_POFILES="$glibcpp_POFILES $ling.po"; \
+ done
+ AC_SUBST(glibcpp_MOFILES)
+ AC_SUBST(glibcpp_POFILES)
+
+ CLOCALE_H=config/locale/c_locale_gnu.h
+ CLOCALE_CC=config/locale/c_locale_gnu.cc
+ CCODECVT_H=config/locale/codecvt_specializations_ieee_1003.1-200x.h
+ CCOLLATE_CC=config/locale/collate_members_gnu.cc
+ CMESSAGES_H=config/locale/messages_members_gnu.h
+ CMESSAGES_CC=config/locale/messages_members_gnu.cc
+ CMONEY_CC=config/locale/moneypunct_members_gnu.cc
+ CNUMERIC_CC=config/locale/numpunct_members_gnu.cc
+ ;;
+ xieee_1003.1)
+ AC_MSG_RESULT(generic)
+
+ # Don't use gettext.
+ USE_NLS=no
+
+ CLOCALE_H=config/locale/c_locale_ieee_1003.1-200x.h
+ CLOCALE_CC=config/locale/c_locale_ieee_1003.1-200x.cc
+ CCODECVT_H=config/locale/codecvt_specializations_ieee_1003.1-200x.h
+ CCOLLATE_CC=config/locale/collate_members_generic.cc
+ CMESSAGES_H=config/locale/messages_members_ieee_1003.1-200x.h
+ CMESSAGES_CC=config/locale/messages_members_ieee_1003.1-200x.cc
+ CMONEY_CC=config/locale/moneypunct_members_generic.cc
+ CNUMERIC_CC=config/locale/numpunct_members_generic.cc
+ ;;
+ *)
+ echo "$enable_clocale is an unknown locale package" 1>&2
+ exit 1
+ ;;
+ esac
+
+ # This is where the testsuite looks for locale catalogs, using the
+ # -DLOCALEDIR define during testsuite compilation.
+ glibcpp_localedir=${glibcpp_builddir}/po/share/locale
+ AC_SUBST(glibcpp_localedir)
+
+ AC_SUBST(USE_NLS)
+ AC_SUBST(CLOCALE_H)
+ AC_SUBST(CCODECVT_H)
+ AC_SUBST(CMESSAGES_H)
+ AC_LINK_FILES($CLOCALE_CC, src/c++locale.cc)
+ AC_LINK_FILES($CCOLLATE_CC, src/collate.cc)
+ AC_LINK_FILES($CMESSAGES_CC, src/messages.cc)
+ AC_LINK_FILES($CMONEY_CC, src/moneypunct.cc)
+ AC_LINK_FILES($CNUMERIC_CC, src/numpunct.cc)
+])
+
+
dnl
dnl Check for which I/O library to use: libio, or something specific.
dnl
dnl GLIBCPP_ENABLE_CSTDIO
-dnl --enable-cstdio=libio sets config/c_io_libio.h and friends
+dnl --enable-cstdio=libio sets config/io/c_io_libio.h and friends
dnl
-dnl default is libio
+dnl default is stdio
dnl
AC_DEFUN(GLIBCPP_ENABLE_CSTDIO, [
AC_MSG_CHECKING([for cstdio to use])
AC_ARG_ENABLE(cstdio,
- [ --enable-cstdio enable GNU libio for target io package. (default)
- --enable-cstdio=LIB use LIB target-speific io package.],
+ [ --enable-cstdio enable stdio for target io package.
+ --enable-cstdio=LIB use LIB target-speific io package. [default=stdio]
+ ],
if test x$enable_cstdio = xno; then
- enable_cstdio=libio
+ enable_cstdio=stdio
fi,
- enable_cstdio=libio)
+ enable_cstdio=stdio)
enable_cstdio_flag=$enable_cstdio
dnl Check if a valid I/O package
case x${enable_cstdio_flag} in
xlibio)
- CSTDIO_H=config/c_io_libio.h
- CSTDIO_CC=config/c_io_libio.cc
+ CSTDIO_H=config/io/c_io_libio.h
+ BASIC_FILE_H=config/io/basic_file_libio.h
+ BASIC_FILE_CC=config/io/basic_file_libio.cc
AC_MSG_RESULT(libio)
# see if we are on a system with libio native (ie, linux)
;;
xstdio | x | xno | xnone | xyes)
# default
- CSTDIO_H=config/c_io_stdio.h
- CSTDIO_CC=config/c_io_stdio.cc
+ CSTDIO_H=config/io/c_io_stdio.h
+ BASIC_FILE_H=config/io/basic_file_stdio.h
+ BASIC_FILE_CC=config/io/basic_file_stdio.cc
AC_MSG_RESULT(stdio)
# We're not using stdio.
need_libio=no
need_wlibio=no
- # Wide characters are not supported with this package.
- enable_c_mbchar=no
;;
*)
echo "$enable_cstdio is an unknown io package" 1>&2
exit 1
;;
esac
- AC_LINK_FILES($CSTDIO_H, include/bits/c++io.h)
- AC_LINK_FILES($CSTDIO_CC, src/c++io.cc)
+ AC_SUBST(CSTDIO_H)
+ AC_SUBST(BASIC_FILE_H)
+ AC_LINK_FILES($BASIC_FILE_CC, src/basic_file.cc)
# 2000-08-04 bkoz hack
- CCODECVT_C=config/c_io_libio_codecvt.c
- AC_LINK_FILES($CCODECVT_C, libio/c_codecvt.c)
+ CCODECVT_C=config/io/c_io_libio_codecvt.c
+ AC_SUBST(CCODECVT_C)
# 2000-08-04 bkoz hack
+ AM_CONDITIONAL(GLIBCPP_BUILD_LIBIO,
+ test "$need_libio" = yes || test "$need_wlibio" = yes)
AM_CONDITIONAL(GLIBCPP_NEED_LIBIO, test "$need_libio" = yes)
AM_CONDITIONAL(GLIBCPP_NEED_WLIBIO, test "$need_wlibio" = yes)
if test "$need_libio" = yes || test "$need_wlibio" = yes; then
- libio_la=../libio/libio.la
+ libio_la=../libio/libio.la
else
- libio_la=
+ libio_la=
fi
AC_SUBST(libio_la)
])
dnl
-dnl Check for which threading library to use.
-dnl
-dnl GLIBCPP_ENABLE_THREADS
-dnl --enable-threads=posix sets config/threads-posix.h et. al.
-dnl
-dnl Default is no threads, which also disables _IO_MTSAFE_IO in
-dnl libio. Any actual thread package will enable it.
+dnl Setup to use the gcc gthr.h thread-specific memory and mutex model.
+dnl We must stage the required headers so that they will be installed
+dnl with the library (unlike libgcc, the STL implementation is provided
+dnl solely within headers). Since we must not inject random user-space
+dnl macro names into user-provided C++ code, we first stage into <file>-in
+dnl and process to <file> with an output command. The reason for a two-
+dnl stage process here is to correctly handle $srcdir!=$objdir without
+dnl having to write complex code (the sed commands to clean the macro
+dnl namespace are complex and fragile enough as it is). We must also
+dnl add a relative path so that -I- is supported properly.
dnl
AC_DEFUN(GLIBCPP_ENABLE_THREADS, [
- dnl Note this comes from the gcc/config.in and libjava/config.in
- dnl Efforts should be made to keep this in sync.
- AC_MSG_CHECKING([for threads package to use])
- AC_ARG_ENABLE(threads,
- [ --enable-threads enable thread usage for target GCC.
- --enable-threads=LIB use LIB thread package for target GCC.],
- if test x$enable_threads = xno; then
- enable_threads=''
- fi,
- enable_threads='')
-
- enable_threads_flag=$enable_threads
-
- dnl Check if a valid thread package
- case x${enable_threads_flag} in
- x | xno | xnone)
- # No threads
- target_thread_file='single'
- ;;
- xyes)
- # default
- target_thread_file='posix'
- ;;
- xdecosf1 | xirix | xmach | xos2 | xposix | xpthreads | xsingle | \
- xsolaris | xwin32 | xdce | xvxworks)
- target_thread_file=$enable_threads_flag
- ;;
- *)
- echo "$enable_threads is an unknown thread package" 1>&2
- exit 1
- ;;
- esac
-
- dnl Check for thread package actually supported in libstdc++
- THREADH=
- case "$target_thread_file" in
- no | none | single)
- THREADH=threads-no.h
- ;;
- posix | pthreads)
- THREADH=threads-posix.h
- ;;
- decosf1 | irix | mach | os2 | solaris | win32 | dce | vxworks)
- AC_MSG_ERROR(thread package $THREADS not yet supported)
- ;;
- *)
- AC_MSG_ERROR($THREADS is an unsupported/unknown thread package)
- ;;
- esac
- AC_MSG_RESULT($THREADH)
+ AC_MSG_CHECKING([for thread model used by GCC])
+ target_thread_file=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'`
+ AC_MSG_RESULT([$target_thread_file])
- AC_LINK_FILES(config/$THREADH, include/bits/c++threads.h)
- if test $THREADH != threads-no.h; then
- AC_DEFINE(_GLIBCPP_USE_THREADS)
+ if test $target_thread_file != single; then
+ AC_DEFINE(HAVE_GTHR_DEFAULT)
+ AC_DEFINE(_GLIBCPP_SUPPORTS_WEAK, __GXX_WEAK__)
fi
+
+ glibcpp_thread_h=gthr-$target_thread_file.h
+ AC_SUBST(glibcpp_thread_h)
])
-dnl Enable atomic locking
-dnl GLIBCPP_ENABLE_ATOMICITY
-AC_DEFUN(GLIBCPP_ENABLE_ATOMICITY, [
- AC_MSG_CHECKING([for atomicity.h])
- case "$target" in
- *-*-linux* | sparc*-*-* | *-*-freebsd*)
- ATOMICITYH=$cpu_include_dir
- ;;
- *-*-aix* | *-*-irix*)
- ATOMICITYH=$os_include_dir
- ;;
- *)
- # bit of overkill on this text...
- AC_MSG_ERROR([Atomic locking requested, but $enable_threads is an unknown thread package and atomic operations are not present in the CPU])
- ;;
- esac
- AC_MSG_RESULT($ATOMICITYH/bits/atomicity.h)
- AC_LINK_FILES($ATOMICITYH/bits/atomicity.h, include/bits/atomicity.h)
+dnl
+dnl Check for exception handling support. If an explicit enable/disable
+dnl sjlj exceptions is given, we don't have to detect. Otherwise the
+dnl target may or may not support call frame exceptions.
+dnl
+dnl GLIBCPP_ENABLE_SJLJ_EXCEPTIONS
+dnl --enable-sjlj-exceptions forces the use of builtin setjmp.
+dnl --disable-sjlj-exceptions forces the use of call frame unwinding.
+dnl
+dnl Define _GLIBCPP_SJLJ_EXCEPTIONS if the compiler is configured for it.
+dnl
+AC_DEFUN(GLIBCPP_ENABLE_SJLJ_EXCEPTIONS, [
+ AC_MSG_CHECKING([for exception model to use])
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_ARG_ENABLE(sjlj-exceptions,
+ [ --enable-sjlj-exceptions force use of builtin_setjmp for exceptions],
+ [:],
+ [dnl Botheration. Now we've got to detect the exception model.
+ dnl Link tests against libgcc.a are problematic since -- at least
+ dnl as of this writing -- we've not been given proper -L bits for
+ dnl single-tree newlib and libgloss.
+ dnl
+ dnl This is what AC_TRY_COMPILE would do if it didn't delete the
+ dnl conftest files before we got a change to grep them first.
+ cat > conftest.$ac_ext << EOF
+[#]line __oline__ "configure"
+struct S { ~S(); };
+void bar();
+void foo()
+{
+ S s;
+ bar();
+}
+EOF
+ old_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS=-S
+ if AC_TRY_EVAL(ac_compile); then
+ if grep _Unwind_SjLj_Resume conftest.s >/dev/null 2>&1 ; then
+ enable_sjlj_exceptions=yes
+ elif grep _Unwind_Resume conftest.s >/dev/null 2>&1 ; then
+ enable_sjlj_exceptions=no
+ fi
+ fi
+ CXXFLAGS="$old_CXXFLAGS"
+ rm -f conftest*])
+ if test x$enable_sjlj_exceptions = xyes; then
+ AC_DEFINE(_GLIBCPP_SJLJ_EXCEPTIONS, 1,
+ [Define if the compiler is configured for setjmp/longjmp exceptions.])
+ ac_exception_model_name=sjlj
+ elif test x$enable_sjlj_exceptions = xno; then
+ ac_exception_model_name="call frame"
+ else
+ AC_MSG_ERROR([unable to detect exception model])
+ fi
+ AC_LANG_RESTORE
+ AC_MSG_RESULT($ac_exception_model_name)
+])
+
+
+dnl
+dnl Check for ISO/IEC 9899:1999 "C99" support.
+dnl
+dnl GLIBCPP_ENABLE_C99
+dnl --enable-c99 defines _GLIBCPP_USE_C99
+dnl --disable-c99 leaves _GLIBCPP_USE_C99 undefined
+dnl + Usage: GLIBCPP_ENABLE_C99[(DEFAULT)]
+dnl Where DEFAULT is either `yes' or `no'. If omitted, it
+dnl defaults to `no'.
+dnl + If 'C99' stuff is not available, ignores DEFAULT and sets `no'.
+dnl
+dnl GLIBCPP_ENABLE_C99
+AC_DEFUN(GLIBCPP_ENABLE_C99, [dnl
+ define([GLIBCPP_ENABLE_C99_DEFAULT], ifelse($1, yes, yes, no))dnl
+
+ AC_ARG_ENABLE(c99,
+ changequote(<<, >>)dnl
+ <<--enable-c99 turns on 'ISO/IEC 9899:1999 support' [default=>>GLIBCPP_ENABLE_C99_DEFAULT],
+ changequote([, ])dnl
+ [case "$enableval" in
+ yes) enable_c99=yes ;;
+ no) enable_c99=no ;;
+ *) AC_MSG_ERROR([Unknown argument to enable/disable C99]) ;;
+ esac],
+ enable_c99=GLIBCPP_ENABLE_C99_DEFAULT)dnl
+
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+
+ # Check for the existence of <math.h> functions used if C99 is enabled.
+ ac_c99_math=yes;
+ AC_MSG_CHECKING([for ISO C99 support in <math.h>])
+ AC_TRY_COMPILE([#include <math.h>],[fpclassify(0.0);],, [ac_c99_math=no])
+ AC_TRY_COMPILE([#include <math.h>],[isfinite(0.0);],, [ac_c99_math=no])
+ AC_TRY_COMPILE([#include <math.h>],[isinf(0.0);],, [ac_c99_math=no])
+ AC_TRY_COMPILE([#include <math.h>],[isnan(0.0);],, [ac_c99_math=no])
+ AC_TRY_COMPILE([#include <math.h>],[isnormal(0.0);],, [ac_c99_math=no])
+ AC_TRY_COMPILE([#include <math.h>],[signbit(0.0);],, [ac_c99_math=no])
+ AC_TRY_COMPILE([#include <math.h>],[isgreater(0.0,0.0);],, [ac_c99_math=no])
+ AC_TRY_COMPILE([#include <math.h>],
+ [isgreaterequal(0.0,0.0);],, [ac_c99_math=no])
+ AC_TRY_COMPILE([#include <math.h>],[isless(0.0,0.0);],, [ac_c99_math=no])
+ AC_TRY_COMPILE([#include <math.h>],[islessequal(0.0,0.0);],,[ac_c99_math=no])
+ AC_TRY_COMPILE([#include <math.h>],
+ [islessgreater(0.0,0.0);],, [ac_c99_math=no])
+ AC_TRY_COMPILE([#include <math.h>],
+ [isunordered(0.0,0.0);],, [ac_c99_math=no])
+ AC_MSG_RESULT($ac_c99_math)
+
+ # Check for the existence in <stdio.h> of vscanf, et. al.
+ ac_c99_stdio=yes;
+ AC_MSG_CHECKING([for ISO C99 support in <stdio.h>])
+ AC_TRY_COMPILE([#include <stdio.h>],
+ [snprintf("12", 0, "%i");],, [ac_c99_stdio=no])
+ AC_TRY_COMPILE([#include <stdio.h>
+ #include <stdarg.h>
+ void foo(char* fmt, ...)
+ {va_list args; va_start(args, fmt);
+ vfscanf(stderr, "%i", args);}],
+ [],, [ac_c99_stdio=no])
+ AC_TRY_COMPILE([#include <stdio.h>
+ #include <stdarg.h>
+ void foo(char* fmt, ...)
+ {va_list args; va_start(args, fmt);
+ vscanf("%i", args);}],
+ [],, [ac_c99_stdio=no])
+ AC_TRY_COMPILE([#include <stdio.h>
+ #include <stdarg.h>
+ void foo(char* fmt, ...)
+ {va_list args; va_start(args, fmt);
+ vsnprintf(fmt, 0, "%i", args);}],
+ [],, [ac_c99_stdio=no])
+ AC_TRY_COMPILE([#include <stdio.h>
+ #include <stdarg.h>
+ void foo(char* fmt, ...)
+ {va_list args; va_start(args, fmt);
+ vsscanf(fmt, "%i", args);}],
+ [],, [ac_c99_stdio=no])
+ AC_MSG_RESULT($ac_c99_stdio)
+
+ # Check for the existence in <stdlib.h> of lldiv_t, et. al.
+ ac_c99_stdlib=yes;
+ AC_MSG_CHECKING([for lldiv_t declaration])
+ AC_CACHE_VAL(ac_c99_lldiv_t, [
+ AC_TRY_COMPILE([#include <stdlib.h>],
+ [ lldiv_t mydivt;],
+ [ac_c99_lldiv_t=yes], [ac_c99_lldiv_t=no])
+ ])
+ AC_MSG_RESULT($ac_c99_lldiv_t)
+
+ AC_MSG_CHECKING([for ISO C99 support in <stdlib.h>])
+ AC_TRY_COMPILE([#include <stdlib.h>],
+ [char* tmp; strtof("gnu", &tmp);],, [ac_c99_stdlib=no])
+ AC_TRY_COMPILE([#include <stdlib.h>],
+ [char* tmp; strtold("gnu", &tmp);],, [ac_c99_stdlib=no])
+ AC_TRY_COMPILE([#include <stdlib.h>],
+ [char* tmp; strtoll("gnu", &tmp, 10);],, [ac_c99_stdlib=no])
+ AC_TRY_COMPILE([#include <stdlib.h>],
+ [char* tmp; strtoull("gnu", &tmp, 10);],, [ac_c99_stdlib=no])
+ AC_TRY_COMPILE([#include <stdlib.h>], [llabs(10);],, [ac_c99_stdlib=no])
+ AC_TRY_COMPILE([#include <stdlib.h>], [lldiv(10,1);],, [ac_c99_stdlib=no])
+ AC_TRY_COMPILE([#include <stdlib.h>], [atoll("10");],, [ac_c99_stdlib=no])
+ AC_TRY_COMPILE([#include <stdlib.h>], [_Exit(0);],, [ac_c99_stdlib=no])
+ if test x"$ac_c99_lldiv_t" = x"no"; then
+ ac_c99_stdlib=no;
+ fi;
+ AC_MSG_RESULT($ac_c99_stdlib)
+
+ # Check for the existence of <wchar.h> functions used if C99 is enabled.
+ # XXX the wchar.h checks should be rolled into the general C99 bits.
+ ac_c99_wchar=yes;
+ AC_MSG_CHECKING([for additional ISO C99 support in <wchar.h>])
+ AC_TRY_COMPILE([#include <wchar.h>],
+ [wcstold(L"10.0", NULL);],, [ac_c99_wchar=no])
+ AC_TRY_COMPILE([#include <wchar.h>],
+ [wcstoll(L"10", NULL, 10);],, [ac_c99_wchar=no])
+ AC_TRY_COMPILE([#include <wchar.h>],
+ [wcstoull(L"10", NULL, 10);],, [ac_c99_wchar=no])
+ AC_MSG_RESULT($ac_c99_wchar)
+
+ AC_MSG_CHECKING([for enabled ISO C99 support])
+ if test x"$ac_c99_math" = x"no" ||
+ test x"$ac_c99_stdio" = x"no" ||
+ test x"$ac_c99_stdlib" = x"no" ||
+ test x"$ac_c99_wchar" = x"no"; then
+ enable_c99=no;
+ fi;
+ AC_MSG_RESULT($enable_c99)
+
+ # Option parsed, now set things appropriately
+ if test x"$enable_c99" = x"yes"; then
+ AC_DEFINE(_GLIBCPP_USE_C99)
+ fi
+
+ AC_LANG_RESTORE
])
dnl
dnl Check for template specializations for the 'long long' type extension.
+dnl NB: Must check for C99 support before calling _GLIBCPP_ENABLE_LONG_LONG
dnl
dnl GLIBCPP_ENABLE_LONG_LONG
dnl --enable-long-long defines _GLIBCPP_USE_LONG_LONG
dnl --disable-long-long leaves _GLIBCPP_USE_LONG_LONG undefined
dnl + Usage: GLIBCPP_ENABLE_LONG_LONG[(DEFAULT)]
-dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
+dnl Where DEFAULT is either `yes' or `no'. If omitted, it
dnl defaults to `no'.
dnl + If 'long long' stuff is not available, ignores DEFAULT and sets `no'.
dnl
esac],
enable_long_long=GLIBCPP_ENABLE_LONG_LONG_DEFAULT)dnl
- # Check for the existance of functions used if long long is enabled.
- AC_CHECK_FUNC(strtoll,,ac_strtoll=no)
- AC_CHECK_FUNC(strtoull,,ac_strtoull=no)
-
- AC_MSG_CHECKING([for enabled long long])
- if test x"$ac_strtoll" = xno || test x"$ac_strtoull" = xno; then
+ # iostreams require strtoll, strtoull to compile. If the
+ # GLIBCPP_ENABLE_C99 tests found these, and if C99 support is enabled,
+ # go ahead and allow long long to be used.
+ if test x"$enable_c99" = x"no"; then
enable_long_long=no;
- fi;
- AC_MSG_RESULT($enable_long_long)
+ fi
- dnl Option parsed, now set things appropriately
+ # Option parsed, now set things appropriately
+ AC_MSG_CHECKING([for enabled long long support])
if test x"$enable_long_long" = xyes; then
AC_DEFINE(_GLIBCPP_USE_LONG_LONG)
fi
+ AC_MSG_RESULT($enable_long_long)
])
dnl
-dnl Check for whether or not to do shadowed C headers.
+dnl Check for what kind of C headers to use.
dnl
-dnl GLIBCPP_ENABLE_SHADOW
-dnl --enable-cshadow-headers [does stuff].
-dnl --disable-cshadow-headers [does not do stuff].
-dnl + This will eventually need to be on by default.
-dnl + Usage: GLIBCPP_ENABLE_SHADOW[(DEFAULT)]
-dnl Where DEFAULT is either `yes' or `no'. If ommitted, it
-dnl defaults to `no'.
-AC_DEFUN(GLIBCPP_ENABLE_SHADOW, [dnl
-define([GLIBCPP_ENABLE_SHADOW_DEFAULT], ifelse($1, yes, yes, no))dnl
-AC_MSG_CHECKING([for enabled cshadow headers])
-AC_ARG_ENABLE(cshadow-headers,
+dnl GLIBCPP_ENABLE_CHEADERS
+dnl --enable-cheaders= [does stuff].
+dnl --disable-cheaders [does not do anything, really].
+dnl + This will eventually need to be 'c_shadow' by default.
+dnl + Usage: GLIBCPP_ENABLE_CHEADERS[(DEFAULT)]
+dnl Where DEFAULT is either `c' or `c_std' or 'c_shadow'.
+dnl If ommitted, it defaults to `c_std'.
+AC_DEFUN(GLIBCPP_ENABLE_CHEADERS, [dnl
+define([GLIBCPP_ENABLE_CHEADERS_DEFAULT], ifelse($1, c_std, c_std, c_std))dnl
+AC_MSG_CHECKING([for c header strategy to use])
+AC_ARG_ENABLE(cheaders,
changequote(<<, >>)dnl
-<< --enable-cshadow-headers construct "shadowed" C header files for
- g++ [default=>>GLIBCPP_ENABLE_SHADOW_DEFAULT],
+<< --enable-cheaders construct "C" header files for g++ [default=>>GLIBCPP_ENABLE_CHEADERS_DEFAULT],
changequote([, ])
[case "$enableval" in
- yes) enable_cshadow_headers=yes
+ c)
+ enable_cheaders=c
+ ;;
+ c_std)
+ enable_cheaders=c_std
;;
- no) enable_cshadow_headers=no
+ c_shadow)
+ enable_cheaders=c_shadow
;;
- *) AC_MSG_ERROR([Unknown argument to enable/disable shadowed C headers])
+ *) AC_MSG_ERROR([Unknown argument to enable/disable "C" headers])
;;
esac],
- enable_cshadow_headers=GLIBCPP_ENABLE_SHADOW_DEFAULT)
- AC_MSG_RESULT($enable_cshadow_headers)
+ enable_cheaders=GLIBCPP_ENABLE_CHEADERS_DEFAULT)
+ AC_MSG_RESULT($enable_cheaders)
dnl Option parsed, now set things appropriately
- dnl NB: these things may be duplicated in c++config.h as well.
- case "$enable_cshadow_headers" in
- yes)
+ case "$enable_cheaders" in
+ c_shadow)
CSHADOW_FLAGS="-fno-builtin"
- C_INCLUDE_DIR='${top_srcdir}/include/c_std'
+ C_INCLUDE_DIR='${glibcpp_srcdir}/include/c_shadow'
AC_DEFINE(_GLIBCPP_USE_SHADOW_HEADERS)
;;
- no)
+ c_std)
CSHADOW_FLAGS=""
- C_INCLUDE_DIR='${top_srcdir}/include/c'
+ C_INCLUDE_DIR='${glibcpp_srcdir}/include/c_std'
+ ;;
+ c)
+ CSHADOW_FLAGS=""
+ C_INCLUDE_DIR='${glibcpp_srcdir}/include/c'
;;
esac
AC_SUBST(CSHADOW_FLAGS)
AC_SUBST(C_INCLUDE_DIR)
- AM_CONDITIONAL(GLIBCPP_USE_CSHADOW, test "$enable_cshadow_headers" = yes)
+ AM_CONDITIONAL(GLIBCPP_USE_CSHADOW, test "$enable_cheaders" = c_shadow)
])
dnl
dnl Set up *_INCLUDES and *_INCLUDE_DIR variables for all sundry Makefile.am's.
dnl
-dnl GLIBCPP_INCLUDE_DIR
-dnl C_INCLUDE_DIR
dnl TOPLEVEL_INCLUDES
dnl LIBMATH_INCLUDES
dnl LIBSUPCXX_INCLUDES
dnl LIBIO_INCLUDES
dnl CSHADOW_INCLUDES
dnl
-dnl GLIBCPP_EXPORT_INCLUDE
+dnl GLIBCPP_EXPORT_INCLUDES
AC_DEFUN(GLIBCPP_EXPORT_INCLUDES, [
- # Root level of the include sources.
- GLIBCPP_INCLUDE_DIR='$(top_srcdir)/include'
+ # Root level of the build directory include sources.
+ GLIBCPP_INCLUDES="-I${glibcpp_builddir}/include/${target_alias} -I${glibcpp_builddir}/include"
- # Can either use include/c or include/c_std to grab "C" headers. This
- # variable is set to the include directory currently in use.
- # set with C_INCLUDE_DIR in GLIBCPP_ENABLE_SHADOW
-
# Passed down for canadian crosses.
- if test x"$CANADIAN" = xyes; then
+ if test x"$CANADIAN" = xyes; then
TOPLEVEL_INCLUDES='-I$(includedir)'
fi
LIBSUPCXX_INCLUDES='-I$(top_srcdir)/libsupc++'
- #if GLIBCPP_NEED_LIBIO
- LIBIO_INCLUDES='-I$(top_builddir)/libio -I$(top_srcdir)/libio'
- #else
- #LIBIO_INCLUDES='-I$(top_srcdir)/libio'
- #endif
-
- #if GLIBCPP_USE_CSHADOW
- # CSHADOW_INCLUDES='-I$(GLIBCPP_INCLUDE_DIR)/std -I$(C_INCLUDE_DIR) \
- # -I$(top_blddir)/cshadow'
- #else
- CSHADOW_INCLUDES='-I$(GLIBCPP_INCLUDE_DIR)/std -I$(C_INCLUDE_DIR)'
- #endif
+ if test x"$need_libio" = xyes; then
+ LIBIO_INCLUDES='-I$(top_builddir)/libio -I$(top_srcdir)/libio'
+ AC_SUBST(LIBIO_INCLUDES)
+ fi
# Now, export this to all the little Makefiles....
- AC_SUBST(GLIBCPP_INCLUDE_DIR)
+ AC_SUBST(GLIBCPP_INCLUDES)
AC_SUBST(TOPLEVEL_INCLUDES)
AC_SUBST(LIBMATH_INCLUDES)
AC_SUBST(LIBSUPCXX_INCLUDES)
- AC_SUBST(LIBIO_INCLUDES)
- AC_SUBST(CSHADOW_INCLUDES)
])
AC_SUBST(WARN_FLAGS)
])
+dnl
+dnl GLIBCPP_EXPORT_INSTALL_INFO
+dnl calculates gxx_install_dir
+dnl exports glibcpp_toolexecdir
+dnl exports glibcpp_toolexeclibdir
+dnl exports glibcpp_prefixdir
+dnl
+dnl Assumes cross_compiling bits already done, and with_cross_host in
+dnl particular
+dnl
+dnl GLIBCPP_EXPORT_INSTALL_INFO
+AC_DEFUN(GLIBCPP_EXPORT_INSTALL_INFO, [
+# Assumes glibcpp_builddir, glibcpp_srcdir are alreay set up and
+# exported correctly in GLIBCPP_CONFIGURE.
+glibcpp_toolexecdir=no
+glibcpp_toolexeclibdir=no
+glibcpp_prefixdir=${prefix}
+
+AC_MSG_CHECKING([for interface version number])
+libstdcxx_interface=$INTERFACE
+AC_MSG_RESULT($libstdcxx_interface)
+
+# Process the option --with-gxx-include-dir=<path to include-files directory>
+AC_MSG_CHECKING([for --with-gxx-include-dir])
+AC_ARG_WITH(gxx-include-dir,
+[ --with-gxx-include-dir the installation directory for include files],
+[case "${withval}" in
+ yes)
+ AC_MSG_ERROR(Missing directory for --with-gxx-include-dir)
+ gxx_include_dir=no
+ ;;
+ no)
+ gxx_include_dir=no
+ ;;
+ *)
+ gxx_include_dir=${withval}
+ ;;
+esac], [gxx_include_dir=no])
+AC_MSG_RESULT($gxx_include_dir)
-# Check whether LC_MESSAGES is available in <locale.h>.
-# Ulrich Drepper <drepper@cygnus.com>, 1995.
-#
-# This file file be copied and used freely without restrictions. It can
-# be used in projects which are not available under the GNU Public License
-# but which still want to provide support for the GNU gettext functionality.
-# Please note that the actual code is *not* freely available.
+# Process the option "--enable-version-specific-runtime-libs"
+AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
+AC_ARG_ENABLE(version-specific-runtime-libs,
+[ --enable-version-specific-runtime-libs Specify that runtime libraries should be installed in a compiler-specific directory ],
+[case "$enableval" in
+ yes) version_specific_libs=yes ;;
+ no) version_specific_libs=no ;;
+ *) AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);;
+ esac],
+version_specific_libs=no)dnl
+# Option set, now we can test it.
+AC_MSG_RESULT($version_specific_libs)
+
+if test $version_specific_libs = yes; then
+ # Need the gcc compiler version to know where to install libraries
+ # and header files if --enable-version-specific-runtime-libs option
+ # is selected.
+ changequote(,)dnl
+ gcc_version_trigger=${srcdir}/../gcc/version.c
+ gcc_version_full=`grep version_string ${gcc_version_trigger} | sed -e 's/.*\"\([^\"]*\)\".*/\1/'`
+ gcc_version=`echo ${gcc_version_full} | sed -e 's/\([^ ]*\) .*/\1/'`
+ gxx_include_dir='$(libdir)/gcc-lib/$(target_alias)/'${gcc_version}/include/g++
+ glibcpp_toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
+ glibcpp_toolexeclibdir='$(toolexecdir)/'${gcc_version}'$(MULTISUBDIR)'
+ changequote([,])dnl
+fi
-# serial 1
+# Default case for install directory for include files.
+if test $version_specific_libs = no &&
+ test $gxx_include_dir = no; then
+ gxx_include_dir='$(prefix)'/include/g++-${libstdcxx_interface}
+fi
-AC_DEFUN(AC_LC_MESSAGES,
- [if test $ac_cv_header_locale_h = yes; then
- AC_CACHE_CHECK([for LC_MESSAGES], ac_cv_val_LC_MESSAGES,
- [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
- ac_cv_val_LC_MESSAGES=yes, ac_cv_val_LC_MESSAGES=no)])
- if test $ac_cv_val_LC_MESSAGES = yes; then
- AC_DEFINE(HAVE_LC_MESSAGES)
- fi
- fi])
+# Calculate glibcpp_toolexecdir, glibcpp_toolexeclibdir
+# Install a library built with a cross compiler in tooldir, not libdir.
+if test x"$glibcpp_toolexecdir" = x"no"; then
+ if test -n "$with_cross_host" &&
+ test x"$with_cross_host" != x"no"; then
+ glibcpp_toolexecdir='$(exec_prefix)/$(target_alias)'
+ glibcpp_toolexeclibdir='$(toolexecdir)/lib$(MULTISUBDIR)'
+ else
+ glibcpp_toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
+ glibcpp_toolexeclibdir='$(libdir)$(MULTISUBDIR)'
+ fi
+fi
+
+AC_MSG_CHECKING([for install location])
+AC_MSG_RESULT($gxx_include_dir)
+
+AC_SUBST(glibcpp_prefixdir)
+AC_SUBST(gxx_include_dir)
+AC_SUBST(glibcpp_toolexecdir)
+AC_SUBST(glibcpp_toolexeclibdir)
+])
# Check for functions in math library.
])
-# Check for string functions.
-# Ulrich Drepper <drepper@cygnus.com>, 1998.
-#
-# This file can be copied and used freely without restrictions. It can
-# be used in projects which are not available under the GNU Public License
-# but which still want to provide support for the GNU gettext functionality.
-# Please note that the actual code is *not* freely available.
-
-# serial 1
-
-dnl AC_REPLACE_STRINGFUNCS(FUNCTION...)
-AC_DEFUN(AC_REPLACE_STRINGFUNCS,
-[AC_CHECK_FUNCS([$1], , [LIBSTRINGOBJS="$LIBSTRINGOBJS ${ac_func}.lo"])
-AC_SUBST(LIBSTRINGOBJS)dnl
-])
-
dnl This macro searches for a GNU version of make. If a match is found, the
dnl makefile variable `ifGNUmake' is set to the empty string, otherwise it is
dnl #### conditional's subshell (" --version" is not a command), using a
dnl #### different option to grep(1).
dnl #### -pme
+dnl #### Fixed Bourne shell portability bug (use ${MAKE-make}, not
+dnl #### ${MAKE:-make}).
+dnl #### -msokolov
AC_DEFUN(
GLIBCPP_CHECK_GNU_MAKE, [AC_CACHE_CHECK( for GNU make,_cv_gnu_make_command,
_cv_gnu_make_command='' ;
dnl Search all the common names for GNU make
- for a in "${MAKE:-make}" make gmake gnumake ; do
+ for a in "${MAKE-make}" make gmake gnumake ; do
if ( $a --version 2> /dev/null | grep -c GNU > /dev/null )
then
_cv_gnu_make_command=$a ;
AC_SUBST(ifGNUmake)
])
+
+dnl Check for headers for, and arguments to, the setrlimit() function.
+dnl Used only in testsuite_hooks.h.
+AC_DEFUN(GLIBCPP_CHECK_SETRLIMIT_ancilliary, [
+ AC_TRY_COMPILE([#include <sys/resource.h>
+ #include <unistd.h>
+ ], [ int f = RLIMIT_$1 ; ],
+ [glibcpp_mresult=1], [glibcpp_mresult=0])
+ AC_DEFINE_UNQUOTED(HAVE_MEMLIMIT_$1, $glibcpp_mresult,
+ [Only used in build directory testsuite_hooks.h.])
+])
+AC_DEFUN(GLIBCPP_CHECK_SETRLIMIT, [
+ setrlimit_have_headers=yes
+ AC_CHECK_HEADERS(sys/resource.h unistd.h,
+ [],
+ setrlimit_have_headers=no)
+ # If don't have the headers, then we can't run the tests now, and we
+ # won't be seeing any of these during testsuite compilation.
+ if test $setrlimit_have_headers = yes; then
+ # Can't do these in a loop, else the resulting syntax is wrong.
+ GLIBCPP_CHECK_SETRLIMIT_ancilliary(DATA)
+ GLIBCPP_CHECK_SETRLIMIT_ancilliary(RSS)
+ GLIBCPP_CHECK_SETRLIMIT_ancilliary(VMEM)
+ GLIBCPP_CHECK_SETRLIMIT_ancilliary(AS)
+
+ # Check for rlimit, setrlimit.
+ AC_CACHE_VAL(ac_setrlimit, [
+ AC_TRY_COMPILE([#include <sys/resource.h>
+ #include <unistd.h>
+ ],
+ [ struct rlimit r; setrlimit(0, &r);],
+ [ac_setrlimit=yes], [ac_setrlimit=no])
+ ])
+ fi
+
+ AC_MSG_CHECKING([for testsuite memory limit support])
+ if test $setrlimit_have_headers = yes && test $ac_setrlimit = yes; then
+ ac_mem_limits=yes
+ AC_DEFINE(_GLIBCPP_MEM_LIMITS)
+ else
+ ac_mem_limits=no
+ fi
+ AC_MSG_RESULT($ac_mem_limits)
+])
+
+
+dnl
+dnl Does any necessary configuration of the testsuite directory. Generates
+dnl the testsuite_hooks.h header.
+dnl
+dnl GLIBCPP_CONFIGURE_TESTSUITE [no args]
+AC_DEFUN(GLIBCPP_CONFIGURE_TESTSUITE, [
+ GLIBCPP_CHECK_SETRLIMIT
+])
+
+
sinclude(../libtool.m4)
dnl The lines below arrange for aclocal not to bring an installed
dnl libtool.m4 into aclocal.m4, while still arranging for automake to
])
+# Check whether LC_MESSAGES is available in <locale.h>.
+# Ulrich Drepper <drepper@cygnus.com>, 1995.
+#
+# This file file be copied and used freely without restrictions. It can
+# be used in projects which are not available under the GNU Public License
+# but which still want to provide support for the GNU gettext functionality.
+# Please note that the actual code is *not* freely available.
+
+# serial 1
+
+AC_DEFUN(AC_LC_MESSAGES, [
+ AC_CHECK_HEADER(locale.h, [
+ AC_CACHE_CHECK([for LC_MESSAGES], ac_cv_val_LC_MESSAGES,
+ [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
+ ac_cv_val_LC_MESSAGES=yes, ac_cv_val_LC_MESSAGES=no)])
+ if test $ac_cv_val_LC_MESSAGES = yes; then
+ AC_DEFINE(HAVE_LC_MESSAGES)
+ fi
+ ])
+])
+
+
+# Add --enable-maintainer-mode option to configure.
+# From Jim Meyering
+
+# serial 1
+
+AC_DEFUN(AM_MAINTAINER_MODE,
+[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+ dnl maintainer-mode is disabled by default
+ AC_ARG_ENABLE(maintainer-mode,
+[ --enable-maintainer-mode enable make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer],
+ USE_MAINTAINER_MODE=$enableval,
+ USE_MAINTAINER_MODE=no)
+ AC_MSG_RESULT($USE_MAINTAINER_MODE)
+ AM_CONDITIONAL(MAINTAINER_MODE, test $USE_MAINTAINER_MODE = yes)
+ MAINT=$MAINTAINER_MODE_TRUE
+ AC_SUBST(MAINT)dnl
+]
+)
+
+# Define a conditional.
+
+AC_DEFUN(AM_CONDITIONAL,
+[AC_SUBST($1_TRUE)
+AC_SUBST($1_FALSE)
+if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
+else
+ $1_TRUE='#'
+ $1_FALSE=
+fi])
+
+# Macro to add for using GNU gettext.
+# Ulrich Drepper <drepper@cygnus.com>, 1995.
+#
+# This file can be copied and used freely without restrictions. It can
+# be used in projects which are not available under the GNU Public License
+# but which still want to provide support for the GNU gettext functionality.
+# Please note that the actual code is *not* freely available.
+
+# serial 5
+
+AC_DEFUN(AM_WITH_NLS,
+ [AC_MSG_CHECKING([whether NLS is requested])
+ dnl Default is enabled NLS
+ AC_ARG_ENABLE(nls,
+ [ --disable-nls do not use Native Language Support],
+ USE_NLS=$enableval, USE_NLS=yes)
+ AC_MSG_RESULT($USE_NLS)
+ AC_SUBST(USE_NLS)
+
+ USE_INCLUDED_LIBINTL=no
+
+ dnl If we use NLS figure out what method
+ if test "$USE_NLS" = "yes"; then
+ AC_DEFINE(ENABLE_NLS)
+ AC_MSG_CHECKING([whether included gettext is requested])
+ AC_ARG_WITH(included-gettext,
+ [ --with-included-gettext use the GNU gettext library included here],
+ nls_cv_force_use_gnu_gettext=$withval,
+ nls_cv_force_use_gnu_gettext=no)
+ AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
+
+ nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
+ if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
+ dnl User does not insist on using GNU NLS library. Figure out what
+ dnl to use. If gettext or catgets are available (in this order) we
+ dnl use this. Else we have to fall back to GNU NLS library.
+ dnl catgets is only used if permitted by option --with-catgets.
+ nls_cv_header_intl=
+ nls_cv_header_libgt=
+ CATOBJEXT=NONE
+
+ AC_CHECK_HEADER(libintl.h,
+ [AC_CACHE_CHECK([for gettext in libc], gt_cv_func_gettext_libc,
+ [AC_TRY_LINK([#include <libintl.h>], [return (int) gettext ("")],
+ gt_cv_func_gettext_libc=yes, gt_cv_func_gettext_libc=no)])
+
+ if test "$gt_cv_func_gettext_libc" != "yes"; then
+ AC_CHECK_LIB(intl, bindtextdomain,
+ [AC_CACHE_CHECK([for gettext in libintl],
+ gt_cv_func_gettext_libintl,
+ [AC_CHECK_LIB(intl, gettext,
+ gt_cv_func_gettext_libintl=yes,
+ gt_cv_func_gettext_libintl=no)],
+ gt_cv_func_gettext_libintl=no)])
+ fi
+
+ if test "$gt_cv_func_gettext_libc" = "yes" \
+ || test "$gt_cv_func_gettext_libintl" = "yes"; then
+ AC_DEFINE(HAVE_GETTEXT)
+ AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
+ [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
+ if test "$MSGFMT" != "no"; then
+ AC_CHECK_FUNCS(dcgettext)
+ AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
+ AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
+ [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
+ AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
+ return _nl_msg_cat_cntr],
+ [CATOBJEXT=.gmo
+ DATADIRNAME=share],
+ [CATOBJEXT=.mo
+ DATADIRNAME=lib])
+ INSTOBJEXT=.mo
+ fi
+ fi
+ ])
+
+ if test "$CATOBJEXT" = "NONE"; then
+ AC_MSG_CHECKING([whether catgets can be used])
+ AC_ARG_WITH(catgets,
+ [ --with-catgets use catgets functions if available],
+ nls_cv_use_catgets=$withval, nls_cv_use_catgets=no)
+ AC_MSG_RESULT($nls_cv_use_catgets)
+
+ if test "$nls_cv_use_catgets" = "yes"; then
+ dnl No gettext in C library. Try catgets next.
+ AC_CHECK_LIB(i, main)
+ AC_CHECK_FUNC(catgets,
+ [AC_DEFINE(HAVE_CATGETS)
+ INTLOBJS="\$(CATOBJS)"
+ AC_PATH_PROG(GENCAT, gencat, no)dnl
+ if test "$GENCAT" != "no"; then
+ AC_PATH_PROG(GMSGFMT, gmsgfmt, no)
+ if test "$GMSGFMT" = "no"; then
+ AM_PATH_PROG_WITH_TEST(GMSGFMT, msgfmt,
+ [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)
+ fi
+ AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
+ [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
+ USE_INCLUDED_LIBINTL=yes
+ CATOBJEXT=.cat
+ INSTOBJEXT=.cat
+ DATADIRNAME=lib
+ INTLDEPS='$(top_builddir)/intl/libintl.a'
+ INTLLIBS=$INTLDEPS
+ LIBS=`echo $LIBS | sed -e 's/-lintl//'`
+ nls_cv_header_intl=intl/libintl.h
+ nls_cv_header_libgt=intl/libgettext.h
+ fi])
+ fi
+ fi
+
+ if test "$CATOBJEXT" = "NONE"; then
+ dnl Neither gettext nor catgets in included in the C library.
+ dnl Fall back on GNU gettext library.
+ nls_cv_use_gnu_gettext=yes
+ fi
+ fi
+
+ if test "$nls_cv_use_gnu_gettext" = "yes"; then
+ dnl Mark actions used to generate GNU NLS library.
+ INTLOBJS="\$(GETTOBJS)"
+ AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
+ [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], msgfmt)
+ AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
+ AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
+ [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
+ AC_SUBST(MSGFMT)
+ USE_INCLUDED_LIBINTL=yes
+ CATOBJEXT=.gmo
+ INSTOBJEXT=.mo
+ DATADIRNAME=share
+ INTLDEPS='$(top_builddir)/intl/libintl.a'
+ INTLLIBS=$INTLDEPS
+ LIBS=`echo $LIBS | sed -e 's/-lintl//'`
+ nls_cv_header_intl=intl/libintl.h
+ nls_cv_header_libgt=intl/libgettext.h
+ fi
+
+ dnl Test whether we really found GNU xgettext.
+ if test "$XGETTEXT" != ":"; then
+ dnl If it is no GNU xgettext we define it as : so that the
+ dnl Makefiles still can work.
+ if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
+ : ;
+ else
+ AC_MSG_RESULT(
+ [found xgettext program is not GNU xgettext; ignore it])
+ XGETTEXT=":"
+ fi
+ fi
+
+ # We need to process the po/ directory.
+ POSUB=po
+ else
+ DATADIRNAME=share
+ nls_cv_header_intl=intl/libintl.h
+ nls_cv_header_libgt=intl/libgettext.h
+ fi
+ AC_LINK_FILES($nls_cv_header_libgt, $nls_cv_header_intl)
+ AC_OUTPUT_COMMANDS(
+ [case "$CONFIG_FILES" in *po/Makefile.in*)
+ sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
+ esac])
+
+
+ # If this is used in GNU gettext we have to set USE_NLS to `yes'
+ # because some of the sources are only built for this goal.
+ if test "$PACKAGE" = gettext; then
+ USE_NLS=yes
+ USE_INCLUDED_LIBINTL=yes
+ fi
+
+ dnl These rules are solely for the distribution goal. While doing this
+ dnl we only have to keep exactly one list of the available catalogs
+ dnl in configure.in.
+ for lang in $ALL_LINGUAS; do
+ GMOFILES="$GMOFILES $lang.gmo"
+ POFILES="$POFILES $lang.po"
+ done
+
+ dnl Make all variables we use known to autoconf.
+ AC_SUBST(USE_INCLUDED_LIBINTL)
+ AC_SUBST(CATALOGS)
+ AC_SUBST(CATOBJEXT)
+ AC_SUBST(DATADIRNAME)
+ AC_SUBST(GMOFILES)
+ AC_SUBST(INSTOBJEXT)
+ AC_SUBST(INTLDEPS)
+ AC_SUBST(INTLLIBS)
+ AC_SUBST(INTLOBJS)
+ AC_SUBST(POFILES)
+ AC_SUBST(POSUB)
+ ])
+
+AC_DEFUN(AM_GNU_GETTEXT,
+ [AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+ AC_REQUIRE([AC_PROG_CC])dnl
+ AC_REQUIRE([AC_PROG_RANLIB])dnl
+ AC_REQUIRE([AC_ISC_POSIX])dnl
+ AC_REQUIRE([AC_HEADER_STDC])dnl
+ AC_REQUIRE([AC_C_CONST])dnl
+ AC_REQUIRE([AC_C_INLINE])dnl
+ AC_REQUIRE([AC_TYPE_OFF_T])dnl
+ AC_REQUIRE([AC_TYPE_SIZE_T])dnl
+ AC_REQUIRE([AC_FUNC_ALLOCA])dnl
+ AC_REQUIRE([AC_FUNC_MMAP])dnl
+
+ AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h string.h \
+unistd.h sys/param.h])
+ AC_CHECK_FUNCS([getcwd munmap putenv setenv setlocale strchr strcasecmp \
+strdup __argz_count __argz_stringify __argz_next])
+
+ if test "${ac_cv_func_stpcpy+set}" != "set"; then
+ AC_CHECK_FUNCS(stpcpy)
+ fi
+ if test "${ac_cv_func_stpcpy}" = "yes"; then
+ AC_DEFINE(HAVE_STPCPY)
+ fi
+
+ AM_LC_MESSAGES
+ AM_WITH_NLS
+
+ if test "x$CATOBJEXT" != "x"; then
+ if test "x$ALL_LINGUAS" = "x"; then
+ LINGUAS=
+ else
+ AC_MSG_CHECKING(for catalogs to be installed)
+ NEW_LINGUAS=
+ for lang in ${LINGUAS=$ALL_LINGUAS}; do
+ case "$ALL_LINGUAS" in
+ *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;;
+ esac
+ done
+ LINGUAS=$NEW_LINGUAS
+ AC_MSG_RESULT($LINGUAS)
+ fi
+
+ dnl Construct list of names of catalog files to be constructed.
+ if test -n "$LINGUAS"; then
+ for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
+ fi
+ fi
+
+ dnl The reference to <locale.h> in the installed <libintl.h> file
+ dnl must be resolved because we cannot expect the users of this
+ dnl to define HAVE_LOCALE_H.
+ if test $ac_cv_header_locale_h = yes; then
+ INCLUDE_LOCALE_H="#include <locale.h>"
+ else
+ INCLUDE_LOCALE_H="\
+/* The system does not provide the header <locale.h>. Take care yourself. */"
+ fi
+ AC_SUBST(INCLUDE_LOCALE_H)
+
+ dnl Determine which catalog format we have (if any is needed)
+ dnl For now we know about two different formats:
+ dnl Linux libc-5 and the normal X/Open format
+ test -d intl || mkdir intl
+ if test "$CATOBJEXT" = ".cat"; then
+ AC_CHECK_HEADER(linux/version.h, msgformat=linux, msgformat=xopen)
+
+ dnl Transform the SED scripts while copying because some dumb SEDs
+ dnl cannot handle comments.
+ sed -e '/^#/d' $srcdir/intl/$msgformat-msg.sed > intl/po2msg.sed
+ fi
+ dnl po2tbl.sed is always needed.
+ sed -e '/^#.*[^\\]$/d' -e '/^#$/d' \
+ $srcdir/intl/po2tbl.sed.in > intl/po2tbl.sed
+
+ dnl In the intl/Makefile.in we have a special dependency which makes
+ dnl only sense for gettext. We comment this out for non-gettext
+ dnl packages.
+ if test "$PACKAGE" = "gettext"; then
+ GT_NO="#NO#"
+ GT_YES=
+ else
+ GT_NO=
+ GT_YES="#YES#"
+ fi
+ AC_SUBST(GT_NO)
+ AC_SUBST(GT_YES)
+
+ dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
+ dnl find the mkinstalldirs script in another subdir but ($top_srcdir).
+ dnl Try to locate is.
+ MKINSTALLDIRS=
+ if test -n "$ac_aux_dir"; then
+ MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
+ fi
+ if test -z "$MKINSTALLDIRS"; then
+ MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
+ fi
+ AC_SUBST(MKINSTALLDIRS)
+
+ dnl *** For now the libtool support in intl/Makefile is not for real.
+ l=
+ AC_SUBST(l)
+
+ dnl Generate list of files to be processed by xgettext which will
+ dnl be included in po/Makefile.
+ test -d po || mkdir po
+ if test "x$srcdir" != "x."; then
+ if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
+ posrcprefix="$srcdir/"
+ else
+ posrcprefix="../$srcdir/"
+ fi
+ else
+ posrcprefix="../"
+ fi
+ rm -f po/POTFILES
+ sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
+ < $srcdir/po/POTFILES.in > po/POTFILES
+ ])
+
+# Search path for a program which passes the given test.
+# Ulrich Drepper <drepper@cygnus.com>, 1996.
+#
+# This file can be copied and used freely without restrictions. It can
+# be used in projects which are not available under the GNU Public License
+# but which still want to provide support for the GNU gettext functionality.
+# Please note that the actual code is *not* freely available.
+
+# serial 1
+
+dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
+dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
+AC_DEFUN(AM_PATH_PROG_WITH_TEST,
+[# Extract the first word of "$2", so it can be a program name with args.
+set dummy $2; ac_word=[$]2
+AC_MSG_CHECKING([for $ac_word])
+AC_CACHE_VAL(ac_cv_path_$1,
+[case "[$]$1" in
+ /*)
+ ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
+ ;;
+ *)
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+ for ac_dir in ifelse([$5], , $PATH, [$5]); do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$ac_word; then
+ if [$3]; then
+ ac_cv_path_$1="$ac_dir/$ac_word"
+ break
+ fi
+ fi
+ done
+ IFS="$ac_save_ifs"
+dnl If no 4th arg is given, leave the cache variable unset,
+dnl so AC_PATH_PROGS will keep looking.
+ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
+])dnl
+ ;;
+esac])dnl
+$1="$ac_cv_path_$1"
+if test -n "[$]$1"; then
+ AC_MSG_RESULT([$]$1)
+else
+ AC_MSG_RESULT(no)
+fi
+AC_SUBST($1)dnl
+])
+
+# Check whether LC_MESSAGES is available in <locale.h>.
+# Ulrich Drepper <drepper@cygnus.com>, 1995.
+#
+# This file can be copied and used freely without restrictions. It can
+# be used in projects which are not available under the GNU Public License
+# but which still want to provide support for the GNU gettext functionality.
+# Please note that the actual code is *not* freely available.
+
+# serial 1
+
+AC_DEFUN(AM_LC_MESSAGES,
+ [if test $ac_cv_header_locale_h = yes; then
+ AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
+ [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
+ am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
+ if test $am_cv_val_LC_MESSAGES = yes; then
+ AC_DEFINE(HAVE_LC_MESSAGES)
+ fi
+ fi])
+
# Do all the work for Automake. This macro actually does too much --
# some checks are only needed if your package does certain things.
# But this isn't really a big deal.
fi
AC_SUBST($1)])
-# Add --enable-maintainer-mode option to configure.
-# From Jim Meyering
-
-# serial 1
-
-AC_DEFUN(AM_MAINTAINER_MODE,
-[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
- dnl maintainer-mode is disabled by default
- AC_ARG_ENABLE(maintainer-mode,
-[ --enable-maintainer-mode enable make rules and dependencies not useful
- (and sometimes confusing) to the casual installer],
- USE_MAINTAINER_MODE=$enableval,
- USE_MAINTAINER_MODE=no)
- AC_MSG_RESULT($USE_MAINTAINER_MODE)
- AM_CONDITIONAL(MAINTAINER_MODE, test $USE_MAINTAINER_MODE = yes)
- MAINT=$MAINTAINER_MODE_TRUE
- AC_SUBST(MAINT)dnl
-]
-)
-
-# Define a conditional.
-
-AC_DEFUN(AM_CONDITIONAL,
-[AC_SUBST($1_TRUE)
-AC_SUBST($1_FALSE)
-if $2; then
- $1_TRUE=
- $1_FALSE='#'
-else
- $1_TRUE='#'
- $1_FALSE=
-fi])
-
# Like AC_CONFIG_HEADER, but automatically create stamp file.
AC_DEFUN(AM_CONFIG_HEADER,