-
dnl
dnl GLIBCXX_CONDITIONAL (NAME, SHELL-TEST)
dnl
# Keep these sync'd with the list in Makefile.am. The first provides an
# expandable list at autoconf time; the second provides an expandable list
# (i.e., shell variable) at configure time.
- m4_define([glibcxx_SUBDIRS],[include libsupc++ src doc po testsuite])
+ m4_define([glibcxx_SUBDIRS],[include libsupc++ python src doc po testsuite])
SUBDIRS='glibcxx_SUBDIRS'
# These need to be absolute paths, yet at the same time need to
# set from the top level.
AC_ARG_WITH([target-subdir],
AC_HELP_STRING([--with-target-subdir=SUBDIR],
- [configuring in a subdirectory]))
+ [configuring in a subdirectory]))
AC_ARG_WITH([cross-host],
AC_HELP_STRING([--with-cross-host=HOST],
- [configuring with a cross compiler]))
+ [configuring with a cross compiler]))
AC_ARG_WITH([newlib],
AC_HELP_STRING([--with-newlib],
- [assume newlib as a system C library]))
-
- # We're almost certainly being configured before anything else which uses
- # C++, so all of our AC_PROG_* discoveries will be cached. It's vital that
- # we not cache the value of CXX that we "discover" here, because it's set
- # to something unique for us and libjava. Other target libraries need to
- # find CXX for themselves. We yank the rug out from under the normal AC_*
- # process by sneakily renaming the cache variable. This also lets us debug
- # the value of "our" CXX in postmortems.
- #
- # We must also force CXX to /not/ be a precious variable, otherwise the
- # wrong (non-multilib-adjusted) value will be used in multilibs. This
- # little trick also affects CPPFLAGS, CXXFLAGS, and LDFLAGS. And as a side
- # effect, CXXFLAGS is no longer automagically subst'd, so we have to do
- # that ourselves. Un-preciousing AC_PROG_CC also affects CC and CFLAGS.
- #
- # -fno-builtin must be present here so that a non-conflicting form of
- # std::exit can be guessed by AC_PROG_CXX, and used in later tests.
-
- m4_define([ac_cv_prog_CXX],[glibcxx_cv_prog_CXX])
- m4_rename([_AC_ARG_VAR_PRECIOUS],[glibcxx_PRECIOUS])
- m4_define([_AC_ARG_VAR_PRECIOUS],[])
- save_CXXFLAGS="$CXXFLAGS"
- CXXFLAGS="$CXXFLAGS -fno-builtin"
- AC_PROG_CC
- AC_PROG_CXX
- CXXFLAGS="$save_CXXFLAGS"
- m4_rename([glibcxx_PRECIOUS],[_AC_ARG_VAR_PRECIOUS])
- AC_SUBST(CFLAGS)
- AC_SUBST(CXXFLAGS)
+ [assume newlib as a system C library]))
# Will set LN_S to either 'ln -s', 'ln', or 'cp -p' (if linking isn't
# available). Uncomment the next line to force a particular method.
## (Right now, this only matters for enable_wchar_t, but nothing prevents
## other macros from doing the same. This should be automated.) -pme
- # Check for uClibc since Linux platforms use different configuration
+ # Check for C library flavor since Linux platforms use different configuration
# directories depending on the C library in use.
AC_EGREP_CPP([_using_uclibc], [
#include <stdio.h>
#endif
], uclibc=yes, uclibc=no)
+ AC_EGREP_CPP([_using_bionic], [
+ #include <stdio.h>
+ #if __BIONIC__
+ _using_bionic
+ #endif
+ ], bionic=yes, bionic=no)
+
# Find platform-specific directories containing configuration info.
# Also possibly modify flags used elsewhere, as needed by the platform.
GLIBCXX_CHECK_HOST
if $LD --version 2>/dev/null | grep 'GNU gold' >/dev/null 2>&1; then
glibcxx_ld_is_gold=yes
fi
- ldver=`$LD --version 2>/dev/null | head -1 | \
- sed -e 's/GNU \(go\)\{0,1\}ld \(version \)\{0,1\}\(([^)]*) \)\{0,1\}\([0-9.][0-9.]*\).*/\4/'`
+ ldver=`$LD --version 2>/dev/null |
+ sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
changequote([,])
glibcxx_gnu_ld_version=`echo $ldver | \
- $AWK -F. '{ if (NF<3) [$]3=0; print ([$]1*100+[$]2)*100+[$]3 }'`
+ $AWK -F. '{ if (NF<3) [$]3=0; print ([$]1*100+[$]2)*100+[$]3 }'`
AC_MSG_RESULT($glibcxx_gnu_ld_version)
fi
fi
else
glibcxx_gcsections_min_ld=21602
- if test x"$with_gnu_ld" = x"yes" &&
+ if test x"$with_gnu_ld" = x"yes" &&
test $glibcxx_gnu_ld_version -gt $glibcxx_gcsections_min_ld ; then
glibcxx_have_gc_sections=yes
fi
dnl Used only in testsuite_hooks.h. Called from GLIBCXX_CONFIGURE_TESTSUITE.
dnl
dnl Defines:
-dnl _GLIBCXX_RES_LIMITS if we can set artificial resource limits
+dnl _GLIBCXX_RES_LIMITS if we can set artificial resource limits
dnl various HAVE_LIMIT_* for individual limit names
dnl
AC_DEFUN([GLIBCXX_CHECK_SETRLIMIT_ancilliary], [
[ int f = RLIMIT_$1 ; ],
[glibcxx_mresult=1], [glibcxx_mresult=0])
AC_DEFINE_UNQUOTED(HAVE_LIMIT_$1, $glibcxx_mresult,
- [Only used in build directory testsuite_hooks.h.])
+ [Only used in build directory testsuite_hooks.h.])
if test $glibcxx_mresult = 1 ; then res=yes ; else res=no ; fi
AC_MSG_RESULT($res)
])
AC_DEFUN([GLIBCXX_CHECK_SETRLIMIT], [
setrlimit_have_headers=yes
AC_CHECK_HEADERS(unistd.h sys/time.h sys/resource.h,
- [],
- [setrlimit_have_headers=no])
+ [],
+ [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
# Check for rlimit, setrlimit.
AC_CACHE_VAL(glibcxx_cv_setrlimit, [
AC_TRY_COMPILE(
- [#include <unistd.h>
- #include <sys/time.h>
- #include <sys/resource.h>
- ],
- [struct rlimit r;
- setrlimit(0, &r);],
- [glibcxx_cv_setrlimit=yes], [glibcxx_cv_setrlimit=no])
+ [#include <unistd.h>
+ #include <sys/time.h>
+ #include <sys/resource.h>
+ ],
+ [struct rlimit r;
+ setrlimit(0, &r);],
+ [glibcxx_cv_setrlimit=yes], [glibcxx_cv_setrlimit=no])
])
fi
if test $setrlimit_have_headers = yes && test $glibcxx_cv_setrlimit = yes; then
ac_res_limits=yes
AC_DEFINE(_GLIBCXX_RES_LIMITS, 1,
- [Define if using setrlimit to set resource limits during
- "make check"])
+ [Define if using setrlimit to set resource limits during
+ "make check"])
else
ac_res_limits=no
fi
])
res=no
if test $glibcxx_cv_S_ISREG = yes; then
- AC_DEFINE(HAVE_S_ISREG, 1,
- [Define if S_IFREG is available in <sys/stat.h>.])
+ AC_DEFINE(HAVE_S_ISREG, 1,
+ [Define if S_IFREG is available in <sys/stat.h>.])
res=S_ISREG
elif test $glibcxx_cv_S_IFREG = yes; then
AC_DEFINE(HAVE_S_IFREG, 1,
- [Define if S_IFREG is available in <sys/stat.h>.])
+ [Define if S_IFREG is available in <sys/stat.h>.])
res=S_IFREG
fi
AC_MSG_RESULT($res)
AC_MSG_CHECKING([for int64_t as long])
AC_CACHE_VAL(glibcxx_cv_int64_t_long, [
AC_TRY_COMPILE(
- [#include <stdint.h>
- template<typename, typename> struct same { enum { value = -1 }; };
- template<typename Tp> struct same<Tp, Tp> { enum { value = 1 }; };
- int array[same<int64_t, long>::value];], [],
+ [#include <stdint.h>
+ template<typename, typename> struct same { enum { value = -1 }; };
+ template<typename Tp> struct same<Tp, Tp> { enum { value = 1 }; };
+ int array[same<int64_t, long>::value];], [],
[glibcxx_cv_int64_t_long=yes], [glibcxx_cv_int64_t_long=no])
])
AC_MSG_CHECKING([for int64_t as long long])
AC_CACHE_VAL(glibcxx_cv_int64_t_long_long, [
AC_TRY_COMPILE(
- [#include <stdint.h>
- template<typename, typename> struct same { enum { value = -1 }; };
- template<typename Tp> struct same<Tp, Tp> { enum { value = 1 }; };
- int array[same<int64_t, long long>::value];], [],
+ [#include <stdint.h>
+ template<typename, typename> struct same { enum { value = -1 }; };
+ template<typename Tp> struct same<Tp, Tp> { enum { value = 1 }; };
+ int array[same<int64_t, long long>::value];], [],
[glibcxx_cv_int64_t_long_long=yes], [glibcxx_cv_int64_t_long_long=no])
])
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
ac_save_CXXFLAGS="$CXXFLAGS"
- CXXFLAGS="$CXXFLAGS -fno-exceptions"
+ CXXFLAGS="$CXXFLAGS -fno-exceptions"
AC_MSG_CHECKING([for LFS support])
AC_CACHE_VAL(glibcxx_cv_LFS, [
GCC_TRY_COMPILE_OR_LINK(
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, 1,
- [Define if a fully dynamic basic_string is wanted.])
+ [Define if a fully dynamic basic_string is wanted.])
fi
])
dnl GLIBCXX_ENABLE_SYMVERS and GLIBCXX_IS_NATIVE must be done before this.
dnl
dnl Sets:
-dnl enable_abi_check
+dnl enable_abi_check
dnl GLIBCXX_TEST_WCHAR_T
dnl GLIBCXX_TEST_THREAD
dnl Substs:
test $enable_symvers != no; then
case "$host" in
*-*-cygwin*)
- enable_abi_check=no ;;
+ enable_abi_check=no ;;
*)
- enable_abi_check=yes ;;
+ enable_abi_check=yes ;;
esac
else
# Only build this as native, since automake does not understand
# CXX_FOR_BUILD.
enable_abi_check=no
fi
-
+
# Export file names for ABI checking.
baseline_dir="$glibcxx_srcdir/config/abi/post/${abi_baseline_pair}"
AC_SUBST(baseline_dir)
])
+dnl
+dnl Does any necessary configuration of the documentation directory.
+dnl
+dnl XSLTPROC must be set before this
+dnl
+dnl Sets:
+dnl glibcxx_stylesheets
+dnl Substs:
+dnl XSL_STYLE_DIR
+dnl
+AC_DEFUN([GLIBCXX_CONFIGURE_DOCBOOK], [
+
+AC_MSG_CHECKING([for stylesheets used in generation of documentation])
+glibcxx_stylesheets=no
+if test x${XSLTPROC} = xyes && echo '<title/>' | xsltproc --noout --nonet --xinclude http://docbook.sourceforge.net/release/xsl-ns/current/xhtml-1_1/docbook.xsl - 2>/dev/null; then
+ glibcxx_stylesheets=yes
+fi
+AC_MSG_RESULT($glibcxx_stylesheets)
+
+AC_MSG_CHECKING([for local stylesheet directory])
+glibcxx_local_stylesheets=no
+if test x"$glibcxx_stylesheets" = x"yes"; then
+ if test -d /usr/share/sgml/docbook/xsl-ns-stylesheets; then
+ glibcxx_local_stylesheets=yes
+ XSL_STYLE_DIR=/usr/share/sgml/docbook/xsl-ns-stylesheets
+ fi
+ if test -d /usr/share/xml/docbook/stylesheet/docbook-xsl-ns; then
+ glibcxx_local_stylesheets=yes
+ XSL_STYLE_DIR=/usr/share/xml/docbook/stylesheet/docbook-xsl-ns
+ fi
+fi
+AC_MSG_RESULT($glibcxx_local_stylesheets)
+
+if test x"$glibcxx_local_stylesheets" = x"yes"; then
+ AC_SUBST(XSL_STYLE_DIR)
+ AC_MSG_NOTICE($XSL_STYLE_DIR)
+else
+ glibcxx_stylesheets=no
+fi
+])
+
+
dnl
dnl Set up *_INCLUDES variables for all sundry Makefile.am's.
dnl
AC_MSG_CHECKING([for gxx-include-dir])
AC_ARG_WITH([gxx-include-dir],
AC_HELP_STRING([--with-gxx-include-dir=DIR],
- [installation directory for include files]),
+ [installation directory for include files]),
[case "$withval" in
yes) AC_MSG_ERROR([Missing directory for --with-gxx-include-dir]) ;;
no) gxx_include_dir=no ;;
AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
AC_ARG_ENABLE([version-specific-runtime-libs],
AC_HELP_STRING([--enable-version-specific-runtime-libs],
- [Specify that runtime libraries should be installed in a compiler-specific directory]),
+ [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 ;;
# Default case for install directory for include files.
if test $version_specific_libs = no && test $gxx_include_dir = no; then
gxx_include_dir='include/c++/${gcc_version}'
- if test -n "$with_cross_host" &&
- test x"$with_cross_host" != x"no"; then
+ if test -n "$with_cross_host" &&
+ test x"$with_cross_host" != x"no"; then
gxx_include_dir='${prefix}/${target_alias}/'"$gxx_include_dir"
else
gxx_include_dir='${prefix}/'"$gxx_include_dir"
dnl
m4_define([GLIBCXX_ENABLE],[dnl
m4_define([_g_switch],[--enable-$1])dnl
-m4_define([_g_help],[AC_HELP_STRING(_g_switch$3,[$4 @<:@default=$2@:>@])])dnl
- AC_ARG_ENABLE($1,_g_help,
+m4_define([_g_help],[AC_HELP_STRING([_g_switch$3],[$4 @<:@default=$2@:>@])])dnl
+ AC_ARG_ENABLE([$1],m4_dquote(_g_help),
m4_bmatch([$5],
[^permit ],
[[
case "$enableval" in
m4_bpatsubst([$5],[permit ])) ;;
*) AC_MSG_ERROR(Unknown argument to enable/disable $1) ;;
- dnl Idea for future: generate a URL pointing to
- dnl "onlinedocs/configopts.html#whatever"
+ dnl Idea for future: generate a URL pointing to
+ dnl "onlinedocs/configopts.html#whatever"
esac
]],
[^$],
AC_MSG_RESULT($glibcxx_cv_c99_math)
if test x"$glibcxx_cv_c99_math" = x"yes"; then
AC_DEFINE(_GLIBCXX_USE_C99_MATH, 1,
- [Define if C99 functions or macros in <math.h> should be imported
- in <cmath> in namespace std.])
+ [Define if C99 functions or macros in <math.h> should be imported
+ in <cmath> in namespace std.])
fi
# Check for the existence of <complex.h> complex math functions.
AC_MSG_RESULT($glibcxx_cv_c99_complex)
if test x"$glibcxx_cv_c99_complex" = x"yes"; then
AC_DEFINE(_GLIBCXX_USE_C99_COMPLEX, 1,
- [Define if C99 functions in <complex.h> should be used in
- <complex>. Using compiler builtins for these functions requires
- corresponding C99 library functions to be present.])
+ [Define if C99 functions in <complex.h> should be used in
+ <complex>. Using compiler builtins for these functions requires
+ corresponding C99 library functions to be present.])
fi
# Check for the existence in <stdio.h> of vscanf, et. al.
void foo(char* fmt, ...)
{
va_list args; va_start(args, fmt);
- vfscanf(stderr, "%i", args);
+ vfscanf(stderr, "%i", args);
vscanf("%i", args);
vsnprintf(fmt, 0, "%i", args);
vsscanf(fmt, "%i", args);
glibcxx_cv_c99_wchar=no;
if test x"$ac_has_wchar_h" = xyes &&
test x"$ac_has_wctype_h" = xyes; then
- AC_MSG_CHECKING([for ISO C99 support in <wchar.h>])
+ AC_MSG_CHECKING([for ISO C99 support in <wchar.h>])
AC_TRY_COMPILE([#include <wchar.h>
- namespace test
- {
+ namespace test
+ {
using ::wcstold;
using ::wcstoll;
using ::wcstoull;
# NB: only put functions here, instead of immediately above, if
# absolutely necessary.
AC_TRY_COMPILE([#include <wchar.h>
- namespace test { using ::vfwscanf; } ], [],
+ namespace test { using ::vfwscanf; } ], [],
[AC_DEFINE(HAVE_VFWSCANF,1,
[Defined if vfwscanf exists.])],[])
AC_TRY_COMPILE([#include <wchar.h>
- namespace test { using ::vswscanf; } ], [],
+ namespace test { using ::vswscanf; } ], [],
[AC_DEFINE(HAVE_VSWSCANF,1,
[Defined if vswscanf exists.])],[])
AC_TRY_COMPILE([#include <wchar.h>
- namespace test { using ::vwscanf; } ], [],
+ namespace test { using ::vwscanf; } ], [],
[AC_DEFINE(HAVE_VWSCANF,1,[Defined if vwscanf exists.])],[])
AC_TRY_COMPILE([#include <wchar.h>
- namespace test { using ::wcstof; } ], [],
+ namespace test { using ::wcstof; } ], [],
[AC_DEFINE(HAVE_WCSTOF,1,[Defined if wcstof exists.])],[])
AC_TRY_COMPILE([#include <wctype.h>],
- [ wint_t t; int i = iswblank(t);],
+ [ wint_t t; int i = iswblank(t);],
[AC_DEFINE(HAVE_ISWBLANK,1,
[Defined if iswblank exists.])],[])
LIBS="$ac_save_LIBS"
CXXFLAGS="$ac_save_CXXFLAGS"
AC_LANG_RESTORE
- fi
+ fi
AC_MSG_CHECKING([for fully enabled ISO C99 support])
AC_MSG_RESULT($enable_c99)
AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME], [
AC_MSG_CHECKING([for clock_gettime, nanosleep and sched_yield])
- GLIBCXX_ENABLE(libstdcxx-time,$1,[=KIND],
+ GLIBCXX_ENABLE(libstdcxx-time,$1,[[[=KIND]]],
[use KIND for check type],
[permit yes|no|rt])
CXXFLAGS="$CXXFLAGS -fno-exceptions"
ac_save_LIBS="$LIBS"
- ac_has_clock_monotonic=no;
- ac_has_clock_realtime=no;
+ ac_has_clock_monotonic=no
+ ac_has_clock_realtime=no
+ AC_MSG_RESULT($enable_libstdcxx_time)
if test x"$enable_libstdcxx_time" != x"no"; then
-lposix4*)
GLIBCXX_LIBS="$GLIBCXX_LIBS $ac_cv_search_sched_yield"
AC_DEFINE(_GLIBCXX_USE_SCHED_YIELD, 1,
- [ Defined if sched_yield is available. ])
+ [ Defined if sched_yield is available. ])
;;
-lrt*)
if test x"$enable_libstdcxx_time" = x"rt"; then
- GLIBCXX_LIBS="$GLIBCXX_LIBS $ac_cv_search_sched_yield"
- AC_DEFINE(_GLIBCXX_USE_SCHED_YIELD, 1,
- [ Defined if sched_yield is available. ])
+ GLIBCXX_LIBS="$GLIBCXX_LIBS $ac_cv_search_sched_yield"
+ AC_DEFINE(_GLIBCXX_USE_SCHED_YIELD, 1,
+ [ Defined if sched_yield is available. ])
fi
;;
*)
AC_DEFINE(_GLIBCXX_USE_SCHED_YIELD, 1,
- [ Defined if sched_yield is available. ])
+ [ Defined if sched_yield is available. ])
;;
esac
if test x"$ac_has_unistd_h" = x"yes"; then
AC_MSG_CHECKING([for monotonic clock])
AC_TRY_LINK(
- [#include <unistd.h>
- #include <time.h>
- ],
- [#if _POSIX_TIMERS > 0 && defined(_POSIX_MONOTONIC_CLOCK)
- timespec tp;
- #endif
- clock_gettime(CLOCK_MONOTONIC, &tp);
- ], [ac_has_clock_monotonic=yes], [ac_has_clock_monotonic=no])
-
- AC_MSG_RESULT($ac_has_clock_monotonic)
-
+ [#include <unistd.h>
+ #include <time.h>
+ ],
+ [#if _POSIX_TIMERS > 0 && defined(_POSIX_MONOTONIC_CLOCK)
+ timespec tp;
+ #endif
+ clock_gettime(CLOCK_MONOTONIC, &tp);
+ ], [ac_has_clock_monotonic=yes], [ac_has_clock_monotonic=no])
+
+ AC_MSG_RESULT($ac_has_clock_monotonic)
+
AC_MSG_CHECKING([for realtime clock])
AC_TRY_LINK(
- [#include <unistd.h>
- #include <time.h>
- ],
- [#if _POSIX_TIMERS > 0
- timespec tp;
- #endif
- clock_gettime(CLOCK_REALTIME, &tp);
- ], [ac_has_clock_realtime=yes], [ac_has_clock_realtime=no])
+ [#include <unistd.h>
+ #include <time.h>
+ ],
+ [#if _POSIX_TIMERS > 0
+ timespec tp;
+ #endif
+ clock_gettime(CLOCK_REALTIME, &tp);
+ ], [ac_has_clock_realtime=yes], [ac_has_clock_realtime=no])
AC_MSG_RESULT($ac_has_clock_realtime)
AC_MSG_CHECKING([for nanosleep])
AC_TRY_LINK(
- [#include <unistd.h>
- #include <time.h>
- ],
- [#if _POSIX_TIMERS > 0
- timespec tp;
- #endif
- nanosleep(&tp, 0);
- ], [ac_has_nanosleep=yes], [ac_has_nanosleep=no])
+ [#include <unistd.h>
+ #include <time.h>
+ ],
+ [#if _POSIX_TIMERS > 0
+ timespec tp;
+ #endif
+ nanosleep(&tp, 0);
+ ], [ac_has_nanosleep=yes], [ac_has_nanosleep=no])
AC_MSG_RESULT($ac_has_nanosleep)
fi
dnl [time.clock] in the current C++0x working draft.
dnl
AC_DEFUN([GLIBCXX_CHECK_GETTIMEOFDAY], [
-
+
AC_MSG_CHECKING([for gettimeofday])
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
ac_save_CXXFLAGS="$CXXFLAGS"
CXXFLAGS="$CXXFLAGS -fno-exceptions"
-
+
ac_has_gettimeofday=no;
AC_CHECK_HEADERS(sys/time.h, ac_has_sys_time_h=yes, ac_has_sys_time_h=no)
if test x"$ac_has_sys_time_h" = x"yes"; then
GCC_TRY_COMPILE_OR_LINK([#include <sys/time.h>],
[timeval tv; gettimeofday(&tv, 0);],
[ac_has_gettimeofday=yes], [ac_has_gettimeofday=no])
-
+
AC_MSG_RESULT($ac_has_gettimeofday)
fi
-
+
if test x"$ac_has_gettimeofday" = x"yes"; then
AC_DEFINE(_GLIBCXX_USE_GETTIMEOFDAY, 1,
[ Defined if gettimeofday is available. ])
fi
-
+
CXXFLAGS="$ac_save_CXXFLAGS"
AC_LANG_RESTORE
])
if test x"$ac_has_complex_h" = x"yes"; then
AC_MSG_CHECKING([for ISO C99 support to TR1 in <complex.h>])
AC_TRY_COMPILE([#include <complex.h>],
- [typedef __complex__ float float_type; float_type tmpf;
- cacosf(tmpf);
- casinf(tmpf);
- catanf(tmpf);
- cacoshf(tmpf);
- casinhf(tmpf);
- catanhf(tmpf);
+ [typedef __complex__ float float_type; float_type tmpf;
+ cacosf(tmpf);
+ casinf(tmpf);
+ catanf(tmpf);
+ cacoshf(tmpf);
+ casinhf(tmpf);
+ catanhf(tmpf);
typedef __complex__ double double_type; double_type tmpd;
- cacos(tmpd);
- casin(tmpd);
- catan(tmpd);
- cacosh(tmpd);
- casinh(tmpd);
- catanh(tmpd);
+ cacos(tmpd);
+ casin(tmpd);
+ catan(tmpd);
+ cacosh(tmpd);
+ casinh(tmpd);
+ catanh(tmpd);
typedef __complex__ long double ld_type; ld_type tmpld;
- cacosl(tmpld);
- casinl(tmpld);
- catanl(tmpld);
- cacoshl(tmpld);
- casinhl(tmpld);
- catanhl(tmpld);
+ cacosl(tmpld);
+ casinl(tmpld);
+ catanl(tmpld);
+ cacoshl(tmpld);
+ casinhl(tmpld);
+ catanhl(tmpld);
],[ac_c99_complex_tr1=yes], [ac_c99_complex_tr1=no])
fi
AC_MSG_RESULT($ac_c99_complex_tr1)
if test x"$ac_c99_complex_tr1" = x"yes"; then
AC_DEFINE(_GLIBCXX_USE_C99_COMPLEX_TR1, 1,
- [Define if C99 functions in <complex.h> should be used in
- <tr1/complex>. Using compiler builtins for these functions
+ [Define if C99 functions in <complex.h> should be used in
+ <tr1/complex>. Using compiler builtins for these functions
requires corresponding C99 library functions to be present.])
fi
AC_MSG_CHECKING([for ISO C99 support to TR1 in <ctype.h>])
AC_CACHE_VAL(glibcxx_cv_c99_ctype_tr1, [
AC_TRY_COMPILE([#include <ctype.h>],
- [int ch;
- int ret;
- ret = isblank(ch);
+ [int ch;
+ int ret;
+ ret = isblank(ch);
],[glibcxx_cv_c99_ctype_tr1=yes],
[glibcxx_cv_c99_ctype_tr1=no])
])
AC_MSG_RESULT($glibcxx_cv_c99_ctype_tr1)
if test x"$glibcxx_cv_c99_ctype_tr1" = x"yes"; then
AC_DEFINE(_GLIBCXX_USE_C99_CTYPE_TR1, 1,
- [Define if C99 functions in <ctype.h> should be imported in
+ [Define if C99 functions in <ctype.h> should be imported in
<tr1/cctype> in namespace std::tr1.])
fi
if test x"$ac_has_fenv_h" = x"yes"; then
AC_MSG_CHECKING([for ISO C99 support to TR1 in <fenv.h>])
AC_TRY_COMPILE([#include <fenv.h>],
- [int except, mode;
- fexcept_t* pflag;
- fenv_t* penv;
- int ret;
- ret = feclearexcept(except);
- ret = fegetexceptflag(pflag, except);
- ret = feraiseexcept(except);
- ret = fesetexceptflag(pflag, except);
- ret = fetestexcept(except);
- ret = fegetround();
- ret = fesetround(mode);
- ret = fegetenv(penv);
- ret = feholdexcept(penv);
- ret = fesetenv(penv);
- ret = feupdateenv(penv);
+ [int except, mode;
+ fexcept_t* pflag;
+ fenv_t* penv;
+ int ret;
+ ret = feclearexcept(except);
+ ret = fegetexceptflag(pflag, except);
+ ret = feraiseexcept(except);
+ ret = fesetexceptflag(pflag, except);
+ ret = fetestexcept(except);
+ ret = fegetround();
+ ret = fesetround(mode);
+ ret = fegetenv(penv);
+ ret = feholdexcept(penv);
+ ret = fesetenv(penv);
+ ret = feupdateenv(penv);
],[ac_c99_fenv_tr1=yes], [ac_c99_fenv_tr1=no])
fi
AC_MSG_RESULT($ac_c99_fenv_tr1)
if test x"$ac_c99_fenv_tr1" = x"yes"; then
AC_DEFINE(_GLIBCXX_USE_C99_FENV_TR1, 1,
- [Define if C99 functions in <fenv.h> should be imported in
+ [Define if C99 functions in <fenv.h> should be imported in
<tr1/cfenv> in namespace std::tr1.])
fi
AC_MSG_CHECKING([for ISO C99 support to TR1 in <stdint.h>])
AC_CACHE_VAL(glibcxx_cv_c99_stdint_tr1, [
AC_TRY_COMPILE([#define __STDC_LIMIT_MACROS
- #define __STDC_CONSTANT_MACROS
- #include <stdint.h>],
- [typedef int8_t my_int8_t;
+ #define __STDC_CONSTANT_MACROS
+ #include <stdint.h>],
+ [typedef int8_t my_int8_t;
my_int8_t i8 = INT8_MIN;
i8 = INT8_MAX;
- typedef int16_t my_int16_t;
+ typedef int16_t my_int16_t;
my_int16_t i16 = INT16_MIN;
i16 = INT16_MAX;
- typedef int32_t my_int32_t;
+ typedef int32_t my_int32_t;
my_int32_t i32 = INT32_MIN;
i32 = INT32_MAX;
- typedef int64_t my_int64_t;
+ typedef int64_t my_int64_t;
my_int64_t i64 = INT64_MIN;
i64 = INT64_MAX;
- typedef int_fast8_t my_int_fast8_t;
+ typedef int_fast8_t my_int_fast8_t;
my_int_fast8_t if8 = INT_FAST8_MIN;
if8 = INT_FAST8_MAX;
- typedef int_fast16_t my_int_fast16_t;
+ typedef int_fast16_t my_int_fast16_t;
my_int_fast16_t if16 = INT_FAST16_MIN;
if16 = INT_FAST16_MAX;
- typedef int_fast32_t my_int_fast32_t;
+ typedef int_fast32_t my_int_fast32_t;
my_int_fast32_t if32 = INT_FAST32_MIN;
if32 = INT_FAST32_MAX;
- typedef int_fast64_t my_int_fast64_t;
+ typedef int_fast64_t my_int_fast64_t;
my_int_fast64_t if64 = INT_FAST64_MIN;
if64 = INT_FAST64_MAX;
- typedef int_least8_t my_int_least8_t;
+ typedef int_least8_t my_int_least8_t;
my_int_least8_t il8 = INT_LEAST8_MIN;
il8 = INT_LEAST8_MAX;
- typedef int_least16_t my_int_least16_t;
+ typedef int_least16_t my_int_least16_t;
my_int_least16_t il16 = INT_LEAST16_MIN;
il16 = INT_LEAST16_MAX;
- typedef int_least32_t my_int_least32_t;
+ typedef int_least32_t my_int_least32_t;
my_int_least32_t il32 = INT_LEAST32_MIN;
il32 = INT_LEAST32_MAX;
- typedef int_least64_t my_int_least64_t;
+ typedef int_least64_t my_int_least64_t;
my_int_least64_t il64 = INT_LEAST64_MIN;
il64 = INT_LEAST64_MAX;
typedef intmax_t my_intmax_t;
typedef intptr_t my_intptr_t;
my_intptr_t ip = INTPTR_MAX;
ip = INTPTR_MIN;
- typedef uint8_t my_uint8_t;
+ typedef uint8_t my_uint8_t;
my_uint8_t ui8 = UINT8_MAX;
ui8 = UINT8_MAX;
- typedef uint16_t my_uint16_t;
+ typedef uint16_t my_uint16_t;
my_uint16_t ui16 = UINT16_MAX;
ui16 = UINT16_MAX;
- typedef uint32_t my_uint32_t;
+ typedef uint32_t my_uint32_t;
my_uint32_t ui32 = UINT32_MAX;
ui32 = UINT32_MAX;
- typedef uint64_t my_uint64_t;
+ typedef uint64_t my_uint64_t;
my_uint64_t ui64 = UINT64_MAX;
ui64 = UINT64_MAX;
- typedef uint_fast8_t my_uint_fast8_t;
+ typedef uint_fast8_t my_uint_fast8_t;
my_uint_fast8_t uif8 = UINT_FAST8_MAX;
uif8 = UINT_FAST8_MAX;
- typedef uint_fast16_t my_uint_fast16_t;
+ typedef uint_fast16_t my_uint_fast16_t;
my_uint_fast16_t uif16 = UINT_FAST16_MAX;
uif16 = UINT_FAST16_MAX;
- typedef uint_fast32_t my_uint_fast32_t;
+ typedef uint_fast32_t my_uint_fast32_t;
my_uint_fast32_t uif32 = UINT_FAST32_MAX;
uif32 = UINT_FAST32_MAX;
- typedef uint_fast64_t my_uint_fast64_t;
+ typedef uint_fast64_t my_uint_fast64_t;
my_uint_fast64_t uif64 = UINT_FAST64_MAX;
uif64 = UINT_FAST64_MAX;
- typedef uint_least8_t my_uint_least8_t;
+ typedef uint_least8_t my_uint_least8_t;
my_uint_least8_t uil8 = UINT_LEAST8_MAX;
uil8 = UINT_LEAST8_MAX;
- typedef uint_least16_t my_uint_least16_t;
+ typedef uint_least16_t my_uint_least16_t;
my_uint_least16_t uil16 = UINT_LEAST16_MAX;
uil16 = UINT_LEAST16_MAX;
- typedef uint_least32_t my_uint_least32_t;
+ typedef uint_least32_t my_uint_least32_t;
my_uint_least32_t uil32 = UINT_LEAST32_MAX;
uil32 = UINT_LEAST32_MAX;
- typedef uint_least64_t my_uint_least64_t;
+ typedef uint_least64_t my_uint_least64_t;
my_uint_least64_t uil64 = UINT_LEAST64_MAX;
uil64 = UINT_LEAST64_MAX;
typedef uintmax_t my_uintmax_t;
AC_MSG_RESULT($glibcxx_cv_c99_stdint_tr1)
if test x"$glibcxx_cv_c99_stdint_tr1" = x"yes"; then
AC_DEFINE(_GLIBCXX_USE_C99_STDINT_TR1, 1,
- [Define if C99 types in <stdint.h> should be imported in
+ [Define if C99 types in <stdint.h> should be imported in
<tr1/cstdint> in namespace std::tr1.])
fi
AC_MSG_CHECKING([for ISO C99 support to TR1 in <math.h>])
AC_CACHE_VAL(glibcxx_cv_c99_math_tr1, [
AC_TRY_COMPILE([#include <math.h>],
- [typedef double_t my_double_t;
- typedef float_t my_float_t;
- acosh(0.0);
- acoshf(0.0f);
- acoshl(0.0l);
- asinh(0.0);
- asinhf(0.0f);
- asinhl(0.0l);
- atanh(0.0);
- atanhf(0.0f);
- atanhl(0.0l);
- cbrt(0.0);
- cbrtf(0.0f);
- cbrtl(0.0l);
- copysign(0.0, 0.0);
- copysignf(0.0f, 0.0f);
- copysignl(0.0l, 0.0l);
- erf(0.0);
- erff(0.0f);
- erfl(0.0l);
- erfc(0.0);
- erfcf(0.0f);
- erfcl(0.0l);
- exp2(0.0);
- exp2f(0.0f);
- exp2l(0.0l);
- expm1(0.0);
- expm1f(0.0f);
- expm1l(0.0l);
- fdim(0.0, 0.0);
- fdimf(0.0f, 0.0f);
- fdiml(0.0l, 0.0l);
- fma(0.0, 0.0, 0.0);
- fmaf(0.0f, 0.0f, 0.0f);
- fmal(0.0l, 0.0l, 0.0l);
- fmax(0.0, 0.0);
- fmaxf(0.0f, 0.0f);
- fmaxl(0.0l, 0.0l);
- fmin(0.0, 0.0);
- fminf(0.0f, 0.0f);
- fminl(0.0l, 0.0l);
- hypot(0.0, 0.0);
- hypotf(0.0f, 0.0f);
- hypotl(0.0l, 0.0l);
- ilogb(0.0);
- ilogbf(0.0f);
- ilogbl(0.0l);
- lgamma(0.0);
- lgammaf(0.0f);
- lgammal(0.0l);
- llrint(0.0);
- llrintf(0.0f);
- llrintl(0.0l);
- llround(0.0);
- llroundf(0.0f);
- llroundl(0.0l);
- log1p(0.0);
- log1pf(0.0f);
- log1pl(0.0l);
- log2(0.0);
- log2f(0.0f);
- log2l(0.0l);
- logb(0.0);
- logbf(0.0f);
- logbl(0.0l);
- lrint(0.0);
- lrintf(0.0f);
- lrintl(0.0l);
- lround(0.0);
- lroundf(0.0f);
- lroundl(0.0l);
- nan(0);
- nanf(0);
- nanl(0);
- nearbyint(0.0);
- nearbyintf(0.0f);
- nearbyintl(0.0l);
- nextafter(0.0, 0.0);
- nextafterf(0.0f, 0.0f);
- nextafterl(0.0l, 0.0l);
- nexttoward(0.0, 0.0);
- nexttowardf(0.0f, 0.0f);
- nexttowardl(0.0l, 0.0l);
- remainder(0.0, 0.0);
- remainderf(0.0f, 0.0f);
- remainderl(0.0l, 0.0l);
- remquo(0.0, 0.0, 0);
- remquof(0.0f, 0.0f, 0);
- remquol(0.0l, 0.0l, 0);
- rint(0.0);
- rintf(0.0f);
- rintl(0.0l);
- round(0.0);
- roundf(0.0f);
- roundl(0.0l);
- scalbln(0.0, 0l);
- scalblnf(0.0f, 0l);
- scalblnl(0.0l, 0l);
- scalbn(0.0, 0);
- scalbnf(0.0f, 0);
- scalbnl(0.0l, 0);
- tgamma(0.0);
- tgammaf(0.0f);
- tgammal(0.0l);
- trunc(0.0);
- truncf(0.0f);
- truncl(0.0l);
+ [typedef double_t my_double_t;
+ typedef float_t my_float_t;
+ acosh(0.0);
+ acoshf(0.0f);
+ acoshl(0.0l);
+ asinh(0.0);
+ asinhf(0.0f);
+ asinhl(0.0l);
+ atanh(0.0);
+ atanhf(0.0f);
+ atanhl(0.0l);
+ cbrt(0.0);
+ cbrtf(0.0f);
+ cbrtl(0.0l);
+ copysign(0.0, 0.0);
+ copysignf(0.0f, 0.0f);
+ copysignl(0.0l, 0.0l);
+ erf(0.0);
+ erff(0.0f);
+ erfl(0.0l);
+ erfc(0.0);
+ erfcf(0.0f);
+ erfcl(0.0l);
+ exp2(0.0);
+ exp2f(0.0f);
+ exp2l(0.0l);
+ expm1(0.0);
+ expm1f(0.0f);
+ expm1l(0.0l);
+ fdim(0.0, 0.0);
+ fdimf(0.0f, 0.0f);
+ fdiml(0.0l, 0.0l);
+ fma(0.0, 0.0, 0.0);
+ fmaf(0.0f, 0.0f, 0.0f);
+ fmal(0.0l, 0.0l, 0.0l);
+ fmax(0.0, 0.0);
+ fmaxf(0.0f, 0.0f);
+ fmaxl(0.0l, 0.0l);
+ fmin(0.0, 0.0);
+ fminf(0.0f, 0.0f);
+ fminl(0.0l, 0.0l);
+ hypot(0.0, 0.0);
+ hypotf(0.0f, 0.0f);
+ hypotl(0.0l, 0.0l);
+ ilogb(0.0);
+ ilogbf(0.0f);
+ ilogbl(0.0l);
+ lgamma(0.0);
+ lgammaf(0.0f);
+ lgammal(0.0l);
+ llrint(0.0);
+ llrintf(0.0f);
+ llrintl(0.0l);
+ llround(0.0);
+ llroundf(0.0f);
+ llroundl(0.0l);
+ log1p(0.0);
+ log1pf(0.0f);
+ log1pl(0.0l);
+ log2(0.0);
+ log2f(0.0f);
+ log2l(0.0l);
+ logb(0.0);
+ logbf(0.0f);
+ logbl(0.0l);
+ lrint(0.0);
+ lrintf(0.0f);
+ lrintl(0.0l);
+ lround(0.0);
+ lroundf(0.0f);
+ lroundl(0.0l);
+ nan(0);
+ nanf(0);
+ nanl(0);
+ nearbyint(0.0);
+ nearbyintf(0.0f);
+ nearbyintl(0.0l);
+ nextafter(0.0, 0.0);
+ nextafterf(0.0f, 0.0f);
+ nextafterl(0.0l, 0.0l);
+ nexttoward(0.0, 0.0);
+ nexttowardf(0.0f, 0.0f);
+ nexttowardl(0.0l, 0.0l);
+ remainder(0.0, 0.0);
+ remainderf(0.0f, 0.0f);
+ remainderl(0.0l, 0.0l);
+ remquo(0.0, 0.0, 0);
+ remquof(0.0f, 0.0f, 0);
+ remquol(0.0l, 0.0l, 0);
+ rint(0.0);
+ rintf(0.0f);
+ rintl(0.0l);
+ round(0.0);
+ roundf(0.0f);
+ roundl(0.0l);
+ scalbln(0.0, 0l);
+ scalblnf(0.0f, 0l);
+ scalblnl(0.0l, 0l);
+ scalbn(0.0, 0);
+ scalbnf(0.0f, 0);
+ scalbnl(0.0l, 0);
+ tgamma(0.0);
+ tgammaf(0.0f);
+ tgammal(0.0l);
+ trunc(0.0);
+ truncf(0.0f);
+ truncl(0.0l);
],[glibcxx_cv_c99_math_tr1=yes], [glibcxx_cv_c99_math_tr1=no])
])
AC_MSG_RESULT($glibcxx_cv_c99_math_tr1)
if test x"$glibcxx_cv_c99_math_tr1" = x"yes"; then
AC_DEFINE(_GLIBCXX_USE_C99_MATH_TR1, 1,
- [Define if C99 functions or macros in <math.h> should be imported
- in <tr1/cmath> in namespace std::tr1.])
+ [Define if C99 functions or macros in <math.h> should be imported
+ in <tr1/cmath> in namespace std::tr1.])
fi
# Check for the existence of <inttypes.h> functions (NB: doesn't make
if test x"$glibcxx_cv_c99_stdint_tr1" = x"yes"; then
AC_MSG_CHECKING([for ISO C99 support to TR1 in <inttypes.h>])
AC_TRY_COMPILE([#include <inttypes.h>],
- [intmax_t i, numer, denom, base;
- const char* s;
- char** endptr;
- intmax_t ret = imaxabs(i);
- imaxdiv_t dret = imaxdiv(numer, denom);
- ret = strtoimax(s, endptr, base);
- uintmax_t uret = strtoumax(s, endptr, base);
- ],[ac_c99_inttypes_tr1=yes], [ac_c99_inttypes_tr1=no])
+ [intmax_t i, numer, denom, base;
+ const char* s;
+ char** endptr;
+ intmax_t ret = imaxabs(i);
+ imaxdiv_t dret = imaxdiv(numer, denom);
+ ret = strtoimax(s, endptr, base);
+ uintmax_t uret = strtoumax(s, endptr, base);
+ ],[ac_c99_inttypes_tr1=yes], [ac_c99_inttypes_tr1=no])
fi
AC_MSG_RESULT($ac_c99_inttypes_tr1)
if test x"$ac_c99_inttypes_tr1" = x"yes"; then
AC_DEFINE(_GLIBCXX_USE_C99_INTTYPES_TR1, 1,
- [Define if C99 functions in <inttypes.h> should be imported in
- <tr1/cinttypes> in namespace std::tr1.])
+ [Define if C99 functions in <inttypes.h> should be imported in
+ <tr1/cinttypes> in namespace std::tr1.])
fi
# Check for the existence of whcar_t <inttypes.h> functions (NB: doesn't
if test x"$glibcxx_cv_c99_stdint_tr1" = x"yes"; then
AC_MSG_CHECKING([for wchar_t ISO C99 support to TR1 in <inttypes.h>])
AC_TRY_COMPILE([#include <inttypes.h>],
- [intmax_t base;
+ [intmax_t base;
const wchar_t* s;
- wchar_t** endptr;
- intmax_t ret = wcstoimax(s, endptr, base);
- uintmax_t uret = wcstoumax(s, endptr, base);
- ],[ac_c99_inttypes_wchar_t_tr1=yes],
+ wchar_t** endptr;
+ intmax_t ret = wcstoimax(s, endptr, base);
+ uintmax_t uret = wcstoumax(s, endptr, base);
+ ],[ac_c99_inttypes_wchar_t_tr1=yes],
[ac_c99_inttypes_wchar_t_tr1=no])
fi
AC_MSG_RESULT($ac_c99_inttypes_wchar_t_tr1)
if test x"$ac_c99_inttypes_wchar_t_tr1" = x"yes"; then
AC_DEFINE(_GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1, 1,
- [Define if wchar_t C99 functions in <inttypes.h> should be
+ [Define if wchar_t C99 functions in <inttypes.h> should be
imported in <tr1/cinttypes> in namespace std::tr1.])
fi
- # Check for the existence of the <stdbool.h> header.
+ # Check for the existence of the <stdbool.h> header.
AC_CHECK_HEADERS(stdbool.h)
CXXFLAGS="$ac_save_CXXFLAGS"
if test x"$glibcxx_cv_random_tr1" = x"yes"; then
AC_DEFINE(_GLIBCXX_USE_RANDOM_TR1, 1,
- [Define if /dev/random and /dev/urandom are available for
+ [Define if /dev/random and /dev/urandom are available for
the random_device of TR1 (Chapter 5.1).])
fi
])
dnl
-dnl Check whether EOF, SEEK_CUR, and SEEK_END have the most common values:
-dnl in that case including <cstdio> in some C++ headers can be avoided.
+dnl Compute the EOF, SEEK_CUR, and SEEK_END integer constants.
dnl
-AC_DEFUN([GLIBCXX_CHECK_STDIO_MACROS], [
+AC_DEFUN([GLIBCXX_COMPUTE_STDIO_INTEGER_CONSTANTS], [
- AC_MSG_CHECKING([for EOF == -1, SEEK_CUR == 1, SEEK_END == 2])
- AC_CACHE_VAL(glibcxx_cv_stdio_macros, [
- AC_TRY_COMPILE([#include <stdio.h>],
- [#if ((EOF != -1) || (SEEK_CUR != 1) || (SEEK_END != 2))
- unusual values...
- #endif
- ], [glibcxx_cv_stdio_macros=yes],
- [glibcxx_cv_stdio_macros=no])
+ AC_CACHE_CHECK([for the value of EOF], glibcxx_cv_stdio_eof, [
+ AC_COMPUTE_INT([glibcxx_cv_stdio_eof], [[EOF]],
+ [#include <stdio.h>],
+ [AC_MSG_ERROR([computing EOF failed])])
])
- AC_MSG_RESULT($glibcxx_cv_stdio_macros)
- if test x"$glibcxx_cv_stdio_macros" = x"yes"; then
- AC_DEFINE(_GLIBCXX_STDIO_MACROS, 1,
- [Define if EOF == -1, SEEK_CUR == 1, SEEK_END == 2.])
- fi
+ AC_DEFINE_UNQUOTED(_GLIBCXX_STDIO_EOF, $glibcxx_cv_stdio_eof,
+ [Define to the value of the EOF integer constant.])
+
+ AC_CACHE_CHECK([for the value of SEEK_CUR], glibcxx_cv_stdio_seek_cur, [
+ AC_COMPUTE_INT([glibcxx_cv_stdio_seek_cur], [[SEEK_CUR]],
+ [#include <stdio.h>],
+ [AC_MSG_ERROR([computing SEEK_CUR failed])])
+ ])
+ AC_DEFINE_UNQUOTED(_GLIBCXX_STDIO_SEEK_CUR, $glibcxx_cv_stdio_seek_cur,
+ [Define to the value of the SEEK_CUR integer constant.])
+ AC_CACHE_CHECK([for the value of SEEK_END], glibcxx_cv_stdio_seek_end, [
+ AC_COMPUTE_INT([glibcxx_cv_stdio_seek_end], [[SEEK_END]],
+ [#include <stdio.h>],
+ [AC_MSG_ERROR([computing SEEK_END failed])])
+ ])
+ AC_DEFINE_UNQUOTED(_GLIBCXX_STDIO_SEEK_END, $glibcxx_cv_stdio_seek_end,
+ [Define to the value of the SEEK_END integer constant.])
])
dnl
dnl Where DEFAULT is either 'c' or 'c_std' or 'c_global'.
dnl
AC_DEFUN([GLIBCXX_ENABLE_CHEADERS], [
- GLIBCXX_ENABLE(cheaders,$1,[=KIND],
+ GLIBCXX_ENABLE(cheaders,$1,[[[=KIND]]],
[construct "C" headers for g++], [permit c|c_std|c_global])
AC_MSG_NOTICE("C" header strategy set to $enable_cheaders)
c_compatibility=yes
fi
- if test $enable_cheaders = c_global || test $enable_cheaders = c_std; then
- c_extra=yes
- fi
-
AC_SUBST(C_INCLUDE_DIR)
GLIBCXX_CONDITIONAL(GLIBCXX_C_HEADERS_C, test $enable_cheaders = c)
GLIBCXX_CONDITIONAL(GLIBCXX_C_HEADERS_C_STD, test $enable_cheaders = c_std)
GLIBCXX_CONDITIONAL(GLIBCXX_C_HEADERS_C_GLOBAL, test $enable_cheaders = c_global)
GLIBCXX_CONDITIONAL(GLIBCXX_C_HEADERS_COMPATIBILITY, test $c_compatibility = yes)
- GLIBCXX_CONDITIONAL(GLIBCXX_C_HEADERS_EXTRA, test $c_extra = yes)
])
dnl Default is generic.
dnl
AC_DEFUN([GLIBCXX_ENABLE_CLOCALE], [
- GLIBCXX_ENABLE(clocale,auto,[@<:@=MODEL@:>@],
+ GLIBCXX_ENABLE(clocale,auto,[[[=MODEL]]],
[use MODEL for target locale package],
[permit generic|gnu|ieee_1003.1-2001|yes|no|auto])
AC_HELP_STRING([--enable-nls],[use Native Language Support (default)]),
[],
[enable_nls=yes])
-
+
# Either a known packaage, or "auto"
if test $enable_clocale = no || test $enable_clocale = yes; then
enable_clocale=auto
if test $enable_clocale_flag = auto; then
case ${target_os} in
linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
- enable_clocale_flag=gnu
- ;;
+ enable_clocale_flag=gnu
+ ;;
darwin* | freebsd*)
- enable_clocale_flag=darwin
+ enable_clocale_flag=darwin
;;
*)
- enable_clocale_flag=generic
- ;;
+ enable_clocale_flag=generic
+ ;;
esac
fi
if test $enable_clocale_flag = gnu; then
AC_EGREP_CPP([_GLIBCXX_ok], [
#include <features.h>
- #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
+ #if (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)) && !defined(__UCLIBC__)
_GLIBCXX_ok
#endif
], enable_clocale_flag=gnu, enable_clocale_flag=generic)
- if test $enable_clocale = auto; then
- # Test for bugs early in glibc-2.2.x series
- AC_TRY_RUN([
- #define _GNU_SOURCE 1
- #include <locale.h>
- #include <string.h>
- #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
- extern __typeof(newlocale) __newlocale;
- extern __typeof(duplocale) __duplocale;
- extern __typeof(strcoll_l) __strcoll_l;
- #endif
- 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
-
# Set it to scream when it hurts.
- ac_save_CFLAGS="$CFLAGS"
+ ac_save_CFLAGS="$CFLAGS"
CFLAGS="-Wimplicit-function-declaration -Werror"
# Use strxfrm_l if available.
AC_TRY_COMPILE([#define _GNU_SOURCE 1
#include <string.h>
#include <locale.h>],
- [char s[128]; __locale_t loc; strxfrm_l(s, "C", 5, loc);],
- AC_DEFINE(HAVE_STRXFRM_L, 1,
- [Define if strxfrm_l is available in <string.h>.]),)
-
+ [char s[128]; __locale_t loc; strxfrm_l(s, "C", 5, loc);],
+ AC_DEFINE(HAVE_STRXFRM_L, 1,
+ [Define if strxfrm_l is available in <string.h>.]),)
+
# Use strerror_l if available.
AC_TRY_COMPILE([#define _GNU_SOURCE 1
#include <string.h>
#include <locale.h>],
- [__locale_t loc; strerror_l(5, loc);],
- AC_DEFINE(HAVE_STRERROR_L, 1,
- [Define if strerror_l is available in <string.h>.]),)
+ [__locale_t loc; strerror_l(5, loc);],
+ AC_DEFINE(HAVE_STRERROR_L, 1,
+ [Define if strerror_l is available in <string.h>.]),)
CFLAGS="$ac_save_CFLAGS"
fi
# Perhaps use strerror_r if available, and strerror_l isn't.
- ac_save_CFLAGS="$CFLAGS"
+ ac_save_CFLAGS="$CFLAGS"
CFLAGS="-Wimplicit-function-declaration -Werror"
AC_TRY_COMPILE([#define _GNU_SOURCE 1
#include <string.h>
#include <locale.h>],
- [char s[128]; strerror_r(5, s, 128);],
- AC_DEFINE(HAVE_STRERROR_R, 1,
- [Define if strerror_r is available in <string.h>.]),)
+ [char s[128]; strerror_r(5, s, 128);],
+ AC_DEFINE(HAVE_STRERROR_R, 1,
+ [Define if strerror_r is available in <string.h>.]),)
CFLAGS="$ac_save_CFLAGS"
# Set configure bits for specified locale package
CTIME_CC=config/locale/generic/time_members.cc
CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
;;
-
+
gnu)
AC_MSG_RESULT(gnu)
# Don't call AM-GNU-GETTEXT here. Instead, assume glibc.
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
+ USE_NLS=yes
fi
# Export the build objects.
for ling in $ALL_LINGUAS; do \
- glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \
- glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \
+ glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \
+ glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \
done
AC_SUBST(glibcxx_MOFILES)
AC_SUBST(glibcxx_POFILES)
AC_SEARCH_LIBS(gettext, intl, [], USE_NLS=no)
fi
if test $USE_NLS = yes; then
- AC_DEFINE(_GLIBCXX_USE_NLS, 1,
- [Define if NLS translations are to be used.])
+ AC_DEFINE(_GLIBCXX_USE_NLS, 1,
+ [Define if NLS translations are to be used.])
fi
AC_SUBST(USE_NLS)
dnl
AC_DEFUN([GLIBCXX_ENABLE_ALLOCATOR], [
AC_MSG_CHECKING([for std::allocator base class])
- GLIBCXX_ENABLE(libstdcxx-allocator,auto,[=KIND],
+ GLIBCXX_ENABLE(libstdcxx-allocator,auto,[[[=KIND]]],
[use KIND for target std::allocator base],
[permit new|malloc|mt|bitmap|pool|yes|no|auto])
if test $enable_libstdcxx_allocator_flag = auto; then
case ${target_os} in
linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
- enable_libstdcxx_allocator_flag=new
- ;;
+ enable_libstdcxx_allocator_flag=new
+ ;;
*)
- enable_libstdcxx_allocator_flag=new
- ;;
+ enable_libstdcxx_allocator_flag=new
+ ;;
esac
fi
AC_MSG_RESULT($enable_libstdcxx_allocator_flag)
-
+
# Set configure bits for specified locale package
case ${enable_libstdcxx_allocator_flag} in
pool)
ALLOCATOR_H=config/allocator/pool_allocator_base.h
ALLOCATOR_NAME=__gnu_cxx::__pool_alloc
- ;;
+ ;;
esac
AC_SUBST(ALLOCATOR_H)
GLIBCXX_ENABLE(concept-checks,$1,,[use Boost-derived template checks])
if test $enable_concept_checks = yes; then
AC_DEFINE(_GLIBCXX_CONCEPT_CHECKS, 1,
- [Define to use concept checking code from the boost libraries.])
+ [Define to use concept checking code from the boost libraries.])
fi
])
+dnl
+dnl Use extern templates.
+dnl
+dnl --enable-extern-template defines _GLIBCXX_EXTERN_TEMPLATE to 1
+dnl --disable-extern-template defines _GLIBCXX_EXTERN_TEMPLATE to 0
+
+dnl + Usage: GLIBCXX_ENABLE_TEMPLATE[(DEFAULT)]
+dnl Where DEFAULT is `yes' or `no'.
+dnl
+AC_DEFUN([GLIBCXX_ENABLE_EXTERN_TEMPLATE], [
+
+ GLIBCXX_ENABLE(extern-template,$1,,[enable extern template])
+
+ AC_MSG_CHECKING([for extern template support])
+ AC_MSG_RESULT([$enable_extern_template])
+
+ GLIBCXX_CONDITIONAL(ENABLE_EXTERN_TEMPLATE, test $enable_extern_template = yes)
+])
+
dnl
dnl Check for parallel mode pre-requisites, including OpenMP support.
dnl
# See if configured libgomp/omp.h exists. (libgomp may be in
# noconfigdirs but not explicitly disabled.)
- if test -f $glibcxx_builddir/../libgomp/omp.h; then
+ if echo " ${TARGET_CONFIGDIRS} " | grep " libgomp " > /dev/null 2>&1 ; then
enable_parallel=yes;
else
- AC_MSG_NOTICE([$glibcxx_builddir/../libgomp/omp.h not found])
+ AC_MSG_NOTICE([target-libgomp not built])
fi
AC_MSG_CHECKING([for parallel mode support])
dnl
AC_DEFUN([GLIBCXX_ENABLE_CSTDIO], [
AC_MSG_CHECKING([for underlying I/O to use])
- GLIBCXX_ENABLE(cstdio,stdio,[=PACKAGE],
+ GLIBCXX_ENABLE(cstdio,stdio,[[[=PACKAGE]]],
[use target-specific I/O package], [permit stdio])
# Now that libio has been removed, you can have any color you want as long
if test -n "$enable_cxx_flags"; then
for f in $enable_cxx_flags; do
case "$f" in
- -fhonor-std) ;;
- -*) ;;
- *) # and we're trying to pass /what/ exactly?
- AC_MSG_ERROR([compiler flags start with a -]) ;;
+ -fhonor-std) ;;
+ -*) ;;
+ *) # and we're trying to pass /what/ exactly?
+ AC_MSG_ERROR([compiler flags start with a -]) ;;
esac
done
fi
AC_DEFUN([GLIBCXX_ENABLE_HOSTED], [
AC_ARG_ENABLE([hosted-libstdcxx],
AC_HELP_STRING([--disable-hosted-libstdcxx],
- [only build freestanding C++ runtime support]),,
+ [only build freestanding C++ runtime support]),,
[case "$host" in
- arm*-*-symbianelf*)
+ arm*-*-symbianelf*)
enable_hosted_libstdcxx=no
;;
- *)
+ *)
enable_hosted_libstdcxx=yes
;;
esac])
AC_DEFUN([GLIBCXX_ENABLE_LONG_LONG], [
GLIBCXX_ENABLE(long-long,$1,,[enable template specializations for 'long long'])
if test $enable_long_long = yes; then
- AC_DEFINE(_GLIBCXX_USE_LONG_LONG, 1,
- [Define if code specialized for long long should be used.])
+ AC_DEFINE(_GLIBCXX_USE_LONG_LONG, 1,
+ [Define if code specialized for long long should be used.])
fi
AC_MSG_CHECKING([for enabled long long specializations])
AC_MSG_RESULT([$enable_long_long])
])
+dnl
+dnl Check for decimal floating point.
+dnl See:
+dnl http://gcc.gnu.org/onlinedocs/gcc/Decimal-Float.html#Decimal-Float
+dnl
+dnl This checks to see if the host supports decimal floating point types.
+dnl
+dnl Defines:
+dnl _GLIBCXX_USE_DECIMAL_FLOAT
+dnl
+AC_DEFUN([GLIBCXX_ENABLE_DECIMAL_FLOAT], [
+
+ # Fake what AC_TRY_COMPILE does, without linking as this is
+ # unnecessary for this test.
+
+ cat > conftest.$ac_ext << EOF
+[#]line __oline__ "configure"
+int main()
+{
+ _Decimal32 d1;
+ _Decimal64 d2;
+ _Decimal128 d3;
+ return 0;
+}
+EOF
+
+ AC_MSG_CHECKING([for ISO/IEC TR 24733 ])
+ if AC_TRY_EVAL(ac_compile); then
+ AC_DEFINE(_GLIBCXX_USE_DECIMAL_FLOAT, 1,
+ [Define if ISO/IEC TR 24733 decimal floating point types are supported on this host.])
+ enable_dfp=yes
+ else
+ enable_dfp=no
+ fi
+ AC_MSG_RESULT($enable_dfp)
+ rm -f conftest*
+])
+
dnl
dnl Check for template specializations for the 'wchar_t' type.
dnl
# Test it always, for use in GLIBCXX_ENABLE_C99, together with
# ac_has_wchar_h.
AC_CHECK_HEADERS(wctype.h, ac_has_wctype_h=yes, ac_has_wctype_h=no)
-
+
if test x"$enable_wchar_t" = x"yes"; then
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
-
+
if test x"$ac_has_wchar_h" = xyes &&
test x"$ac_has_wctype_h" = xyes; then
AC_TRY_COMPILE([#include <wchar.h>
- #include <stddef.h>
- wint_t i;
+ #include <stddef.h>
+ wint_t i;
long l = WEOF;
long j = WCHAR_MIN;
long k = WCHAR_MAX;
- namespace test
- {
+ namespace test
+ {
using ::btowc;
using ::fgetwc;
using ::fgetws;
using ::fputwc;
using ::fputws;
using ::fwide;
- using ::fwprintf;
+ using ::fwprintf;
using ::fwscanf;
using ::getwc;
using ::getwchar;
- using ::mbrlen;
- using ::mbrtowc;
- using ::mbsinit;
- using ::mbsrtowcs;
+ using ::mbrlen;
+ using ::mbrtowc;
+ using ::mbsinit;
+ using ::mbsrtowcs;
using ::putwc;
using ::putwchar;
- using ::swprintf;
- using ::swscanf;
+ using ::swprintf;
+ using ::swscanf;
using ::ungetwc;
- using ::vfwprintf;
- using ::vswprintf;
- using ::vwprintf;
- using ::wcrtomb;
- using ::wcscat;
- using ::wcschr;
- using ::wcscmp;
- using ::wcscoll;
- using ::wcscpy;
- using ::wcscspn;
- using ::wcsftime;
+ using ::vfwprintf;
+ using ::vswprintf;
+ using ::vwprintf;
+ using ::wcrtomb;
+ using ::wcscat;
+ using ::wcschr;
+ using ::wcscmp;
+ using ::wcscoll;
+ using ::wcscpy;
+ using ::wcscspn;
+ using ::wcsftime;
using ::wcslen;
- using ::wcsncat;
- using ::wcsncmp;
- using ::wcsncpy;
+ using ::wcsncat;
+ using ::wcsncmp;
+ using ::wcsncpy;
using ::wcspbrk;
- using ::wcsrchr;
- using ::wcsrtombs;
- using ::wcsspn;
+ using ::wcsrchr;
+ using ::wcsrtombs;
+ using ::wcsspn;
using ::wcsstr;
- using ::wcstod;
- using ::wcstok;
+ using ::wcstod;
+ using ::wcstok;
using ::wcstol;
- using ::wcstoul;
- using ::wcsxfrm;
- using ::wctob;
+ using ::wcstoul;
+ using ::wcsxfrm;
+ using ::wctob;
using ::wmemchr;
using ::wmemcmp;
using ::wmemcpy;
using ::wmemmove;
using ::wmemset;
- using ::wprintf;
- using ::wscanf;
+ using ::wprintf;
+ using ::wscanf;
}
],[],[], [enable_wchar_t=no])
else
if test x"$enable_wchar_t" = x"yes"; then
AC_DEFINE(_GLIBCXX_USE_WCHAR_T, 1,
- [Define if code specialized for wchar_t should be used.])
+ [Define if code specialized for wchar_t should be used.])
fi
AC_MSG_CHECKING([for enabled wchar_t specializations])
AC_LANG_CPLUSPLUS
echo '#include <math.h>' > conftest.h
if $CXX $CXXFLAGS $CPPFLAGS -x c++-header conftest.h \
- -o conftest.h.gch 1>&5 2>&1 &&
- echo '#error "pch failed"' > conftest.h &&
- echo '#include "conftest.h"' > conftest.cc &&
+ -o conftest.h.gch 1>&5 2>&1 &&
+ echo '#error "pch failed"' > conftest.h &&
+ echo '#include "conftest.h"' > conftest.cc &&
$CXX -c $CXXFLAGS $CPPFLAGS conftest.cc 1>&5 2>&1 ;
then
- glibcxx_cv_prog_CXX_pch=yes
+ glibcxx_cv_prog_CXX_pch=yes
else
- glibcxx_cv_prog_CXX_pch=no
+ glibcxx_cv_prog_CXX_pch=no
fi
rm -f conftest*
CXXFLAGS=$ac_save_CXXFLAGS
dnl http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html#Atomic-Builtins
dnl
dnl This checks to see if the host supports the compiler-generated
-dnl builtins for atomic operations for various integral sizes. Note, this
+dnl builtins for atomic operations for various integral sizes. Note, this
dnl is intended to be an all-or-nothing switch, so all the atomic operations
dnl that are used should be checked.
dnl
dnl Note:
-dnl libgomp and libgfortran do this with a link test, instead of an asm test.
-dnl see: CHECK_SYNC_FETCH_AND_ADD
+dnl libgomp and libgfortran use a link test, see CHECK_SYNC_FETCH_AND_ADD.
dnl
dnl Defines:
-dnl _GLIBCXX_ATOMIC_BUILTINS_1
+dnl _GLIBCXX_ATOMIC_BUILTINS_1
dnl _GLIBCXX_ATOMIC_BUILTINS_2
dnl _GLIBCXX_ATOMIC_BUILTINS_4
dnl _GLIBCXX_ATOMIC_BUILTINS_8
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
old_CXXFLAGS="$CXXFLAGS"
-
+
+ # Do link tests if possible, instead asm tests, limited to some platforms
+ # see discussion in PR target/40134, PR libstdc++/40133 and the thread
+ # starting at http://gcc.gnu.org/ml/gcc-patches/2009-07/msg00322.html
+ atomic_builtins_link_tests=no
+ if test x$gcc_no_link != xyes; then
+ # Can do link tests. Limit to some tested platforms
+ case "$host" in
+ *-*-linux* | *-*-uclinux* | *-*-kfreebsd*-gnu | *-*-gnu*)
+ atomic_builtins_link_tests=yes
+ ;;
+ esac
+ fi
+
+ if test x$atomic_builtins_link_tests = xyes; then
+
+ # Do link tests.
+
+ CXXFLAGS="$CXXFLAGS -fno-exceptions"
+
+ AC_MSG_CHECKING([for atomic builtins for bool])
+ AC_CACHE_VAL(glibcxx_cv_atomic_bool, [
+ AC_TRY_LINK(
+ [ ],
+ [typedef bool atomic_type;
+ atomic_type c1;
+ atomic_type c2;
+ const atomic_type c3(0);
+ __sync_fetch_and_add(&c1, c2);
+ __sync_val_compare_and_swap(&c1, c3, c2);
+ __sync_lock_test_and_set(&c1, c3);
+ __sync_lock_release(&c1);
+ __sync_synchronize();],
+ [glibcxx_cv_atomic_bool=yes],
+ [glibcxx_cv_atomic_bool=no])
+ ])
+ if test $glibcxx_cv_atomic_bool = yes; then
+ AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS_1, 1,
+ [Define if builtin atomic operations for bool are supported on this host.])
+ fi
+ AC_MSG_RESULT($glibcxx_cv_atomic_bool)
+
+ AC_MSG_CHECKING([for atomic builtins for short])
+ AC_CACHE_VAL(glibcxx_cv_atomic_short, [
+ AC_TRY_LINK(
+ [ ],
+ [typedef short atomic_type;
+ atomic_type c1;
+ atomic_type c2;
+ const atomic_type c3(0);
+ __sync_fetch_and_add(&c1, c2);
+ __sync_val_compare_and_swap(&c1, c3, c2);
+ __sync_lock_test_and_set(&c1, c3);
+ __sync_lock_release(&c1);
+ __sync_synchronize();],
+ [glibcxx_cv_atomic_short=yes],
+ [glibcxx_cv_atomic_short=no])
+ ])
+ if test $glibcxx_cv_atomic_short = yes; then
+ AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS_2, 1,
+ [Define if builtin atomic operations for short are supported on this host.])
+ fi
+ AC_MSG_RESULT($glibcxx_cv_atomic_short)
+
+ AC_MSG_CHECKING([for atomic builtins for int])
+ AC_CACHE_VAL(glibcxx_cv_atomic_int, [
+ AC_TRY_LINK(
+ [ ],
+ [typedef int atomic_type;
+ atomic_type c1;
+ atomic_type c2;
+ const atomic_type c3(0);
+ __sync_fetch_and_add(&c1, c2);
+ __sync_val_compare_and_swap(&c1, c3, c2);
+ __sync_lock_test_and_set(&c1, c3);
+ __sync_lock_release(&c1);
+ __sync_synchronize();],
+ [glibcxx_cv_atomic_int=yes],
+ [glibcxx_cv_atomic_int=no])
+ ])
+ if test $glibcxx_cv_atomic_int = yes; then
+ AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS_4, 1,
+ [Define if builtin atomic operations for int are supported on this host.])
+ fi
+ AC_MSG_RESULT($glibcxx_cv_atomic_int)
+
+ AC_MSG_CHECKING([for atomic builtins for long long])
+ AC_CACHE_VAL(glibcxx_cv_atomic_long_long, [
+ AC_TRY_LINK(
+ [ ],
+ [typedef long long atomic_type;
+ atomic_type c1;
+ atomic_type c2;
+ const atomic_type c3(0);
+ __sync_fetch_and_add(&c1, c2);
+ __sync_val_compare_and_swap(&c1, c3, c2);
+ __sync_lock_test_and_set(&c1, c3);
+ __sync_lock_release(&c1);
+ __sync_synchronize();],
+ [glibcxx_cv_atomic_long_long=yes],
+ [glibcxx_cv_atomic_long_long=no])
+ ])
+ if test $glibcxx_cv_atomic_long_long = yes; then
+ AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS_8, 1,
+ [Define if builtin atomic operations for long long are supported on this host.])
+ fi
+ AC_MSG_RESULT($glibcxx_cv_atomic_long_long)
+
+ else
+
+ # Do asm tests.
+
# Compile unoptimized.
CXXFLAGS='-O0 -S'
- # Fake what AC_TRY_COMPILE does, without linking as this is
- # unnecessary for a builtins test.
+ # Fake what AC_TRY_COMPILE does.
cat > conftest.$ac_ext << EOF
[#]line __oline__ "configure"
AC_MSG_CHECKING([for atomic builtins for bool])
if AC_TRY_EVAL(ac_compile); then
if grep __sync_ conftest.s >/dev/null 2>&1 ; then
- enable_atomic_builtinsb=no
+ glibcxx_cv_atomic_bool=no
else
AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS_1, 1,
[Define if builtin atomic operations for bool are supported on this host.])
- enable_atomic_builtinsb=yes
+ glibcxx_cv_atomic_bool=yes
fi
fi
- AC_MSG_RESULT($enable_atomic_builtinsb)
+ AC_MSG_RESULT($glibcxx_cv_atomic_bool)
rm -f conftest*
cat > conftest.$ac_ext << EOF
AC_MSG_CHECKING([for atomic builtins for short])
if AC_TRY_EVAL(ac_compile); then
if grep __sync_ conftest.s >/dev/null 2>&1 ; then
- enable_atomic_builtinss=no
+ glibcxx_cv_atomic_short=no
else
AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS_2, 1,
[Define if builtin atomic operations for short are supported on this host.])
- enable_atomic_builtinss=yes
+ glibcxx_cv_atomic_short=yes
fi
fi
- AC_MSG_RESULT($enable_atomic_builtinss)
+ AC_MSG_RESULT($glibcxx_cv_atomic_short)
rm -f conftest*
cat > conftest.$ac_ext << EOF
[#]line __oline__ "configure"
int main()
{
- // NB: _Atomic_word not necessarily int.
+ // NB: _Atomic_word not necessarily int.
typedef int atomic_type;
atomic_type c1;
atomic_type c2;
AC_MSG_CHECKING([for atomic builtins for int])
if AC_TRY_EVAL(ac_compile); then
if grep __sync_ conftest.s >/dev/null 2>&1 ; then
- enable_atomic_builtinsi=no
+ glibcxx_cv_atomic_int=no
else
AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS_4, 1,
- [Define if builtin atomic operations for int are supported on this host.])
- enable_atomic_builtinsi=yes
+ [Define if builtin atomic operations for int are supported on this host.])
+ glibcxx_cv_atomic_int=yes
fi
fi
- AC_MSG_RESULT($enable_atomic_builtinsi)
+ AC_MSG_RESULT($glibcxx_cv_atomic_int)
rm -f conftest*
cat > conftest.$ac_ext << EOF
AC_MSG_CHECKING([for atomic builtins for long long])
if AC_TRY_EVAL(ac_compile); then
if grep __sync_ conftest.s >/dev/null 2>&1 ; then
- enable_atomic_builtinsll=no
+ glibcxx_cv_atomic_long_long=no
else
AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS_8, 1,
[Define if builtin atomic operations for long long are supported on this host.])
- enable_atomic_builtinsll=yes
+ glibcxx_cv_atomic_long_long=yes
fi
fi
- AC_MSG_RESULT($enable_atomic_builtinsll)
+ AC_MSG_RESULT($glibcxx_cv_atomic_long_long)
rm -f conftest*
+ fi
CXXFLAGS="$old_CXXFLAGS"
AC_LANG_RESTORE
# Set atomicity_dir to builtins if either of above tests pass.
- if test $enable_atomic_builtinsi = yes || test $enable_atomic_builtinsb = yes ; then
+ if test $glibcxx_cv_atomic_int = yes || test $glibcxx_cv_atomic_bool = yes ; then
atomicity_dir=cpu/generic/atomicity_builtins
fi
atomicity_dir=cpu/generic/atomicity_mutex
AC_MSG_WARN([No native atomic operations are provided for this platform.])
if test "x$target_thread_file" = xsingle; then
- AC_MSG_WARN([They cannot be faked when thread support is disabled.])
- AC_MSG_WARN([Thread-safety of certain classes is not guaranteed.])
+ AC_MSG_WARN([They cannot be faked when thread support is disabled.])
+ AC_MSG_WARN([Thread-safety of certain classes is not guaranteed.])
else
- AC_MSG_WARN([They will be faked using a mutex.])
- AC_MSG_WARN([Performance of certain classes will degrade as a result.])
+ AC_MSG_WARN([They will be faked using a mutex.])
+ AC_MSG_WARN([Performance of certain classes will degrade as a result.])
fi
fi
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
+ enable_sjlj_exceptions=yes
elif grep _Unwind_Resume conftest.s >/dev/null 2>&1 ; then
- enable_sjlj_exceptions=no
+ enable_sjlj_exceptions=no
elif grep __cxa_end_cleanup conftest.s >/dev/null 2>&1 ; then
- enable_sjlj_exceptions=no
+ enable_sjlj_exceptions=no
fi
fi
CXXFLAGS="$old_CXXFLAGS"
case $enable_sjlj_exceptions in
yes)
AC_DEFINE(_GLIBCXX_SJLJ_EXCEPTIONS, 1,
- [Define if the compiler is configured for setjmp/longjmp exceptions.])
+ [Define if the compiler is configured for setjmp/longjmp exceptions.])
ac_exception_model_name=sjlj
;;
no)
dnl
AC_DEFUN([GLIBCXX_ENABLE_SYMVERS], [
-GLIBCXX_ENABLE(symvers,$1,[=STYLE],
+GLIBCXX_ENABLE(symvers,$1,[[[=STYLE]]],
[enables symbol versioning of the shared library],
- [permit yes|no|gnu|gnu-versioned-namespace|darwin|darwin-export])
+ [permit yes|no|gnu|gnu-versioned-namespace|darwin|darwin-export|sun])
# If we never went through the GLIBCXX_CHECK_LINKER_FEATURES macro, then we
# don't know enough about $LD to do tricks...
AC_REQUIRE([GLIBCXX_CHECK_LINKER_FEATURES])
+# Sun style symbol versions needs GNU c++filt for make_sunver.pl to work
+# with extern "C++" in version scripts.
+AC_REQUIRE([GCC_PROG_GNU_CXXFILT])
# Turn a 'yes' into a suitable default.
if test x$enable_symvers = xyes ; then
else
if test $with_gnu_ld = yes ; then
case ${target_os} in
- cygwin* | pe | mingw32* | hpux*)
- enable_symvers=no ;;
- *)
- enable_symvers=gnu ;;
+ hpux*)
+ enable_symvers=no ;;
+ *)
+ enable_symvers=gnu ;;
esac
else
case ${target_os} in
- darwin*)
+ darwin*)
enable_symvers=darwin ;;
- *)
- enable_symvers=no ;;
+ # Sun symbol versioning exists since Solaris 2.5.
+ solaris2.[[5-9]]* | solaris2.1[[0-9]]*)
+ # make_sunver.pl needs GNU c++filt to support extern "C++" in
+ # version scripts, so disable symbol versioning if none can be
+ # found.
+ if test -z "$ac_cv_path_CXXFILT"; then
+ AC_MSG_WARN([=== You have requested Sun symbol versioning, but])
+ AC_MSG_WARN([=== no GNU c++filt could be found.])
+ AC_MSG_WARN([=== Symbol versioning will be disabled.])
+ enable_symvers=no
+ else
+ enable_symvers=sun
+ fi
+ ;;
+ *)
+ enable_symvers=no ;;
esac
fi
fi
enable_symvers=darwin
fi
+# Check if 'sun' was requested on non-Solaris 2 platforms.
+if test x$enable_symvers = xsun ; then
+ case ${target_os} in
+ solaris2*)
+ # All fine.
+ ;;
+ *)
+ # Unlikely to work.
+ AC_MSG_WARN([=== You have requested Sun symbol versioning, but])
+ AC_MSG_WARN([=== you are not targetting Solaris 2.])
+ AC_MSG_WARN([=== Symbol versioning will be disabled.])
+ enable_symvers=no
+ ;;
+ esac
+fi
+
# Check to see if 'gnu' can win.
-if test $enable_symvers = gnu || test $enable_symvers = gnu-versioned-namespace; then
+if test $enable_symvers = gnu ||
+ test $enable_symvers = gnu-versioned-namespace ||
+ test $enable_symvers = sun; then
# Check to see if libgcc_s exists, indicating that shared libgcc is possible.
AC_MSG_CHECKING([for shared libgcc])
ac_save_CFLAGS="$CFLAGS"
AC_MSG_WARN([=== you are not building a shared libgcc_s.])
AC_MSG_WARN([=== Symbol versioning will be disabled.])
enable_symvers=no
+ elif test $with_gnu_ld != yes && test $enable_symvers = sun; then
+ : All interesting versions of Sun ld support sun style symbol versioning.
elif test $with_gnu_ld != yes ; then
# just fail for now
AC_MSG_WARN([=== You have requested GNU symbol versioning, but])
;;
gnu)
SYMVER_FILE=config/abi/pre/gnu.ver
- AC_DEFINE(_GLIBCXX_SYMVER_GNU, 1,
- [Define to use GNU versioning in the shared library.])
+ AC_DEFINE(_GLIBCXX_SYMVER_GNU, 1,
+ [Define to use GNU versioning in the shared library.])
;;
gnu-versioned-namespace)
SYMVER_FILE=config/abi/pre/gnu-versioned-namespace.ver
- AC_DEFINE(_GLIBCXX_SYMVER_GNU_NAMESPACE, 1,
- [Define to use GNU namespace versioning in the shared library.])
+ AC_DEFINE(_GLIBCXX_SYMVER_GNU_NAMESPACE, 1,
+ [Define to use GNU namespace versioning in the shared library.])
;;
darwin)
SYMVER_FILE=config/abi/pre/gnu.ver
- AC_DEFINE(_GLIBCXX_SYMVER_DARWIN, 1,
- [Define to use darwin versioning in the shared library.])
+ AC_DEFINE(_GLIBCXX_SYMVER_DARWIN, 1,
+ [Define to use darwin versioning in the shared library.])
+ ;;
+ sun)
+ SYMVER_FILE=config/abi/pre/gnu.ver
+ AC_DEFINE(_GLIBCXX_SYMVER_SUN, 1,
+ [Define to use Sun versioning in the shared library.])
;;
esac
GLIBCXX_CONDITIONAL(ENABLE_SYMVERS_GNU, test $enable_symvers = gnu)
GLIBCXX_CONDITIONAL(ENABLE_SYMVERS_GNU_NAMESPACE, test $enable_symvers = gnu-versioned-namespace)
GLIBCXX_CONDITIONAL(ENABLE_SYMVERS_DARWIN, test $enable_symvers = darwin)
+GLIBCXX_CONDITIONAL(ENABLE_SYMVERS_SUN, test $enable_symvers = sun)
AC_MSG_NOTICE(versioning on shared library symbols is $enable_symvers)
+if test $enable_symvers != no ; then
+ case ${target_os} in
+ # The Solaris 2 runtime linker doesn't support the GNU extension of
+ # binding the same symbol to different versions
+ solaris2*)
+ symvers_renaming=no ;;
+ # Other platforms with GNU symbol versioning (GNU/Linux, more?) do.
+ *)
+ AC_DEFINE(HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT, 1,
+ [Define to 1 if the target runtime linker supports binding the same symbol to different versions.])
+ symvers_renaming=yes ;;
+ esac
+else
+ symvers_renaming=no
+fi
+GLIBCXX_CONDITIONAL(ENABLE_SYMVERS_SOL2, test $symvers_renaming = no)
+
# Now, set up compatibility support, if any.
# In addition, need this to deal with std::size_t mangling in
# src/compatibility.cc. In a perfect world, could use
AC_MSG_CHECKING([for size_t as unsigned int])
ac_save_CFLAGS="$CFLAGS"
CFLAGS="-Werror"
-AC_TRY_COMPILE(, [__SIZE_TYPE__* stp; unsigned int* uip; stp = uip;],
- [glibcxx_size_t_is_i=yes], [glibcxx_size_t_is_i=no])
+AC_TRY_COMPILE(, [__SIZE_TYPE__* stp; unsigned int* uip; stp = uip;],
+ [glibcxx_size_t_is_i=yes], [glibcxx_size_t_is_i=no])
CFLAGS=$ac_save_CFLAGS
if test "$glibcxx_size_t_is_i" = yes; then
AC_DEFINE(_GLIBCXX_SIZE_T_IS_UINT, 1, [Define if size_t is unsigned int.])
AC_MSG_CHECKING([for ptrdiff_t as int])
ac_save_CFLAGS="$CFLAGS"
CFLAGS="-Werror"
-AC_TRY_COMPILE(, [__PTRDIFF_TYPE__* ptp; int* ip; ptp = ip;],
- [glibcxx_ptrdiff_t_is_i=yes], [glibcxx_ptrdiff_t_is_i=no])
+AC_TRY_COMPILE(, [__PTRDIFF_TYPE__* ptp; int* ip; ptp = ip;],
+ [glibcxx_ptrdiff_t_is_i=yes], [glibcxx_ptrdiff_t_is_i=no])
CFLAGS=$ac_save_CFLAGS
if test "$glibcxx_ptrdiff_t_is_i" = yes; then
AC_DEFINE(_GLIBCXX_PTRDIFF_T_IS_INT, 1, [Define if ptrdiff_t is int.])
if test $target_thread_file != single; then
AC_DEFINE(HAVE_GTHR_DEFAULT, 1,
- [Define if gthr-default.h exists
- (meaning that threading support is enabled).])
+ [Define if gthr-default.h exists
+ (meaning that threading support is enabled).])
fi
glibcxx_thread_h=gthr-$target_thread_file.h
// In case of POSIX threads check _POSIX_TIMEOUTS too.
#if (defined(_PTHREADS) \
- && (!defined(_POSIX_TIMEOUTS) || _POSIX_TIMEOUTS <= 0))
+ && (!defined(_POSIX_TIMEOUTS) || _POSIX_TIMEOUTS <= 0))
#error
#endif
], [ac_has_gthreads=yes], [ac_has_gthreads=no])
if test x"$ac_has_gthreads" = x"yes"; then
AC_DEFINE(_GLIBCXX_HAS_GTHREADS, 1,
- [Define if gthreads library is available.])
+ [Define if gthreads library is available.])
fi
CXXFLAGS="$ac_save_CXXFLAGS"
[AC_TRY_COMPILE([#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, 1,
- [Define if LC_MESSAGES is available in <locale.h>.])
+ AC_DEFINE(HAVE_LC_MESSAGES, 1,
+ [Define if LC_MESSAGES is available in <locale.h>.])
fi
])
])
# Macros from the top-level gcc directory.
+m4_include([../config/gc++filt.m4])
m4_include([../config/tls.m4])
-