AC_DEFUN(GLIBCPP_TOPREL_CONFIGURE, [
AC_ARG_ENABLE(multilib,
[ --enable-multilib build hella library versions (default)],
[case "${enableval}" in
yes) multilib=yes ;;
no) multilib=no ;;
*) AC_MSG_ERROR(bad value ${enableval} for multilib option) ;;
esac], [multilib=yes])
if test "${srcdir}" = "."; then
if test -z "${with_target_subdir}"; then
toprel=".."
else
if test "${with_target_subdir}" != "."; then
toprel="${with_multisrctop}../.."
else
toprel="${with_multisrctop}.."
fi
fi
else
toprel=".."
fi
AC_CONFIG_AUX_DIR(${srcdir}/$toprel)
toplevel_srcdir=\${top_srcdir}/$toprel
AC_SUBST(toplevel_srcdir)
])
AC_DEFUN(GLIBCPP_CONFIGURE, [
glibcpp_builddir=`${PWDCMD-pwd}`
case $srcdir in
[\\/$]* | ?:[\\/]*) glibcpp_srcdir=${srcdir} ;;
*) glibcpp_srcdir=`cd "$srcdir" && ${PWDCMD-pwd} || echo "$srcdir"` ;;
esac
AC_SUBST(glibcpp_builddir)
AC_SUBST(glibcpp_srcdir)
ifelse(not,equal,[AC_CONFIG_AUX_DIR(..)])
AC_PROG_AWK
AC_PROG_LN_S
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)
ifdef([AC_PROG_CC_G],[],[define([AC_PROG_CC_G],defn([_AC_PROG_CC_G]))])
ifdef([AC_PROG_CC_GNU],[],[define([AC_PROG_CC_GNU],defn([_AC_PROG_CC_GNU]))])
ifdef([AC_PROG_CXX_G],[],[define([AC_PROG_CXX_G],defn([_AC_PROG_CXX_G]))])
ifdef([AC_PROG_CXX_GNU],[],[define([AC_PROG_CXX_GNU],defn([_AC_PROG_CXX_GNU]))])
AC_DEFUN(LIB_AC_PROG_CC,
[AC_BEFORE([$0], [AC_PROG_CPP]) AC_PROVIDE([AC_PROG_CC])
AC_CHECK_PROG(CC, gcc, gcc)
if test -z "$CC"; then
AC_CHECK_PROG(CC, cc, cc, , , /usr/ucb/cc)
test -z "$CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH])
fi
AC_PROG_CC_GNU
if test $ac_cv_prog_gcc = yes; then
GCC=yes
ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
AC_PROG_CC_G
if test "$ac_test_CFLAGS" = set; then
CFLAGS="$ac_save_CFLAGS"
elif test $ac_cv_prog_cc_g = yes; then
CFLAGS="-g -O2"
else
CFLAGS="-O2"
fi
else
GCC=
test "${CFLAGS+set}" = set || CFLAGS="-g"
fi
])
LIB_AC_PROG_CC
AC_DEFUN(LIB_AC_PROG_CXX,
[AC_BEFORE([$0], [AC_PROG_CXXCPP]) AC_PROVIDE([AC_PROG_CXX])
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
if test $ac_cv_prog_gxx = yes; then
GXX=yes
ac_test_CXXFLAGS="${CXXFLAGS+set}"
ac_save_CXXFLAGS="$CXXFLAGS"
CXXFLAGS=
AC_PROG_CXX_G
if test "$ac_test_CXXFLAGS" = set; then
CXXFLAGS="$ac_save_CXXFLAGS"
elif test $ac_cv_prog_cxx_g = yes; then
CXXFLAGS="-g -O2"
else
CXXFLAGS="-O2"
fi
else
GXX=
test "${CXXFLAGS+set}" = set || CXXFLAGS="-g"
fi
])
LIB_AC_PROG_CXX
AC_MSG_CHECKING([for GCC version number])
gcc_version=`$glibcpp_CXX -dumpversion`
AC_MSG_RESULT($gcc_version)
AC_ISC_POSIX
AC_CHECK_TOOL(AS, as)
AC_CHECK_TOOL(AR, ar)
AC_CHECK_TOOL(RANLIB, ranlib, ranlib-not-found-in-path-error)
AC_PROG_INSTALL
AM_MAINTAINER_MODE
if false; then
:
AC_EXEEXT
fi
case [$]{glibcpp_basedir} in
/* | [A-Za-z]:[\\/]*) libgcj_flagbasedir=[$]{glibcpp_basedir} ;;
*) glibcpp_flagbasedir='[$](top_builddir)/'[$]{glibcpp_basedir} ;;
esac
GLIBCPP_CHECK_TARGET
])
AC_DEFUN(GLIBCPP_CHECK_COMPILER_VERSION, [
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(, [
not_ok
], 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
])
AC_DEFUN(GLIBCPP_CHECK_COMPILER_FEATURES, [
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
ac_test_CXXFLAGS="${CXXFLAGS+set}"
ac_save_CXXFLAGS="$CXXFLAGS"
if test x"$USE_MAINTAINER_MODE" = xno; then
WERROR=''
else
WERROR='-Werror'
fi
AC_MSG_CHECKING([for g++ that supports -ffunction-sections -fdata-sections])
CXXFLAGS='-Werror -ffunction-sections -fdata-sections'
AC_TRY_COMPILE(, [int foo;
], [ac_fdsections=yes], [ac_fdsections=no])
if test "$ac_test_CXXFLAGS" = set; then
CXXFLAGS="$ac_save_CXXFLAGS"
else
CXXFLAGS=''
fi
if test x"$ac_fdsections" = x"yes"; then
SECTION_FLAGS='-ffunction-sections -fdata-sections'
fi
AC_MSG_RESULT($ac_fdsections)
AC_LANG_RESTORE
AC_SUBST(WERROR)
AC_SUBST(SECTION_FLAGS)
])
AC_DEFUN(GLIBCPP_CHECK_LINKER_FEATURES, [
test -z "$SECTION_LDFLAGS" && SECTION_LDFLAGS=''
test -z "$OPT_LDFLAGS" && OPT_LDFLAGS=''
AC_REQUIRE([AC_PROG_LD])
if test x${with_gnu_ld+set} != xset; then
if test x${ac_cv_prog_gnu_ld+set} != xset; then
with_gnu_ld=no
else
with_gnu_ld=$ac_cv_prog_gnu_ld
fi
fi
changequote(,)
ldver=`$LD --version 2>/dev/null | head -1 | \
sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
changequote([,])
glibcpp_gnu_ld_version=`echo $ldver | \
$AWK -F. '{ if (NF<3) [$]3=0; print ([$]1*100+[$]2)*100+[$]3 }'`
if test "$with_gnu_ld" = "notbroken"; then
ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS"
CFLAGS='-x c++ -Wl,--gc-sections'
AC_MSG_CHECKING([for ld that supports -Wl,--gc-sections])
AC_TRY_RUN([
int main(void)
{
try { throw 1; }
catch (...) { };
return 0;
}
], [ac_sectionLDflags=yes],[ac_sectionLDflags=no], [ac_sectionLDflags=yes])
if test "$ac_test_CFLAGS" = set; then
CFLAGS="$ac_save_CFLAGS"
else
CFLAGS=''
fi
if test "$ac_sectionLDflags" = "yes"; then
SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
fi
AC_MSG_RESULT($ac_sectionLDflags)
fi
if test x"$with_gnu_ld" = x"yes"; then
OPT_LDFLAGS="-Wl,-O1 $OPT_LDFLAGS"
fi
AC_SUBST(SECTION_LDFLAGS)
AC_SUBST(OPT_LDFLAGS)
])
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([ ],
[ $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)
])
AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1, [
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
])
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([ [ `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
])
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([ [ $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)
])
AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2, [
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
])
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([ [ $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)
])
AC_DEFUN(GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3, [
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
])
AC_DEFUN(GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_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([ [ $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)
fi
])
AC_DEFUN(GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_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([ [ $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)
if test x$glibcpp_cv_func_$1_use = x"yes"; then
AC_CHECK_FUNCS($1)
fi
])
AC_DEFUN(GLIBCPP_CHECK_UNISTD_DECL_AND_LINKAGE_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([ [ $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_CHECK_FUNCS($1)
fi
])
dnl
dnl Because the builtins are picky picky picky about the arguments they take,
dnl do an explict linkage tests here.
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
dnl Define HAVE_CARGF etc if "cargf" is declared and links
dnl
dnl argument 1 is name of function to check
dnl
dnl ASSUMES argument is a math function with ONE parameter
dnl
dnl GLIBCPP_CHECK_BUILTIN_MATH_DECL_LINKAGE_1
AC_DEFUN(GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_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>],
[ $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])
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'`
AC_DEFINE_UNQUOTED(${ac_tr_func})
fi
fi
])
AC_DEFUN(GLIBCPP_CHECK_BUILTIN_MATH_SUPPORT, [
GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_abs)
GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabsf)
GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabs)
GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabsl)
GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_labs)
GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrtf)
GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrt)
GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrtl)
GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sinf)
GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sin)
GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sinl)
GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cosf)
GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cos)
GLIBCPP_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cosl)
dummyvar=no
if test x$dummyvar = x"yes"; then
AC_DEFINE(HAVE___BUILTIN_ABS)
AC_DEFINE(HAVE___BUILTIN_LABS)
AC_DEFINE(HAVE___BUILTIN_COS)
AC_DEFINE(HAVE___BUILTIN_COSF)
AC_DEFINE(HAVE___BUILTIN_COSL)
AC_DEFINE(HAVE___BUILTIN_FABS)
AC_DEFINE(HAVE___BUILTIN_FABSF)
AC_DEFINE(HAVE___BUILTIN_FABSL)
AC_DEFINE(HAVE___BUILTIN_SIN)
AC_DEFINE(HAVE___BUILTIN_SINF)
AC_DEFINE(HAVE___BUILTIN_SINL)
AC_DEFINE(HAVE___BUILTIN_SQRT)
AC_DEFINE(HAVE___BUILTIN_SQRTF)
AC_DEFINE(HAVE___BUILTIN_SQRTL)
fi
])
AC_DEFUN(GLIBCPP_CHECK_STDLIB_SUPPORT, [
ac_test_CXXFLAGS="${CXXFLAGS+set}"
ac_save_CXXFLAGS="$CXXFLAGS"
CXXFLAGS='-fno-builtins -D_GNU_SOURCE'
GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2(strtold)
GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_2(strtof)
AC_CHECK_FUNCS(drand48)
CXXFLAGS="$ac_save_CXXFLAGS"
])
AC_DEFUN(GLIBCPP_CHECK_UNISTD_SUPPORT, [
ac_test_CXXFLAGS="${CXXFLAGS+set}"
ac_save_CXXFLAGS="$CXXFLAGS"
CXXFLAGS='-fno-builtins -D_GNU_SOURCE'
GLIBCPP_CHECK_UNISTD_DECL_AND_LINKAGE_1(isatty)
CXXFLAGS="$ac_save_CXXFLAGS"
])
AC_DEFUN(GLIBCPP_CHECK_MATH_SUPPORT, [
ac_test_CXXFLAGS="${CXXFLAGS+set}"
ac_save_CXXFLAGS="$CXXFLAGS"
CXXFLAGS='-fno-builtins -D_GNU_SOURCE'
AC_CHECK_LIB(m, sin, libm="-lm")
ac_save_LIBS="$LIBS"
LIBS="$LIBS $libm"
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)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(hypot)
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(expf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isnanf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(isinff)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_2(atan2f)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsf)
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(sqrtf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincosf)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(finitef)
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_2(atan2l)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(expl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(fabsl)
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(sqrtl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_3(sincosl)
GLIBCPP_CHECK_MATH_DECL_AND_LINKAGE_1(finitel)
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_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"
])
AC_DEFUN(GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT, [
AC_CHECK_LIB(m, main)
AC_REPLACE_MATHFUNCS(nan copysignf)
AC_CHECK_FUNCS([__signbit], , [LIBMATHOBJS="$LIBMATHOBJS signbit.lo"])
AC_CHECK_FUNCS([__signbitf], , [LIBMATHOBJS="$LIBMATHOBJS signbitf.lo"])
if test x$ac_cv_func_copysignl = x"yes"; then
AC_CHECK_FUNCS([__signbitl], , [LIBMATHOBJS="$LIBMATHOBJS signbitl.lo"])
fi
if test -n "$LIBMATHOBJS"; then
need_libmath=yes
fi
AC_SUBST(LIBMATHOBJS)
AM_CONDITIONAL(GLIBCPP_BUILD_LIBMATH, test "$need_libmath" = yes)
])
AC_DEFUN(GLIBCPP_CHECK_TARGET, [
. [$]{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_DEFUN(GLIBCPP_CHECK_WCHAR_T_SUPPORT, [
enable_wchar_t=no
AC_MSG_CHECKING([for mbstate_t])
AC_TRY_COMPILE([ [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
AC_CHECK_HEADERS(wchar.h, ac_has_wchar_h=yes, ac_has_wchar_h=no)
AC_CHECK_HEADERS(wctype.h, ac_has_wctype_h=yes, ac_has_wctype_h=no)
if test x"$ac_has_wchar_h" = xyes &&
test x"$ac_has_wctype_h" = xyes &&
test x"$enable_c_mbchar" != xno; then
AC_MSG_CHECKING([for WCHAR_MIN and WCHAR_MAX])
AC_TRY_COMPILE([ [int i = WCHAR_MIN; int j = WCHAR_MAX;],
has_wchar_minmax=yes, has_wchar_minmax=no)
AC_MSG_RESULT($has_wchar_minmax)
AC_MSG_CHECKING([for WEOF])
AC_TRY_COMPILE([
[wint_t i = WEOF;],
has_weof=yes, has_weof=no)
AC_MSG_RESULT($has_weof)
ac_wfuncs=yes
AC_CHECK_FUNCS(wcslen wmemchr wmemcmp wmemcpy wmemmove wmemset,, \
ac_wfuncs=no)
AC_CHECK_FUNCS(btowc wctob 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)
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)
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"
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)
if test x"$ac_isoC99_wchar_t" = xyes &&
test x"$ac_XPG2_wchar_t" = xyes; then
AC_DEFINE(_GLIBCPP_USE_WCHAR_T)
enable_wchar_t=yes
fi
fi
AC_MSG_CHECKING([for enabled wchar_t specializations])
AC_MSG_RESULT($enable_wchar_t)
AM_CONDITIONAL(GLIBCPP_TEST_WCHAR_T, test "$enable_wchar_t" = yes)
])
AC_DEFUN(GLIBCPP_ENABLE_DEBUG, [define([GLIBCPP_ENABLE_DEBUG_DEFAULT], ifelse($1, yes, yes, no))AC_ARG_ENABLE(debug,
changequote(<<, >>)<< --enable-debug build extra debug library [default=>>GLIBCPP_ENABLE_DEBUG_DEFAULT],
changequote([, ])[case "${enableval}" in
yes) enable_debug=yes ;;
no) enable_debug=no ;;
*) AC_MSG_ERROR([Unknown argument to enable/disable extra debugging]) ;;
esac],
enable_debug=GLIBCPP_ENABLE_DEBUG_DEFAULT)AC_MSG_CHECKING([for additional debug build])
AC_MSG_RESULT($enable_debug)
AM_CONDITIONAL(GLIBCPP_BUILD_DEBUG, test "$enable_debug" = yes)
])
AC_DEFUN(GLIBCPP_ENABLE_DEBUG_FLAGS, [define([GLIBCPP_ENABLE_DEBUG_FLAGS_DEFAULT], ifelse($1,,, $1))AC_ARG_ENABLE(debug_flags,
changequote(<<, >>)<< --enable-debug-flags=FLAGS pass compiler FLAGS when building debug
library;[default=>>GLIBCPP_ENABLE_DEBUG_FLAGS_DEFAULT],
changequote([, ])[case "${enableval}" in
none) ;;
-*) enable_debug_flags="${enableval}" ;;
*) AC_MSG_ERROR([Unknown argument to extra debugging flags]) ;;
esac],
enable_debug_flags=GLIBCPP_ENABLE_DEBUG_FLAGS_DEFAULT)
case x"$enable_debug" in
xyes)
case "$enable_debug_flags" in
none)
DEBUG_FLAGS="-g3 -O0";;
-*) DEBUG_FLAGS="${enableval}"
esac
;;
xno)
DEBUG_FLAGS=""
;;
esac
AC_SUBST(DEBUG_FLAGS)
AC_MSG_CHECKING([for debug build flags])
AC_MSG_RESULT($DEBUG_FLAGS)
])
AC_DEFUN(GLIBCPP_ENABLE_CXX_FLAGS, [define([GLIBCPP_ENABLE_CXX_FLAGS_DEFAULT], ifelse($1,,, $1))AC_MSG_CHECKING([for extra compiler flags for building])
AC_ARG_ENABLE(cxx_flags,
changequote(<<, >>)<< --enable-cxx-flags=FLAGS pass compiler FLAGS when building library;
[default=>>GLIBCPP_ENABLE_CXX_FLAGS_DEFAULT],
changequote([, ])[case "x$enable_cxx_flags" in
xyes)
AC_MSG_ERROR([--enable-cxx-flags needs compiler flags as arguments]) ;;
xno | xnone | x)
enable_cxx_flags='' ;;
*)
enable_cxx_flags="$enableval" ;;
esac],
enable_cxx_flags=GLIBCPP_ENABLE_CXX_FLAGS_DEFAULT)
if test -n "$enable_cxx_flags"; then
for f in $enable_cxx_flags; do
case "$f" in
-fhonor-std) ;;
-*) ;;
*) AC_MSG_ERROR([compiler flags start with a -]) ;;
esac
done
fi
EXTRA_CXX_FLAGS="$enable_cxx_flags"
AC_MSG_RESULT($EXTRA_CXX_FLAGS)
AC_SUBST(EXTRA_CXX_FLAGS)
])
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=no
fi,
enable_clocale=no)
enable_clocale_flag=$enable_clocale
if test x$enable_clocale_flag = xno; then
case x${target_os} in
xlinux* | xgnu*)
AC_EGREP_CPP([_GLIBCPP_ok], [
_GLIBCPP_ok
], enable_clocale_flag=gnu, enable_clocale_flag=generic)
if test x$enable_clocale_flag = xgnu; then
AC_TRY_RUN([
extern __typeof(newlocale) __newlocale;
extern __typeof(duplocale) __duplocale;
extern __typeof(strcoll_l) __strcoll_l;
int main()
{
const char __one[] = "Äuglein Augmen";
const char __two[] = "Äuglein";
int i;
int j;
__locale_t loc;
__locale_t loc_dup;
loc = __newlocale(1 << LC_ALL, "de_DE", 0);
loc_dup = __duplocale(loc);
i = __strcoll_l(__one, __two, loc);
j = __strcoll_l(__one, __two, loc_dup);
return 0;
}
],
[enable_clocale_flag=gnu],[enable_clocale_flag=generic],
[enable_clocale_flag=generic])
fi
;;
*)
enable_clocale_flag=generic
;;
esac
fi
AC_ARG_ENABLE(nls,
[ --enable-nls use Native Language Support (default)],
, enable_nls=yes)
USE_NLS=no
case x${enable_clocale_flag} in
xgeneric)
AC_MSG_RESULT(generic)
CLOCALE_H=config/locale/generic/c_locale.h
CLOCALE_CC=config/locale/generic/c_locale.cc
CCODECVT_H=config/locale/generic/codecvt_specializations.h
CCODECVT_CC=config/locale/generic/codecvt_members.cc
CCOLLATE_CC=config/locale/generic/collate_members.cc
CCTYPE_CC=config/locale/generic/ctype_members.cc
CMESSAGES_H=config/locale/generic/messages_members.h
CMESSAGES_CC=config/locale/generic/messages_members.cc
CMONEY_CC=config/locale/generic/monetary_members.cc
CNUMERIC_CC=config/locale/generic/numeric_members.cc
CTIME_H=config/locale/generic/time_members.h
CTIME_CC=config/locale/generic/time_members.cc
CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
;;
xgnu)
AC_MSG_RESULT(gnu)
ALL_LINGUAS="de fr"
AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no)
if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then
USE_NLS=yes
fi
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/gnu/c_locale.h
CLOCALE_CC=config/locale/gnu/c_locale.cc
CCODECVT_H=config/locale/ieee_1003.1-2001/codecvt_specializations.h
CCODECVT_CC=config/locale/gnu/codecvt_members.cc
CCOLLATE_CC=config/locale/gnu/collate_members.cc
CCTYPE_CC=config/locale/gnu/ctype_members.cc
CMESSAGES_H=config/locale/gnu/messages_members.h
CMESSAGES_CC=config/locale/gnu/messages_members.cc
CMONEY_CC=config/locale/gnu/monetary_members.cc
CNUMERIC_CC=config/locale/gnu/numeric_members.cc
CTIME_H=config/locale/gnu/time_members.h
CTIME_CC=config/locale/gnu/time_members.cc
CLOCALE_INTERNAL_H=config/locale/gnu/c++locale_internal.h
;;
xieee_1003.1-2001)
AC_MSG_RESULT(generic)
CLOCALE_H=config/locale/ieee_1003.1-2001/c_locale.h
CLOCALE_CC=config/locale/ieee_1003.1-2001/c_locale.cc
CCODECVT_H=config/locale/ieee_1003.1-2001/codecvt_specializations.h
CCODECVT_CC=config/locale/generic/codecvt_members.cc
CCOLLATE_CC=config/locale/generic/collate_members.cc
CCTYPE_CC=config/locale/generic/ctype_members.cc
CMESSAGES_H=config/locale/ieee_1003.1-2001/messages_members.h
CMESSAGES_CC=config/locale/ieee_1003.1-2001/messages_members.cc
CMONEY_CC=config/locale/generic/monetary_members.cc
CNUMERIC_CC=config/locale/generic/numeric_members.cc
CTIME_H=config/locale/generic/time_members.h
CTIME_CC=config/locale/generic/time_members.cc
CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
;;
*)
echo "$enable_clocale is an unknown locale package" 1>&2
exit 1
;;
esac
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_SUBST(CCODECVT_CC)
AC_SUBST(CCOLLATE_CC)
AC_SUBST(CCTYPE_CC)
AC_SUBST(CMESSAGES_CC)
AC_SUBST(CMONEY_CC)
AC_SUBST(CNUMERIC_CC)
AC_SUBST(CTIME_H)
AC_SUBST(CTIME_CC)
AC_SUBST(CLOCALE_CC)
AC_SUBST(CLOCALE_INTERNAL_H)
])
AC_DEFUN(GLIBCPP_ENABLE_CSTDIO, [
AC_MSG_CHECKING([for cstdio to use])
AC_ARG_ENABLE(cstdio,
[ --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=stdio
fi,
enable_cstdio=stdio)
enable_cstdio_flag=$enable_cstdio
case x${enable_cstdio_flag} in
xlibio)
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)
AC_CHECK_HEADER(libio.h, has_libio=yes, has_libio=no)
if test x$has_libio = x"yes"; then
case "$target" in
*-*-linux*)
AC_MSG_CHECKING([for glibc version >= 2.2])
AC_EGREP_CPP([ok], [
ok
], glibc_satisfactory=yes, glibc_satisfactory=no)
AC_MSG_RESULT($glibc_satisfactory)
;;
esac
glibc_satisfactory=no
if test x$glibc_satisfactory = x"yes"; then
need_libio=no
need_wlibio=no
else
need_libio=yes
if test x$enable_c_mbchar != xno; then
need_wlibio=yes
else
need_wlibio=no
fi
fi
else
need_libio=yes
if test x$enable_c_mbchar != xno; then
need_wlibio=yes
else
need_wlibio=no
fi
fi
;;
xstdio | x | xno | xnone | xyes)
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)
need_libio=no
need_wlibio=no
;;
*)
echo "$enable_cstdio is an unknown io package" 1>&2
exit 1
;;
esac
AC_SUBST(CSTDIO_H)
AC_SUBST(BASIC_FILE_H)
AC_SUBST(BASIC_FILE_CC)
CCODECVT_C=config/io/c_io_libio_codecvt.c
AC_SUBST(CCODECVT_C)
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
else
libio_la=
fi
AC_SUBST(libio_la)
])
AC_DEFUN(GLIBCPP_ENABLE_THREADS, [
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])
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)
])
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],
[:],
[ cat > conftest.$ac_ext << EOF
[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)
])
AC_DEFUN(GLIBCPP_ENABLE_LIBUNWIND_EXCEPTIONS, [
AC_MSG_CHECKING([for use of libunwind])
AC_ARG_ENABLE(libunwind-exceptions,
[ --enable-libunwind-exceptions force use of libunwind for exceptions],
use_libunwind_exceptions=$enableval,
use_libunwind_exceptions=no)
AC_MSG_RESULT($use_libunwind_exceptions)
if test x"$use_libunwind_exceptions" = xyes; then
LIBUNWIND_FLAG="-lunwind"
else
LIBUNWIND_FLAG=""
fi
AC_SUBST(LIBUNWIND_FLAG)
])
AC_DEFUN(GLIBCPP_ENABLE_C99, [ define([GLIBCPP_ENABLE_C99_DEFAULT], ifelse($1, yes, yes, no))
AC_ARG_ENABLE(c99,
changequote(<<, >>) <<--enable-c99 turns on 'ISO/IEC 9899:1999 support' [default=>>GLIBCPP_ENABLE_C99_DEFAULT],
changequote([, ]) [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)
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
ac_c99_math=yes;
AC_MSG_CHECKING([for ISO C99 support in <math.h>])
AC_TRY_COMPILE([ AC_TRY_COMPILE([ AC_TRY_COMPILE([ AC_TRY_COMPILE([ AC_TRY_COMPILE([ AC_TRY_COMPILE([ AC_TRY_COMPILE([ AC_TRY_COMPILE([ [isgreaterequal(0.0,0.0);],, [ac_c99_math=no])
AC_TRY_COMPILE([ AC_TRY_COMPILE([ AC_TRY_COMPILE([ [islessgreater(0.0,0.0);],, [ac_c99_math=no])
AC_TRY_COMPILE([ [isunordered(0.0,0.0);],, [ac_c99_math=no])
AC_MSG_RESULT($ac_c99_math)
ac_c99_stdio=yes;
AC_MSG_CHECKING([for ISO C99 support in <stdio.h>])
AC_TRY_COMPILE([ [snprintf("12", 0, "%i");],, [ac_c99_stdio=no])
AC_TRY_COMPILE([ void foo(char* fmt, ...)
{va_list args; va_start(args, fmt);
vfscanf(stderr, "%i", args);}],
[],, [ac_c99_stdio=no])
AC_TRY_COMPILE([ void foo(char* fmt, ...)
{va_list args; va_start(args, fmt);
vscanf("%i", args);}],
[],, [ac_c99_stdio=no])
AC_TRY_COMPILE([ void foo(char* fmt, ...)
{va_list args; va_start(args, fmt);
vsnprintf(fmt, 0, "%i", args);}],
[],, [ac_c99_stdio=no])
AC_TRY_COMPILE([ 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)
ac_c99_stdlib=yes;
AC_MSG_CHECKING([for lldiv_t declaration])
AC_CACHE_VAL(ac_c99_lldiv_t, [
AC_TRY_COMPILE([ [ 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([ [char* tmp; strtof("gnu", &tmp);],, [ac_c99_stdlib=no])
AC_TRY_COMPILE([ [char* tmp; strtold("gnu", &tmp);],, [ac_c99_stdlib=no])
AC_TRY_COMPILE([ AC_TRY_COMPILE([ AC_TRY_COMPILE([ AC_TRY_COMPILE([ if test x"$ac_c99_lldiv_t" = x"no"; then
ac_c99_stdlib=no;
fi;
AC_MSG_RESULT($ac_c99_stdlib)
ac_c99_wchar=yes;
AC_MSG_CHECKING([for additional ISO C99 support in <wchar.h>])
AC_TRY_COMPILE([ [wcstold(L"10.0", NULL);],, [ac_c99_wchar=no])
AC_TRY_COMPILE([ [wcstoll(L"10", NULL, 10);],, [ac_c99_wchar=no])
AC_TRY_COMPILE([ [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)
if test x"$enable_c99" = x"yes"; then
AC_DEFINE(_GLIBCPP_USE_C99)
fi
AC_LANG_RESTORE
])
AC_DEFUN(GLIBCPP_ENABLE_LONG_LONG, [ define([GLIBCPP_ENABLE_LONG_LONG_DEFAULT], ifelse($1, yes, yes, no))
AC_ARG_ENABLE(long-long,
changequote(<<, >>) <<--enable-long-long turns on 'long long' [default=>>GLIBCPP_ENABLE_LONG_LONG_DEFAULT],
changequote([, ]) [case "$enableval" in
yes) enable_long_long=yes ;;
no) enable_long_long=no ;;
*) AC_MSG_ERROR([Unknown argument to enable/disable long long]) ;;
esac],
enable_long_long=GLIBCPP_ENABLE_LONG_LONG_DEFAULT)dnl
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
AC_MSG_CHECKING([for enabled long long I/O support])
# iostreams require strtoll, strtoull to compile
# APPLE LOCAL. Use strtoq, strtouq instead of strtoll, strtoull
dnl APPLE LOCAL. Use strtoq isntead of strtoll
AC_TRY_COMPILE([#include <stdlib.h>],
[char* tmp; strtoq("gnu", &tmp, 10);],,[enable_long_long=no])
AC_TRY_COMPILE([#include <stdlib.h>],
[char* tmp; strtouq("gnu", &tmp, 10);],,[enable_long_long=no])
# Option parsed, now set things appropriately
if test x"$enable_long_long" = xyes; then
AC_DEFINE(_GLIBCPP_USE_LONG_LONG)
fi
AC_MSG_RESULT($enable_long_long)
AC_LANG_RESTORE
])
dnl
dnl Check for what type of C headers to use.
dnl
dnl GLIBCPP_ENABLE_CHEADERS
dnl --enable-cheaders= [does stuff].
dnl --disable-cheaders [does not do anything, really].
dnl + Usage: GLIBCPP_ENABLE_CHEADERS[(DEFAULT)]
dnl Where DEFAULT is either `c' or `c_std'.
AC_DEFUN(GLIBCPP_ENABLE_CHEADERS, [define([GLIBCPP_ENABLE_CHEADERS_DEFAULT], ifelse($1, c_std, c_std, c_std))AC_MSG_CHECKING([for c header strategy to use])
AC_ARG_ENABLE(cheaders,
changequote(<<, >>)<< --enable-cheaders=MODEL construct "C" header files for g++ [default=>>GLIBCPP_ENABLE_CHEADERS_DEFAULT],
changequote([, ])
[case "$enableval" in
c)
enable_cheaders=c
;;
c_std)
enable_cheaders=c_std
;;
*) AC_MSG_ERROR([Unknown argument to enable/disable "C" headers])
;;
esac],
enable_cheaders=GLIBCPP_ENABLE_CHEADERS_DEFAULT)
AC_MSG_RESULT($enable_cheaders)
case "$enable_cheaders" in
c_std)
C_INCLUDE_DIR='${glibcpp_srcdir}/include/c_std'
;;
c)
C_INCLUDE_DIR='${glibcpp_srcdir}/include/c'
;;
esac
AC_SUBST(C_INCLUDE_DIR)
AM_CONDITIONAL(GLIBCPP_C_HEADERS_C, test "$enable_cheaders" = c)
AM_CONDITIONAL(GLIBCPP_C_HEADERS_C_STD, test "$enable_cheaders" = c_std)
AM_CONDITIONAL(GLIBCPP_C_HEADERS_COMPATIBILITY, test "$c_compatibility" = yes)
])
AC_DEFUN(GLIBCPP_ENABLE_C_MBCHAR, [define([GLIBCPP_ENABLE_C_MBCHAR_DEFAULT], ifelse($1, yes, yes, no))AC_ARG_ENABLE(c-mbchar,
changequote(<<, >>)<< --enable-c-mbchar enable multibyte (wide) characters [default=>>GLIBCPP_ENABLE_C_MBCHAR_DEFAULT],
changequote([, ])[case "$enableval" in
yes) enable_c_mbchar=yes ;;
no) enable_c_mbchar=no ;;
*) AC_MSG_ERROR([Unknown argument to enable/disable c-mbchar]) ;;
esac],
enable_c_mbchar=GLIBCPP_ENABLE_C_MBCHAR_DEFAULT)])
AC_DEFUN(GLIBCPP_EXPORT_INCLUDES, [
GLIBCPP_INCLUDES="-I${glibcpp_builddir}/include/${target_alias} -I${glibcpp_builddir}/include"
if test x"$CANADIAN" = xyes; then
TOPLEVEL_INCLUDES='-I$(includedir)'
fi
LIBMATH_INCLUDES='-I$(top_srcdir)/libmath'
LIBSUPCXX_INCLUDES='-I$(top_srcdir)/libsupc++'
if test x"$need_libio" = xyes; then
LIBIO_INCLUDES='-I$(top_builddir)/libio -I$(top_srcdir)/libio'
AC_SUBST(LIBIO_INCLUDES)
fi
AC_SUBST(GLIBCPP_INCLUDES)
AC_SUBST(TOPLEVEL_INCLUDES)
AC_SUBST(LIBMATH_INCLUDES)
AC_SUBST(LIBSUPCXX_INCLUDES)
])
AC_DEFUN(GLIBCPP_EXPORT_FLAGS, [
OPTIMIZE_CXXFLAGS=
AC_SUBST(OPTIMIZE_CXXFLAGS)
WARN_FLAGS='-Wall -Wno-format -W -Wwrite-strings -Winline'
AC_SUBST(WARN_FLAGS)
])
AC_DEFUN(GLIBCPP_EXPORT_INSTALL_INFO, [
glibcpp_toolexecdir=no
glibcpp_toolexeclibdir=no
glibcpp_prefixdir=${prefix}
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)
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)AC_MSG_RESULT($version_specific_libs)
if test $version_specific_libs = no && test $gxx_include_dir = no; then
gxx_include_dir='$(prefix)'/include/c++/${gcc_version}
fi
if test $version_specific_libs = yes; then
if test x"$gxx_include_dir" = x"no"; then
gxx_include_dir='$(libdir)/gcc-lib/$(target_alias)/'${gcc_version}/include/c++
fi
glibcpp_toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
glibcpp_toolexeclibdir='$(toolexecdir)/'${gcc_version}'$(MULTISUBDIR)'
fi
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'
else
glibcpp_toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
glibcpp_toolexeclibdir='$(libdir)'
fi
glibcpp_toolexeclibdir=$glibcpp_toolexeclibdir/`$CC -print-multi-os-directory`
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)
])
AC_DEFUN(AC_REPLACE_MATHFUNCS,
[AC_CHECK_FUNCS([$1], , [LIBMATHOBJS="$LIBMATHOBJS ${ac_func}.lo"])])
AC_DEFUN(
GLIBCPP_CHECK_GNU_MAKE, [AC_CACHE_CHECK( for GNU make,_cv_gnu_make_command,
_cv_gnu_make_command='' ;
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 ;
break;
fi
done ;
) ;
if test "x$_cv_gnu_make_command" != "x" ; then
ifGNUmake='' ;
else
ifGNUmake=' fi
AC_SUBST(ifGNUmake)
])
AC_DEFUN(GLIBCPP_CHECK_SETRLIMIT_ancilliary, [
AC_TRY_COMPILE([ ], [ 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(unistd.h sys/time.h sys/resource.h,
[],
setrlimit_have_headers=no)
if test $setrlimit_have_headers = yes; then
GLIBCPP_CHECK_SETRLIMIT_ancilliary(DATA)
GLIBCPP_CHECK_SETRLIMIT_ancilliary(RSS)
GLIBCPP_CHECK_SETRLIMIT_ancilliary(VMEM)
GLIBCPP_CHECK_SETRLIMIT_ancilliary(AS)
AC_CACHE_VAL(ac_setrlimit, [
AC_TRY_COMPILE([ ],
[ 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)
])
AC_DEFUN(GLIBCPP_CONFIGURE_TESTSUITE, [
GLIBCPP_CHECK_SETRLIMIT
GLIBCPP_CHECK_STDLIB_DECL_AND_LINKAGE_3(setenv)
baseline_file="${glibcpp_srcdir}/config/abi/${abi_baseline_triplet}/baseline_symbols.txt"
AC_SUBST(baseline_file)
AM_CONDITIONAL(GLIBCPP_BUILD_ABI_CHECK,
test x"$build" = x"$host" && test -z "$with_cross_host")
])
sinclude(../libtool.m4)
ifelse(,,,[AC_SUBST(LIBTOOL)
AC_DEFUN([AM_PROG_LIBTOOL])
AC_DEFUN([AC_LIBTOOL_DLOPEN])
AC_DEFUN([AC_PROG_LD])
])
AC_DEFUN(AC_LC_MESSAGES, [
AC_CHECK_HEADER(locale.h, [
AC_CACHE_CHECK([for LC_MESSAGES], ac_cv_val_LC_MESSAGES,
[AC_TRY_LINK([ 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
])
])
AC_DEFUN(GLIBCPP_ENABLE_CONCEPT_CHECKS, [define([GLIBCPP_ENABLE_CONCEPT_CHECKS_DEFAULT], ifelse($1, yes, yes, no))AC_ARG_ENABLE(concept-checks,
changequote(<<, >>)<< --enable-concept-checks use Boost-derived template checks [default=>>GLIBCPP_ENABLE_CONCEPT_CHECKS_DEFAULT],
changequote([, ])[case "$enableval" in
yes) enable_concept_checks=yes ;;
no) enable_concept_checks=no ;;
*) AC_MSG_ERROR([Unknown argument to enable/disable concept checks]) ;;
esac],
enable_concept_checks=GLIBCPP_ENABLE_CONCEPT_CHECKS_DEFAULT)if test x"$enable_concept_checks" = xyes; then
AC_DEFINE(_GLIBCPP_CONCEPT_CHECKS)
fi
])
AC_DEFUN(GLIBCPP_ENABLE_SYMVERS, [define([GLIBCPP_ENABLE_SYMVERS_DEFAULT], ifelse($1, yes, yes, no))AC_ARG_ENABLE(symvers,
changequote(<<, >>)<< --enable-symvers=style enables symbol versioning of the shared library [default=>>GLIBCPP_ENABLE_SYMVERS_DEFAULT],
changequote([, ])[case "$enableval" in
yes) enable_symvers=yes ;;
no) enable_symvers=no ;;
gnu) enable_symvers=$enableval ;;
*) AC_MSG_ERROR([Unknown argument to enable/disable symvers]) ;;
esac],
enable_symvers=GLIBCPP_ENABLE_SYMVERS_DEFAULT)
if test x$enable_shared = xno ||
test "x$LD" = x ||
test x$glibcpp_gnu_ld_version = x; then
enable_symvers=no
fi
if test $enable_symvers != no; then
AC_MSG_CHECKING([for shared libgcc])
ac_save_CFLAGS="$CFLAGS"
CFLAGS=' -lgcc_s'
AC_TRY_LINK(, [return 0], glibcpp_shared_libgcc=yes, glibcpp_shared_libgcc=no)
CFLAGS="$ac_save_CFLAGS"
AC_MSG_RESULT($glibcpp_shared_libgcc)
fi
glibcpp_min_gnu_ld_version=21200
if test $enable_symvers = yes ; then
if test $with_gnu_ld = yes &&
test $glibcpp_shared_libgcc = yes ;
then
if test $glibcpp_gnu_ld_version -ge $glibcpp_min_gnu_ld_version ; then
enable_symvers=gnu
else
ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS"
CFLAGS='-shared -Wl,--version-script,conftest.map'
enable_symvers=no
changequote(,)
echo 'FOO { global: f[a-z]o; local: *; };' > conftest.map
changequote([,])
AC_TRY_LINK([int foo;],, enable_symvers=gnu)
if test "$ac_test_CFLAGS" = set; then
CFLAGS="$ac_save_CFLAGS"
else
CFLAGS=''
fi
rm -f conftest.map
fi
else
enable_symvers=no
fi
fi
case $enable_symvers in
no)
SYMVER_MAP=config/linker-map.dummy
;;
gnu)
SYMVER_MAP=config/linker-map.gnu
AC_DEFINE(_GLIBCPP_SYMVER)
;;
esac
AC_SUBST(SYMVER_MAP)
AM_CONDITIONAL(GLIBCPP_BUILD_VERSIONED_SHLIB, test $enable_symvers != no)
AC_MSG_CHECKING([versioning on shared library symbols])
AC_MSG_RESULT($enable_symvers)
])
undefine([AC_ISC_POSIX])
AC_DEFUN([AC_ISC_POSIX],
[
AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"])
]
)
AC_DEFUN([AM_MAINTAINER_MODE],
[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
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)]
)
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])
AC_DEFUN([AM_INIT_AUTOMAKE],
[AC_REQUIRE([AC_PROG_INSTALL])
PACKAGE=[$1]
AC_SUBST(PACKAGE)
VERSION=[$2]
AC_SUBST(VERSION)
if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
fi
ifelse([$3],,
AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package]))
AC_REQUIRE([AM_SANITY_CHECK])
AC_REQUIRE([AC_ARG_PROGRAM])
missing_dir=`cd $ac_aux_dir && pwd`
AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
AC_REQUIRE([AC_PROG_MAKE_SET])])
AC_DEFUN([AM_SANITY_CHECK],
[AC_MSG_CHECKING([whether build environment is sane])
sleep 1
echo timestamp > conftestfile
if (
set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null`
if test "[$]*" = "X"; then
set X `ls -t $srcdir/configure conftestfile`
fi
if test "[$]*" != "X $srcdir/configure conftestfile" \
&& test "[$]*" != "X conftestfile $srcdir/configure"; then
AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
alias in your environment])
fi
test "[$]2" = conftestfile
)
then
:
else
AC_MSG_ERROR([newly created file is older than distributed files!
Check your system clock])
fi
rm -f conftest*
AC_MSG_RESULT(yes)])
AC_DEFUN([AM_MISSING_PROG],
[AC_MSG_CHECKING(for working $2)
if ($2 --version) < /dev/null > /dev/null 2>&1; then
$1=$2
AC_MSG_RESULT(found)
else
$1="$3/missing $2"
AC_MSG_RESULT(missing)
fi
AC_SUBST($1)])
AC_DEFUN([AM_CONFIG_HEADER],
[AC_PREREQ([2.12])
AC_CONFIG_HEADER([$1])
AC_OUTPUT_COMMANDS(changequote(<<,>>)ifelse(patsubst(<<$1>>, <<[^ ]>>, <<>>), <<>>,
<<test -z "<<$>>CONFIG_HEADERS" || echo timestamp > patsubst(<<$1>>, <<^\([^:]*/\)?.*>>, <<\1>>)stamp-h<<>><<am_indx=1
for am_file in <<$1>>; do
case " <<$>>CONFIG_HEADERS " in
*" <<$>>am_file "*<<)>>
echo timestamp > `echo <<$>>am_file | sed -e 's%:.*%%' -e 's%[^/]*$%%'`stamp-h$am_indx
;;
esac
am_indx=`expr "<<$>>am_indx" + 1`
done<<>>changequote([,]))])