X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=libstdc%2B%2B-v3%2Facinclude.m4;h=f18b7d90b53120d258206f2ee9728c004f6a4b22;hb=182b909943671fec4328395b5c131e3464f83082;hp=c9be65e0ba7e400aaf9002823df183d2ff455e45;hpb=71558babb8b846dc5d8e787c36b1ac632d463ef6;p=pf3gnuchains%2Fgcc-fork.git diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4 index c9be65e0ba7..f18b7d90b53 100644 --- a/libstdc++-v3/acinclude.m4 +++ b/libstdc++-v3/acinclude.m4 @@ -573,12 +573,15 @@ AC_DEFUN([GLIBCXX_CHECK_LFS], [ AC_TRY_LINK( [#include #include + #include ], [FILE* fp; fopen64("t", "w"); fseeko64(fp, 0, SEEK_CUR); ftello64(fp); - lseek64(1, 0, SEEK_CUR);], + lseek64(1, 0, SEEK_CUR); + struct stat64 buf; + fstat64(1, &buf);], [glibcxx_cv_LFS=yes], [glibcxx_cv_LFS=no]) ]) @@ -591,6 +594,25 @@ AC_DEFUN([GLIBCXX_CHECK_LFS], [ dnl +dnl Check for whether a fully dynamic basic_string implementation should +dnl be turned on, that does not put empty objects in per-process static +dnl memory (mostly useful together with shared memory allocators, see PR +dnl libstdc++/16612 for details). +dnl +dnl --enable-fully-dynamic-string defines _GLIBCXX_FULLY_DYNAMIC_STRING +dnl --disable-fully-dynamic-string leaves _GLIBCXX_FULLY_DYNAMIC_STRING undefined +dnl + Usage: GLIBCXX_ENABLE_FULLY_DYNAMIC_STRING[(DEFAULT)] +dnl Where DEFAULT is either `yes' or `no'. +dnl +AC_DEFUN([GLIBCXX_ENABLE_FULLY_DYNAMIC_STRING], [ + GLIBCXX_ENABLE(fully-dynamic-string,$1,,[do not put empty strings in per-process static memory]) + if test $enable_fully_dynamic_string = yes; then + AC_DEFINE(_GLIBCXX_FULLY_DYNAMIC_STRING) + fi +]) + + +dnl dnl Does any necessary configuration of the testsuite directory. Generates dnl the testsuite_hooks.h header. dnl @@ -598,6 +620,8 @@ dnl GLIBCXX_ENABLE_SYMVERS and GLIBCXX_IS_NATIVE must be done before this. dnl dnl Sets: dnl enable_abi_check / GLIBCXX_TEST_ABI +dnl GLIBCXX_TEST_WCHAR_T +dnl GLIBCXX_TEST_THREAD dnl Substs: dnl baseline_dir dnl @@ -630,6 +654,7 @@ AC_DEFUN([GLIBCXX_CONFIGURE_TESTSUITE], [ AC_SUBST(baseline_dir) GLIBCXX_CONDITIONAL(GLIBCXX_TEST_WCHAR_T, test $enable_wchar_t = yes) + GLIBCXX_CONDITIONAL(GLIBCXX_TEST_THREAD, test $enable_thread = yes) GLIBCXX_CONDITIONAL(GLIBCXX_TEST_ABI, test $enable_abi_check = yes) ]) @@ -846,6 +871,121 @@ AC_DEFUN([GLIBCXX_ENABLE_C99], [ AC_DEFINE(_GLIBCXX_USE_C99_MATH) fi + # Check for the existence of complex functions. + # This is necessary even though libstdc++ uses the builtin versions + # of these functions, because if the builtin cannot be used, a reference + # to the library function is emitted. + AC_CHECK_HEADERS(complex.h, ac_has_complex_h=yes, ac_has_complex_h=no) + ac_c99_complex=no; + if test x"$ac_has_complex_h" = x"yes"; then + ac_c99_complex=yes; + AC_MSG_CHECKING([for ISO C99 support in ]) + AC_TRY_COMPILE([#include ], + [typedef __complex__ float _ComplexT; _ComplexT tmp; + cabsf(tmp);],, [ac_c99_complex=no]) + AC_TRY_COMPILE([#include ], + [typedef __complex__ double _ComplexT; _ComplexT tmp; + cabs(tmp);],, [ac_c99_complex=no]) + AC_TRY_COMPILE([#include ], + [typedef __complex__ long double _ComplexT; _ComplexT tmp; + cabsl(tmp);],, [ac_c99_complex=no]) + AC_TRY_COMPILE([#include ], + [typedef __complex__ float _ComplexT; _ComplexT tmp; + cargf(tmp);],, [ac_c99_complex=no]) + AC_TRY_COMPILE([#include ], + [typedef __complex__ double _ComplexT; _ComplexT tmp; + carg(tmp);],, [ac_c99_complex=no]) + AC_TRY_COMPILE([#include ], + [typedef __complex__ long double _ComplexT; _ComplexT tmp; + cargl(tmp);],, [ac_c99_complex=no]) + AC_TRY_COMPILE([#include ], + [typedef __complex__ float _ComplexT; _ComplexT tmp; + ccosf(tmp);],, [ac_c99_complex=no]) + AC_TRY_COMPILE([#include ], + [typedef __complex__ double _ComplexT; _ComplexT tmp; + ccos(tmp);],, [ac_c99_complex=no]) + AC_TRY_COMPILE([#include ], + [typedef __complex__ long double _ComplexT; _ComplexT tmp; + ccosl(tmp);],, [ac_c99_complex=no]) + AC_TRY_COMPILE([#include ], + [typedef __complex__ float _ComplexT; _ComplexT tmp; + ccoshf(tmp);],, [ac_c99_complex=no]) + AC_TRY_COMPILE([#include ], + [typedef __complex__ double _ComplexT; _ComplexT tmp; + ccosh(tmp);],, [ac_c99_complex=no]) + AC_TRY_COMPILE([#include ], + [typedef __complex__ long double _ComplexT; _ComplexT tmp; + ccoshl(tmp);],, [ac_c99_complex=no]) + AC_TRY_COMPILE([#include ], + [typedef __complex__ float _ComplexT; _ComplexT tmp; + cexpf(tmp);],, [ac_c99_complex=no]) + AC_TRY_COMPILE([#include ], + [typedef __complex__ double _ComplexT; _ComplexT tmp; + cexp(tmp);],, [ac_c99_complex=no]) + AC_TRY_COMPILE([#include ], + [typedef __complex__ long double _ComplexT; _ComplexT tmp; + cexpl(tmp);],, [ac_c99_complex=no]) + AC_TRY_COMPILE([#include ], + [typedef __complex__ float _ComplexT; _ComplexT tmp; + csinf(tmp);],, [ac_c99_complex=no]) + AC_TRY_COMPILE([#include ], + [typedef __complex__ double _ComplexT; _ComplexT tmp; + csin(tmp);],, [ac_c99_complex=no]) + AC_TRY_COMPILE([#include ], + [typedef __complex__ long double _ComplexT; _ComplexT tmp; + csinl(tmp);],, [ac_c99_complex=no]) + AC_TRY_COMPILE([#include ], + [typedef __complex__ float _ComplexT; _ComplexT tmp; + csinhf(tmp);],, [ac_c99_complex=no]) + AC_TRY_COMPILE([#include ], + [typedef __complex__ double _ComplexT; _ComplexT tmp; + csinh(tmp);],, [ac_c99_complex=no]) + AC_TRY_COMPILE([#include ], + [typedef __complex__ long double _ComplexT; _ComplexT tmp; + csinhl(tmp);],, [ac_c99_complex=no]) + AC_TRY_COMPILE([#include ], + [typedef __complex__ float _ComplexT; _ComplexT tmp; + csqrtf(tmp);],, [ac_c99_complex=no]) + AC_TRY_COMPILE([#include ], + [typedef __complex__ double _ComplexT; _ComplexT tmp; + csqrt(tmp);],, [ac_c99_complex=no]) + AC_TRY_COMPILE([#include ], + [typedef __complex__ long double _ComplexT; _ComplexT tmp; + csqrtl(tmp);],, [ac_c99_complex=no]) + AC_TRY_COMPILE([#include ], + [typedef __complex__ float _ComplexT; _ComplexT tmp; + ctanf(tmp);],, [ac_c99_complex=no]) + AC_TRY_COMPILE([#include ], + [typedef __complex__ double _ComplexT; _ComplexT tmp; + ctan(tmp);],, [ac_c99_complex=no]) + AC_TRY_COMPILE([#include ], + [typedef __complex__ long double _ComplexT; _ComplexT tmp; + ctanl(tmp);],, [ac_c99_complex=no]) + AC_TRY_COMPILE([#include ], + [typedef __complex__ float _ComplexT; _ComplexT tmp; + ctanhf(tmp);],, [ac_c99_complex=no]) + AC_TRY_COMPILE([#include ], + [typedef __complex__ double _ComplexT; _ComplexT tmp; + ctanh(tmp);],, [ac_c99_complex=no]) + AC_TRY_COMPILE([#include ], + [typedef __complex__ long double _ComplexT; _ComplexT tmp; + ctanhl(tmp);],, [ac_c99_complex=no]) + AC_TRY_COMPILE([#include ], + [typedef __complex__ float _ComplexT; _ComplexT tmp; + cpowf(tmp, tmp);],, [ac_c99_complex=no]) + AC_TRY_COMPILE([#include ], + [typedef __complex__ double _ComplexT; _ComplexT tmp; + cpow(tmp, tmp);],, [ac_c99_complex=no]) + AC_TRY_COMPILE([#include ], + [typedef __complex__ long double _ComplexT; _ComplexT tmp; + cpowl(tmp, tmp);],, [ac_c99_complex=no]) + fi + AC_MSG_RESULT($ac_c99_complex) + + if test x"$ac_c99_complex" = x"yes"; then + AC_DEFINE(_GLIBCXX_USE_C99_COMPLEX_MATH) + fi + # Check for the existence in of vscanf, et. al. ac_c99_stdio=yes; AC_MSG_CHECKING([for ISO C99 support in ]) @@ -915,6 +1055,7 @@ AC_DEFUN([GLIBCXX_ENABLE_C99], [ AC_MSG_CHECKING([for enabled ISO C99 support]) if test x"$ac_c99_math" = x"no" || + test x"$ac_c99_complex" = x"no" || test x"$ac_c99_stdio" = x"no" || test x"$ac_c99_stdlib" = x"no" || test x"$ac_c99_wchar" = x"no"; then @@ -922,10 +1063,6 @@ AC_DEFUN([GLIBCXX_ENABLE_C99], [ fi; AC_MSG_RESULT($enable_c99) - if test x"$ac_99_math" = x"yes"; then - AC_DEFINE(_GLIBCXX_USE_C99_MATH) - fi - # Option parsed, now set things appropriately if test x"$enable_c99" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_C99) @@ -1023,6 +1160,9 @@ AC_DEFUN([GLIBCXX_ENABLE_CLOCALE], [ # ... at some point put __strxfrm_l tests in as well. ;; + darwin* | freebsd*) + enable_clocale_flag=darwin + ;; *) enable_clocale_flag=generic ;; @@ -1045,7 +1185,6 @@ AC_DEFUN([GLIBCXX_ENABLE_CLOCALE], [ 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 @@ -1057,6 +1196,23 @@ AC_DEFUN([GLIBCXX_ENABLE_CLOCALE], [ CTIME_CC=config/locale/generic/time_members.cc CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h ;; + darwin) + AC_MSG_RESULT(darwin or freebsd) + + CLOCALE_H=config/locale/generic/c_locale.h + CLOCALE_CC=config/locale/generic/c_locale.cc + CCODECVT_CC=config/locale/generic/codecvt_members.cc + CCOLLATE_CC=config/locale/generic/collate_members.cc + CCTYPE_CC=config/locale/darwin/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 + ;; + gnu) AC_MSG_RESULT(gnu) @@ -1080,7 +1236,6 @@ AC_DEFUN([GLIBCXX_ENABLE_CLOCALE], [ 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 @@ -1097,7 +1252,6 @@ AC_DEFUN([GLIBCXX_ENABLE_CLOCALE], [ 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 @@ -1127,7 +1281,6 @@ AC_DEFUN([GLIBCXX_ENABLE_CLOCALE], [ AC_SUBST(USE_NLS) AC_SUBST(CLOCALE_H) - AC_SUBST(CCODECVT_H) AC_SUBST(CMESSAGES_H) AC_SUBST(CCODECVT_CC) AC_SUBST(CCOLLATE_CC) @@ -1383,7 +1536,14 @@ AC_DEFUN([GLIBCXX_ENABLE_HOSTED], [ AC_ARG_ENABLE([hosted-libstdcxx], AC_HELP_STRING([--disable-hosted-libstdcxx], [only build freestanding C++ runtime support]),, - [enable_hosted_libstdcxx=yes]) + [case "$host" in + arm*-*-symbianelf*) + enable_hosted_libstdcxx=no + ;; + *) + enable_hosted_libstdcxx=yes + ;; + esac]) if test "$enable_hosted_libstdcxx" = no; then AC_MSG_NOTICE([Only freestanding libraries will be built]) is_hosted=no @@ -1684,6 +1844,15 @@ AC_DEFUN([GLIBCXX_ENABLE_THREADS], [ fi glibcxx_thread_h=gthr-$target_thread_file.h + + dnl Check for __GTHREADS define. + gthread_file=${toplevel_srcdir}/gcc/${glibcxx_thread_h} + if grep __GTHREADS $gthread_file >/dev/null 2>&1 ; then + enable_thread=yes + else + enable_thread=no + fi + AC_SUBST(glibcxx_thread_h) ])