summaryrefslogtreecommitdiff
path: root/libstdc++-v3/acinclude.m4
diff options
context:
space:
mode:
authorCary Coutant <ccoutant@google.com>2012-02-17 13:52:50 -0800
committerCary Coutant <ccoutant@google.com>2012-02-17 13:52:50 -0800
commit2400d467a903f32c96df9f9fcb0de7be8a655afa (patch)
treedb75cacf7bde0ac39a05dd7e01aae83651f9719c /libstdc++-v3/acinclude.m4
parent06874d14ea6c1d1050b6077d1915c02a9d17abe6 (diff)
parentb2b83a5cd2be730c35969acfbea8444a45a69b04 (diff)
downloadgcc-2400d467a903f32c96df9f9fcb0de7be8a655afa.tar.gz
Merge branch 'master' into google-debugfission
Diffstat (limited to 'libstdc++-v3/acinclude.m4')
-rw-r--r--libstdc++-v3/acinclude.m4242
1 files changed, 143 insertions, 99 deletions
diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index fee5c6f2776..e7ffacc19e3 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -49,7 +49,7 @@ AC_DEFUN([GLIBCXX_CONFIGURE], [
# 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++ python src doc po testsuite])
+ m4_define([glibcxx_SUBDIRS],[include libsupc++ python src src/c++98 src/c++11 doc po testsuite])
SUBDIRS='glibcxx_SUBDIRS'
# These need to be absolute paths, yet at the same time need to
@@ -631,7 +631,7 @@ AC_DEFUN([GLIBCXX_CONFIGURE_TESTSUITE], [
dnl
-dnl Does any necessary configuration of the documentation directory.
+dnl Does any necessary configuration for docbook in the docs directory.
dnl
dnl XSLTPROC must be set before this
dnl
@@ -642,7 +642,7 @@ dnl XSL_STYLE_DIR
dnl
AC_DEFUN([GLIBCXX_CONFIGURE_DOCBOOK], [
-AC_MSG_CHECKING([for stylesheets used in generation of documentation])
+AC_MSG_CHECKING([for docbook stylesheets for documentation creation])
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
@@ -669,6 +669,18 @@ if test x"$glibcxx_local_stylesheets" = x"yes"; then
else
glibcxx_stylesheets=no
fi
+
+# Check for epub3 dependencies.
+AC_MSG_CHECKING([for epub3 stylesheets for documentation creation])
+glibcxx_epub_stylesheets=no
+if test x"$glibcxx_local_stylesheets" = x"yes"; then
+ if test -f "$XSL_STYLE_DIR/epub3/chunk.xsl"; then
+ glibcxx_epub_stylesheets=yes
+ fi
+fi
+AC_MSG_RESULT($glibcxx_epub_stylesheets)
+AM_CONDITIONAL(BUILD_EPUB, test x"$glibcxx_epub_stylesheets" = x"yes")
+
])
@@ -1725,26 +1737,26 @@ AC_DEFUN([GLIBCXX_CHECK_MATH_PROTO], [
{ return __builtin_fabsf(__x); }
}
])],
- [glibcxx_cv_abs_float=no],
- [glibcxx_cv_abs_float=yes]
+ [glibcxx_cv_abs_float=no],
+ [glibcxx_cv_abs_float=yes]
)])
# autoheader cannot handle indented templates.
AH_VERBATIM([__CORRECT_ISO_CPP_MATH_H_PROTO1],
- [/* Define if all C++ overloads are available in <math.h>. */
+ [/* Define if all C++ overloads are available in <math.h>. */
#if __cplusplus >= 199711L
#undef __CORRECT_ISO_CPP_MATH_H_PROTO1
#endif])
AH_VERBATIM([__CORRECT_ISO_CPP_MATH_H_PROTO2],
- [/* Define if only double std::abs(double) is available in <math.h>. */
+ [/* Define if only double std::abs(double) is available in <math.h>. */
#if __cplusplus >= 199711L
#undef __CORRECT_ISO_CPP_MATH_H_PROTO2
#endif])
if test $glibcxx_cv_abs_float = yes; then
- AC_DEFINE(__CORRECT_ISO_CPP_MATH_H_PROTO1)
+ AC_DEFINE(__CORRECT_ISO_CPP_MATH_H_PROTO1)
else
- AC_DEFINE(__CORRECT_ISO_CPP_MATH_H_PROTO2)
+ AC_DEFINE(__CORRECT_ISO_CPP_MATH_H_PROTO2)
fi
AC_MSG_RESULT($glibcxx_cv_abs_float)
;;
@@ -1775,19 +1787,19 @@ AC_DEFUN([GLIBCXX_CHECK_STDLIB_PROTO], [
inline long
abs(long __i) { return labs(__i); }
}
- ])],
- [glibcxx_cv_abs_long=no],
- [glibcxx_cv_abs_long=yes]
+ ])],
+ [glibcxx_cv_abs_long=no],
+ [glibcxx_cv_abs_long=yes]
)])
# autoheader cannot handle indented templates.
AH_VERBATIM([__CORRECT_ISO_CPP_STDLIB_H_PROTO],
- [/* Define if all C++ overloads are available in <stdlib.h>. */
+ [/* Define if all C++ overloads are available in <stdlib.h>. */
#if __cplusplus >= 199711L
#undef __CORRECT_ISO_CPP_STDLIB_H_PROTO
#endif])
if test $glibcxx_cv_abs_long = yes; then
- AC_DEFINE(__CORRECT_ISO_CPP_STDLIB_H_PROTO, 1)
+ AC_DEFINE(__CORRECT_ISO_CPP_STDLIB_H_PROTO, 1)
fi
AC_MSG_RESULT($glibcxx_cv_abs_long)
;;
@@ -2483,7 +2495,7 @@ template<typename T>
int main()
{
- typename same<double, __float128>::type f1;
+ typename same<double, __float128>::type f1;
typename same<long double, __float128>::type f2;
}
EOF
@@ -2673,7 +2685,7 @@ AC_DEFUN([GLIBCXX_ENABLE_PCH], [
dnl
dnl Check for atomic builtins.
dnl See:
-dnl http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html#Atomic-Builtins
+dnl http://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html
dnl
dnl This checks to see if the host supports the compiler-generated
dnl builtins for atomic operations for various integral sizes. Note, this
@@ -2683,12 +2695,6 @@ dnl
dnl Note:
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_2
-dnl _GLIBCXX_ATOMIC_BUILTINS_4
-dnl _GLIBCXX_ATOMIC_BUILTINS_8
-dnl
AC_DEFUN([GLIBCXX_ENABLE_ATOMIC_BUILTINS], [
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
@@ -2720,19 +2726,16 @@ AC_DEFUN([GLIBCXX_ENABLE_ATOMIC_BUILTINS], [
[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();],
+ atomic_type c3(0);
+ __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED);
+ __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL,
+ __ATOMIC_RELAXED);
+ __atomic_test_and_set(&c1, __ATOMIC_RELAXED);
+ __atomic_load_n(&c1, __ATOMIC_RELAXED);
+ ],
[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])
@@ -2742,19 +2745,16 @@ AC_DEFUN([GLIBCXX_ENABLE_ATOMIC_BUILTINS], [
[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();],
+ atomic_type c3(0);
+ __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED);
+ __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL,
+ __ATOMIC_RELAXED);
+ __atomic_test_and_set(&c1, __ATOMIC_RELAXED);
+ __atomic_load_n(&c1, __ATOMIC_RELAXED);
+ ],
[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])
@@ -2764,19 +2764,16 @@ AC_DEFUN([GLIBCXX_ENABLE_ATOMIC_BUILTINS], [
[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();],
+ atomic_type c3(0);
+ __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED);
+ __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL,
+ __ATOMIC_RELAXED);
+ __atomic_test_and_set(&c1, __ATOMIC_RELAXED);
+ __atomic_load_n(&c1, __ATOMIC_RELAXED);
+ ],
[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])
@@ -2786,19 +2783,16 @@ AC_DEFUN([GLIBCXX_ENABLE_ATOMIC_BUILTINS], [
[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();],
+ atomic_type c3(0);
+ __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED);
+ __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL,
+ __ATOMIC_RELAXED);
+ __atomic_test_and_set(&c1, __ATOMIC_RELAXED);
+ __atomic_load_n(&c1, __ATOMIC_RELAXED);
+ ],
[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
@@ -2817,12 +2811,13 @@ int main()
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();
+ atomic_type c3(0);
+ __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED);
+ __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL,
+ __ATOMIC_RELAXED);
+ __atomic_test_and_set(&c1, __ATOMIC_RELAXED);
+ __atomic_load_n(&c1, __ATOMIC_RELAXED);
+
return 0;
}
EOF
@@ -2832,8 +2827,6 @@ EOF
if grep __sync_ conftest.s >/dev/null 2>&1 ; then
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.])
glibcxx_cv_atomic_bool=yes
fi
fi
@@ -2847,12 +2840,13 @@ int main()
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();
+ atomic_type c3(0);
+ __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED);
+ __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL,
+ __ATOMIC_RELAXED);
+ __atomic_test_and_set(&c1, __ATOMIC_RELAXED);
+ __atomic_load_n(&c1, __ATOMIC_RELAXED);
+
return 0;
}
EOF
@@ -2862,8 +2856,6 @@ EOF
if grep __sync_ conftest.s >/dev/null 2>&1 ; then
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.])
glibcxx_cv_atomic_short=yes
fi
fi
@@ -2878,12 +2870,13 @@ int main()
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();
+ atomic_type c3(0);
+ __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED);
+ __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL,
+ __ATOMIC_RELAXED);
+ __atomic_test_and_set(&c1, __ATOMIC_RELAXED);
+ __atomic_load_n(&c1, __ATOMIC_RELAXED);
+
return 0;
}
EOF
@@ -2893,8 +2886,6 @@ EOF
if grep __sync_ conftest.s >/dev/null 2>&1 ; then
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.])
glibcxx_cv_atomic_int=yes
fi
fi
@@ -2908,12 +2899,13 @@ int main()
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();
+ atomic_type c3(0);
+ __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED);
+ __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL,
+ __ATOMIC_RELAXED);
+ __atomic_test_and_set(&c1, __ATOMIC_RELAXED);
+ __atomic_load_n(&c1, __ATOMIC_RELAXED);
+
return 0;
}
EOF
@@ -2923,8 +2915,6 @@ EOF
if grep __sync_ conftest.s >/dev/null 2>&1 ; then
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.])
glibcxx_cv_atomic_long_long=yes
fi
fi
@@ -2936,8 +2926,13 @@ EOF
CXXFLAGS="$old_CXXFLAGS"
AC_LANG_RESTORE
- # Set atomicity_dir to builtins if either of above tests pass.
- if test $glibcxx_cv_atomic_int = yes || test $glibcxx_cv_atomic_bool = yes ; then
+ # Set atomicity_dir to builtins if all of above tests pass.
+ 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
+ AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS, 1,
+ [Define if the compiler supports C++11 atomics.])
atomicity_dir=cpu/generic/atomicity_builtins
fi
@@ -3333,7 +3328,14 @@ dnl Check if gthread implementation defines the types and functions
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
@@ -3353,13 +3355,13 @@ AC_DEFUN([GLIBCXX_CHECK_GTHREADS], [
[
// In case of POSIX threads check _POSIX_TIMEOUTS.
#if (defined(_PTHREADS) \
- && (!defined(_POSIX_TIMEOUTS) || _POSIX_TIMEOUTS <= 0))
+ && (!defined(_POSIX_TIMEOUTS) || _POSIX_TIMEOUTS <= 0))
#error
#endif
], [ac_gthread_use_mutex_timedlock=1], [ac_gthread_use_mutex_timedlock=0])
AC_DEFINE_UNQUOTED(_GTHREAD_USE_MUTEX_TIMEDLOCK, $ac_gthread_use_mutex_timedlock,
- [Define to 1 if mutex_timedlock is available.])
+ [Define to 1 if mutex_timedlock is available.])
if test $ac_gthread_use_mutex_timedlock = 1 ; then res_mutex_timedlock=yes ;
else res_mutex_timedlock=no ; fi
@@ -3372,7 +3374,28 @@ AC_DEFUN([GLIBCXX_CHECK_GTHREADS], [
#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])
@@ -3548,6 +3571,27 @@ AC_DEFUN([GLIBCXX_CHECK_SYSCTL_HW_NCPU], [
AC_LANG_RESTORE
])
+dnl
+dnl Check to see if python pretty printing can be activated.
+dnl
+dnl --with-python-dir=dir
+dnl installs directory into $prefix/dir
+AC_DEFUN([GLIBCXX_ENABLE_PYTHON], [
+
+AC_MSG_CHECKING([for custom python install directory])
+AC_ARG_WITH([python-dir],
+ AS_HELP_STRING([--with-python-dir],
+ [the location to install Python modules. This path is relative starting from the prefix.]),
+ [with_python_dir=$withval], [with_python_dir="no"])
+AC_MSG_RESULT(${with_python_dir})
+
+# Needed for installing Python modules during make install.
+python_mod_dir="${with_python_dir}"
+AC_SUBST(python_mod_dir)
+GLIBCXX_CONDITIONAL(ENABLE_PYTHONDIR, test $python_mod_dir != no)
+])
+
+
# Macros from the top-level gcc directory.
m4_include([../config/gc++filt.m4])
m4_include([../config/tls.m4])