From 9117e344f034a3f21c35efea7e82f23c2de76010 Mon Sep 17 00:00:00 2001 From: Mike Hommey Date: Thu, 5 May 2011 12:26:32 -0400 Subject: [PATCH] Bug 654493. Detect gcc c++0x headers brokenness and don't use -std=gnu++0x then. r=bsmedberg --- configure.in | 50 ++++++++++++++++++++++++++++++++------------------ 1 file changed, 32 insertions(+), 18 deletions(-) diff --git a/configure.in b/configure.in index 6bbcb975520..cd9c29d404b 100644 --- a/configure.in +++ b/configure.in @@ -2961,11 +2961,43 @@ else AC_MSG_RESULT(no) fi +dnl ======================================================== +dnl C++ rtti +dnl Should be smarter and check that the compiler does indeed have rtti +dnl ======================================================== + +MOZ_ARG_ENABLE_BOOL(cpp-rtti, +[ --enable-cpp-rtti Enable C++ RTTI ], +[ _MOZ_USE_RTTI=1 ], +[ _MOZ_USE_RTTI= ]) + +if test "$_MOZ_USE_RTTI"; then + _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_ON +else + _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_OFF +fi + +AC_SUBST(_MOZ_RTTI_FLAGS_ON) + +dnl Check whether we can use gcc's c++0x mode AC_LANG_CPLUSPLUS if test "$GNU_CXX"; then _SAVE_CXXFLAGS=$CXXFLAGS CXXFLAGS="$CXXFLAGS -std=gnu++0x" + + if test -z "$_MOZ_USE_RTTI"; then + CXXFLAGS="$CXXFLAGS $_MOZ_RTTI_FLAGS" + AC_CACHE_CHECK(for gcc c++0x headers bug without rtti, + ac_cv_cxx0x_headers_bug, + [AC_TRY_COMPILE([#include ], [], + ac_cv_cxx0x_headers_bug="no", + ac_cv_cxx0x_headers_bug="yes")]) + CXXFLAGS="$_SAVE_CXXFLAGS" + if test "$ac_cv_cxx0x_headers_bug" = "no"; then + CXXFLAGS="$CXXFLAGS -std=gnu++0x" + fi + fi fi dnl Check for usable char16_t (2 bytes, unsigned) @@ -7929,24 +7961,6 @@ if test "$ac_nscap_nonconst_opeq_bug" = "yes" ; then fi fi # SKIP_COMPILER_CHECKS -dnl ======================================================== -dnl C++ rtti -dnl Should be smarter and check that the compiler does indeed have rtti -dnl ======================================================== - -MOZ_ARG_ENABLE_BOOL(cpp-rtti, -[ --enable-cpp-rtti Enable C++ RTTI ], -[ _MOZ_USE_RTTI=1 ], -[ _MOZ_USE_RTTI= ]) - -if test "$_MOZ_USE_RTTI"; then - _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_ON -else - _MOZ_RTTI_FLAGS=$_MOZ_RTTI_FLAGS_OFF -fi - -AC_SUBST(_MOZ_RTTI_FLAGS_ON) - dnl ======================================================== dnl C++ exceptions (g++/VC/irix6/Sun only - for now) dnl Should be smarter and check that the compiler does indeed have exceptions