--- config/stl-headers +++ config/stl-headers @@ -29,16 +29,17 @@ iterator limits list map memory ostream set stack string +type_traits utility vector cassert climits cmath cstdarg cstdio cstdlib --- config/system-headers +++ config/system-headers @@ -1109,16 +1109,17 @@ ThreadManagerTests.h Threads.h time.h Timer.h tlhelp32.h ToolUtils.h tr1/functional trace.h Traps.h +type_traits typeinfo types.h Types.h UAppleEventsMgr.h UAttachments.h ucontext.h uconv.h UCursor.h --- gfx/skia/skia/include/config/SkUserConfig.h +++ gfx/skia/skia/include/config/SkUserConfig.h @@ -159,9 +159,20 @@ #ifndef MOZ_IMPLICIT # ifdef MOZ_CLANG_PLUGIN # define MOZ_IMPLICIT __attribute__((annotate("moz_implicit"))) # else # define MOZ_IMPLICIT # endif #endif +/* Check if building with either MSVC, libc++, or a sufficiently recent version of libstdc++. ++ * On platforms like OS X 10.6 or older Android SDKs, we need to work around a lack of certain ++ * C++11 features. ++ */ +#include "mozilla/Compiler.h" +#if MOZ_IS_MSVC || MOZ_USING_LIBCXX || MOZ_LIBSTDCXX_VERSION_AT_LEAST(4, 8, 0) +# define MOZ_SKIA_AVOID_CXX11 0 +#else +# define MOZ_SKIA_AVOID_CXX11 1 #endif + +#endif --- gfx/skia/skia/include/private/SkTLogic.h +++ gfx/skia/skia/include/private/SkTLogic.h @@ -24,7 +24,7 @@ #include #endif -#ifdef MOZ_SKIA +#if MOZ_SKIA_AVOID_CXX11 #include "mozilla/Move.h" #include "mozilla/TypeTraits.h" @@ -32,23 +32,9 @@ #include "mozilla/Function.h" #endif -// In libc++, symbols such as std::forward may be defined in std::__1. -// The _LIBCPP_BEGIN_NAMESPACE_STD and _LIBCPP_END_NAMESPACE_STD macros -// will expand to the correct namespace. -#ifdef _LIBCPP_BEGIN_NAMESPACE_STD -#define MOZ_BEGIN_STD_NAMESPACE _LIBCPP_BEGIN_NAMESPACE_STD -#define MOZ_END_STD_NAMESPACE _LIBCPP_END_NAMESPACE_STD -#else -#define MOZ_BEGIN_STD_NAMESPACE namespace std { -#define MOZ_END_STD_NAMESPACE } -#endif - -MOZ_BEGIN_STD_NAMESPACE +namespace std { using mozilla::Forward; #define forward Forward -MOZ_END_STD_NAMESPACE - -namespace std { #if SKIA_IMPLEMENTATION using mozilla::IntegralConstant; using mozilla::IsEmpty; @@ -73,7 +59,7 @@ template usi } -#else /* !MOZ_SKIA */ +#else /* !MOZ_SKIA_AVOID_CXX11 */ #include #include @@ -178,7 +164,7 @@ template using } // namespace sknonstd -#endif /* MOZ_SKIA */ +#endif /* MOZ_SKIA_AVOID_CXX11 */ // Just a pithier wrapper for enable_if_t. #define SK_WHEN(condition, T) skstd::enable_if_t --- gfx/skia/skia/include/private/SkUniquePtr.h +++ gfx/skia/skia/include/private/SkUniquePtr.h @@ -7,17 +7,17 @@ #ifndef SkUniquePtr_DEFINED #define SkUniquePtr_DEFINED #include "SkTLogic.h" #include #include -#ifdef MOZ_SKIA +#if MOZ_SKIA_AVOID_CXX11 #include "mozilla/UniquePtr.h" namespace std { using mozilla::DefaultDelete; using mozilla::UniquePtr; } namespace skstd {