# OPTIMIZE_CXXFLAGS = -O3 -fstrict-aliasing -fvtable-gc
AC_SUBST(OPTIMIZE_CXXFLAGS)
- WARN_FLAGS='-Wall -Wextra -Wwrite-strings -Wcast-qual'
+ WARN_FLAGS='-Wall -Wextra -Wwrite-strings -Wcast-qual -Wabi'
AC_SUBST(WARN_FLAGS)
])
dnl --disable-libstdcxx-time
dnl disables the checks completely
dnl
+dnl N.B. Darwin provides nanosleep but doesn't support the whole POSIX
+dnl Timers option, so doesn't define _POSIX_TIMERS. Because the test
+dnl below fails Darwin unconditionally defines _GLIBCXX_USE_NANOSLEEP in
+dnl os_defines.h and also defines _GLIBCXX_USE_SCHED_YIELD.
+dnl
AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME], [
AC_MSG_CHECKING([for clock_gettime, nanosleep and sched_yield])
])
dnl
+dnl Check whether required C++ overloads are present in <stdio.h>.
+dnl
+AC_DEFUN([GLIBCXX_CHECK_STDIO_PROTO], [
+
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+
+ AC_MSG_CHECKING([for gets declaration])
+ AC_CACHE_VAL(glibcxx_cv_gets, [
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE(
+ [#include <stdio.h>
+ namespace test
+ {
+ using ::gets;
+ }
+ ])],
+ [glibcxx_cv_gets=yes],
+ [glibcxx_cv_gets=no]
+ )])
+
+ if test $glibcxx_cv_gets = yes; then
+ AC_DEFINE(HAVE_GETS, 1, [Define if gets is available in <stdio.h>.])
+ fi
+ AC_MSG_RESULT($glibcxx_cv_gets)
+
+ AC_LANG_RESTORE
+])
+
+dnl
dnl Check whether macros, etc are present for <system_error>
dnl
AC_DEFUN([GLIBCXX_CHECK_SYSTEM_ERROR], [
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
+ if grep __atomic_ conftest.s >/dev/null 2>&1 ; then
glibcxx_cv_atomic_bool=no
else
glibcxx_cv_atomic_bool=yes
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
+ if grep __atomic_ conftest.s >/dev/null 2>&1 ; then
glibcxx_cv_atomic_short=no
else
glibcxx_cv_atomic_short=yes
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
+ if grep __atomic_ conftest.s >/dev/null 2>&1 ; then
glibcxx_cv_atomic_int=no
else
glibcxx_cv_atomic_int=yes
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
+ if grep __atomic_ conftest.s >/dev/null 2>&1 ; then
glibcxx_cv_atomic_long_long=no
else
glibcxx_cv_atomic_long_long=yes
CXXFLAGS="$old_CXXFLAGS"
AC_LANG_RESTORE
- # Set atomicity_dir to builtins if all of above tests pass.
+ # Set atomicity_dir to builtins if all but the long long test above passes.
if test $glibcxx_cv_atomic_bool = yes \
&& test $glibcxx_cv_atomic_short = yes \
- && test $glibcxx_cv_atomic_int = yes \
- && test $glibcxx_cv_atomic_long_long = yes ; then
+ && test $glibcxx_cv_atomic_int = yes; then
AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS, 1,
[Define if the compiler supports C++11 atomics.])
atomicity_dir=cpu/generic/atomicity_builtins
# 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
dnl required by the c++0x thread library. Conforming gthread
dnl implementations can define __GTHREADS_CXX0X to enable use with c++0x.
dnl
+dnl GLIBCXX_ENABLE_SYMVERS must be done before this.
+dnl
AC_DEFUN([GLIBCXX_CHECK_GTHREADS], [
+ GLIBCXX_ENABLE(libstdcxx-threads,auto,,[enable C++11 threads support])
+
+ if test x$enable_libstdcxx_threads = xauto ||
+ test x$enable_libstdcxx_threads = xyes; then
+
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
#ifndef __GTHREADS_CXX0X
#error
#endif
- ], [ac_has_gthreads=yes], [ac_has_gthreads=no])
+ ], [case $target_os in
+ # gthreads support breaks symbol versioning on Solaris 8/9 (PR
+ # libstdc++/52189).
+ solaris2.[[89]]*)
+ if test x$enable_symvers = xno; then
+ ac_has_gthreads=yes
+ elif test x$enable_libstdcxx_threads = xyes; then
+ AC_MSG_WARN([You have requested C++11 threads support, but])
+ AC_MSG_WARN([this breaks symbol versioning.])
+ ac_has_gthreads=yes
+ else
+ ac_has_gthreads=no
+ fi
+ ;;
+ *)
+ ac_has_gthreads=yes
+ ;;
+ esac],
+ [ac_has_gthreads=no])
+ else
+ ac_has_gthreads=no
+ fi
AC_MSG_RESULT([$ac_has_gthreads])
GLIBCXX_CONDITIONAL(ENABLE_PYTHONDIR, test $python_mod_dir != no)
])
+dnl
+dnl Check to see if -Werror is disabled.
+dnl
+dnl --enable-werror/--disable-werror
+AC_DEFUN([GLIBCXX_ENABLE_WERROR], [
+ AC_MSG_CHECKING([for -Werror])
+ GLIBCXX_ENABLE(werror,$1,,[turns on -Werror])
+ AC_MSG_RESULT($enable_werror)
+ GLIBCXX_CONDITIONAL(ENABLE_WERROR, test $enable_werror = yes)
+])
+
# Macros from the top-level gcc directory.
m4_include([../config/gc++filt.m4])