__config revision 234976
1227825Stheraven// -*- C++ -*- 2227825Stheraven//===--------------------------- __config ---------------------------------===// 3227825Stheraven// 4227825Stheraven// The LLVM Compiler Infrastructure 5227825Stheraven// 6227825Stheraven// This file is dual licensed under the MIT and the University of Illinois Open 7227825Stheraven// Source Licenses. See LICENSE.TXT for details. 8227825Stheraven// 9227825Stheraven//===----------------------------------------------------------------------===// 10227825Stheraven 11227825Stheraven#ifndef _LIBCPP_CONFIG 12227825Stheraven#define _LIBCPP_CONFIG 13227825Stheraven 14227825Stheraven#if !_MSC_VER // explicit macro necessary because it is only defined below in this file 15227825Stheraven#pragma GCC system_header 16227825Stheraven#endif 17227825Stheraven 18227825Stheraven#define _LIBCPP_VERSION 1001 19227825Stheraven 20227825Stheraven#define _LIBCPP_ABI_VERSION 1 21227825Stheraven 22227825Stheraven#define _LIBCPP_CONCAT1(_LIBCPP_X,_LIBCPP_Y) _LIBCPP_X##_LIBCPP_Y 23227825Stheraven#define _LIBCPP_CONCAT(_LIBCPP_X,_LIBCPP_Y) _LIBCPP_CONCAT1(_LIBCPP_X,_LIBCPP_Y) 24227825Stheraven 25227825Stheraven#define _LIBCPP_NAMESPACE _LIBCPP_CONCAT(__,_LIBCPP_ABI_VERSION) 26227825Stheraven 27227825Stheraven#ifdef __LITTLE_ENDIAN__ 28227825Stheraven#if __LITTLE_ENDIAN__ 29227825Stheraven#define _LIBCPP_LITTLE_ENDIAN 1 30227825Stheraven#define _LIBCPP_BIG_ENDIAN 0 31227825Stheraven#endif // __LITTLE_ENDIAN__ 32227825Stheraven#endif // __LITTLE_ENDIAN__ 33227825Stheraven 34227825Stheraven#ifdef __BIG_ENDIAN__ 35227825Stheraven#if __BIG_ENDIAN__ 36227825Stheraven#define _LIBCPP_LITTLE_ENDIAN 0 37227825Stheraven#define _LIBCPP_BIG_ENDIAN 1 38227825Stheraven#endif // __BIG_ENDIAN__ 39227825Stheraven#endif // __BIG_ENDIAN__ 40227825Stheraven 41227825Stheraven#ifdef __FreeBSD__ 42227825Stheraven# include <sys/endian.h> 43227825Stheraven# if _BYTE_ORDER == _LITTLE_ENDIAN 44227825Stheraven# define _LIBCPP_LITTLE_ENDIAN 1 45227825Stheraven# define _LIBCPP_BIG_ENDIAN 0 46227825Stheraven# else // _BYTE_ORDER == _LITTLE_ENDIAN 47227825Stheraven# define _LIBCPP_LITTLE_ENDIAN 0 48227825Stheraven# define _LIBCPP_BIG_ENDIAN 1 49227825Stheraven# endif // _BYTE_ORDER == _LITTLE_ENDIAN 50227825Stheraven#endif // __FreeBSD__ 51227825Stheraven 52227825Stheraven#ifdef _WIN32 53227825Stheraven# define _LIBCPP_LITTLE_ENDIAN 1 54227825Stheraven# define _LIBCPP_BIG_ENDIAN 0 55227825Stheraven// Compiler intrinsics (GCC or MSVC) 56227825Stheraven# if (defined(_MSC_VER) && _MSC_VER >= 1400) || (__GNUC__ >= 4 && __GNUC_MINOR__ > 3) 57227825Stheraven# define _LIBCP_HAS_IS_BASE_OF 58227825Stheraven# endif 59227825Stheraven#endif // _WIN32 60227825Stheraven 61232950Stheraven#ifdef __sun__ 62232950Stheraven# include <sys/isa_defs.h> 63232950Stheraven# ifdef _LITTLE_ENDIAN 64232950Stheraven# define _LIBCPP_LITTLE_ENDIAN 1 65232950Stheraven# define _LIBCPP_BIG_ENDIAN 0 66232950Stheraven# else 67232950Stheraven# define _LIBCPP_LITTLE_ENDIAN 0 68232950Stheraven# define _LIBCPP_BIG_ENDIAN 1 69232950Stheraven# endif 70232950Stheraven#endif // __sun__ 71232950Stheraven 72227825Stheraven#if !defined(_LIBCPP_LITTLE_ENDIAN) || !defined(_LIBCPP_BIG_ENDIAN) 73227825Stheraven# include <endian.h> 74227825Stheraven# if __BYTE_ORDER == __LITTLE_ENDIAN 75227825Stheraven# define _LIBCPP_LITTLE_ENDIAN 1 76227825Stheraven# define _LIBCPP_BIG_ENDIAN 0 77227825Stheraven# elif __BYTE_ORDER == __BIG_ENDIAN 78227825Stheraven# define _LIBCPP_LITTLE_ENDIAN 0 79227825Stheraven# define _LIBCPP_BIG_ENDIAN 1 80227825Stheraven# else // __BYTE_ORDER == __BIG_ENDIAN 81227825Stheraven# error unable to determine endian 82227825Stheraven# endif 83227825Stheraven#endif // !defined(_LIBCPP_LITTLE_ENDIAN) || !defined(_LIBCPP_BIG_ENDIAN) 84227825Stheraven 85227825Stheraven#if _WIN32 86227825Stheraven 87227825Stheraven// only really useful for a DLL 88227825Stheraven#ifdef _LIBCPP_DLL // this should be a compiler builtin define ideally... 89227825Stheraven# ifdef cxx_EXPORTS 90227825Stheraven# define _LIBCPP_HIDDEN 91227825Stheraven# define _LIBCPP_VISIBLE __declspec(dllexport) 92227825Stheraven# else 93227825Stheraven# define _LIBCPP_HIDDEN 94227825Stheraven# define _LIBCPP_VISIBLE __declspec(dllimport) 95227825Stheraven# endif 96227825Stheraven#else 97227825Stheraven# define _LIBCPP_HIDDEN 98227825Stheraven# define _LIBCPP_VISIBLE 99227825Stheraven#endif 100227825Stheraven 101227825Stheraven#ifndef _LIBCPP_INLINE_VISIBILITY 102227825Stheraven# if _MSC_VER 103227825Stheraven# define _LIBCPP_INLINE_VISIBILITY __forceinline 104227825Stheraven# else // MinGW GCC and Clang 105227825Stheraven# define _LIBCPP_INLINE_VISIBILITY __attribute__ ((__always_inline__)) 106227825Stheraven# endif 107227825Stheraven#endif 108227825Stheraven 109227825Stheraven#ifndef _LIBCPP_EXCEPTION_ABI 110227825Stheraven#define _LIBCPP_EXCEPTION_ABI _LIBCPP_VISIBLE 111227825Stheraven#endif 112227825Stheraven 113227825Stheraven#ifndef _LIBCPP_ALWAYS_INLINE 114227825Stheraven# if _MSC_VER 115227825Stheraven# define _LIBCPP_ALWAYS_INLINE __forceinline 116227825Stheraven# endif 117227825Stheraven#endif 118227825Stheraven 119227825Stheraven#endif // _WIN32 120227825Stheraven 121227825Stheraven#ifndef _LIBCPP_HIDDEN 122227825Stheraven#define _LIBCPP_HIDDEN __attribute__ ((__visibility__("hidden"))) 123227825Stheraven#endif 124227825Stheraven 125227825Stheraven#ifndef _LIBCPP_VISIBLE 126227825Stheraven#define _LIBCPP_VISIBLE __attribute__ ((__visibility__("default"))) 127227825Stheraven#endif 128227825Stheraven 129227825Stheraven#ifndef _LIBCPP_INLINE_VISIBILITY 130227825Stheraven#define _LIBCPP_INLINE_VISIBILITY __attribute__ ((__visibility__("hidden"), __always_inline__)) 131227825Stheraven#endif 132227825Stheraven 133227825Stheraven#ifndef _LIBCPP_EXCEPTION_ABI 134227825Stheraven#define _LIBCPP_EXCEPTION_ABI __attribute__ ((__visibility__("default"))) 135227825Stheraven#endif 136227825Stheraven 137227825Stheraven#ifndef _LIBCPP_CANTTHROW 138227825Stheraven#define _LIBCPP_CANTTHROW __attribute__ ((__nothrow__)) 139227825Stheraven#endif 140227825Stheraven 141227825Stheraven#ifndef _LIBCPP_ALWAYS_INLINE 142227825Stheraven#define _LIBCPP_ALWAYS_INLINE __attribute__ ((__visibility__("hidden"), __always_inline__)) 143227825Stheraven#endif 144227825Stheraven 145227825Stheraven#if defined(__clang__) 146227825Stheraven 147227825Stheraven#if __has_feature(cxx_alignas) 148227825Stheraven# define _ALIGNAS(x) alignas(x) 149227825Stheraven#else 150227825Stheraven# define _ALIGNAS(x) __attribute__((__aligned__(x))) 151227825Stheraven#endif 152227825Stheraven 153227825Stheraven#if !__has_feature(cxx_alias_templates) 154227825Stheraven#define _LIBCPP_HAS_NO_TEMPLATE_ALIASES 155227825Stheraven#endif 156227825Stheraven 157227825Stheraven#ifndef __GXX_EXPERIMENTAL_CXX0X__ 158227825Stheraven#ifdef __linux__ 159227825Stheraven#define _LIBCPP_HAS_NO_UNICODE_CHARS 160227825Stheraven#else 161227825Stheraventypedef __char16_t char16_t; 162227825Stheraventypedef __char32_t char32_t; 163227825Stheraven#endif 164227825Stheraven#endif 165227825Stheraven 166227825Stheraven#if !(__has_feature(cxx_exceptions)) 167227825Stheraven#define _LIBCPP_NO_EXCEPTIONS 168227825Stheraven#endif 169227825Stheraven 170227825Stheraven#if !(__has_feature(cxx_rtti)) 171227825Stheraven#define _LIBCPP_NO_RTTI 172227825Stheraven#endif 173227825Stheraven 174232950Stheraven#if !(__has_feature(cxx_strong_enums)) 175232950Stheraven#define _LIBCPP_HAS_NO_STRONG_ENUMS 176232950Stheraven#endif 177232950Stheraven 178227825Stheraven#if !(__has_feature(cxx_decltype)) 179227825Stheraven#define _LIBCPP_HAS_NO_DECLTYPE 180227825Stheraven#endif 181227825Stheraven 182227825Stheraven#if __has_feature(cxx_attributes) 183227825Stheraven# define _ATTRIBUTE(x) [[x]] 184227825Stheraven#else 185227825Stheraven# define _ATTRIBUTE(x) __attribute__ ((x)) 186227825Stheraven#endif 187227825Stheraven 188227825Stheraven#define _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS 189227825Stheraven 190227825Stheraven#if !(__has_feature(cxx_deleted_functions)) 191227825Stheraven#define _LIBCPP_HAS_NO_DELETED_FUNCTIONS 192227825Stheraven#endif // !(__has_feature(cxx_deleted_functions)) 193227825Stheraven 194227825Stheraven#if !(__has_feature(cxx_lambdas)) 195227825Stheraven#define _LIBCPP_HAS_NO_LAMBDAS 196227825Stheraven#endif 197227825Stheraven 198227825Stheraven#if !(__has_feature(cxx_nullptr)) 199227825Stheraven#define _LIBCPP_HAS_NO_NULLPTR 200227825Stheraven#endif 201227825Stheraven 202227825Stheraven#if !(__has_feature(cxx_rvalue_references)) 203227825Stheraven#define _LIBCPP_HAS_NO_RVALUE_REFERENCES 204227825Stheraven#endif 205227825Stheraven 206227825Stheraven#if !(__has_feature(cxx_static_assert)) 207227825Stheraven#define _LIBCPP_HAS_NO_STATIC_ASSERT 208227825Stheraven#endif 209227825Stheraven 210227825Stheraven#if !(__has_feature(cxx_auto_type)) 211227825Stheraven#define _LIBCPP_HAS_NO_AUTO_TYPE 212227825Stheraven#endif 213227825Stheraven 214227825Stheraven#if !(__has_feature(cxx_access_control_sfinae)) || !__has_feature(cxx_trailing_return) 215227825Stheraven#define _LIBCPP_HAS_NO_ADVANCED_SFINAE 216227825Stheraven#endif 217227825Stheraven 218227825Stheraven#if !(__has_feature(cxx_variadic_templates)) 219227825Stheraven#define _LIBCPP_HAS_NO_VARIADICS 220227825Stheraven#endif 221227825Stheraven 222227825Stheraven#if !(__has_feature(cxx_trailing_return)) 223227825Stheraven#define _LIBCPP_HAS_NO_TRAILING_RETURN 224227825Stheraven#endif 225227825Stheraven 226227825Stheraven#if !(__has_feature(cxx_generalized_initializers)) 227227825Stheraven#define _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS 228227825Stheraven#endif 229227825Stheraven 230227825Stheraven#if __has_feature(is_base_of) 231227825Stheraven# define _LIBCP_HAS_IS_BASE_OF 232227825Stheraven#endif 233227825Stheraven 234227825Stheraven// Objective-C++ features (opt-in) 235227825Stheraven#if __has_feature(objc_arc) 236227825Stheraven#define _LIBCPP_HAS_OBJC_ARC 237227825Stheraven#endif 238227825Stheraven 239227825Stheraven#if __has_feature(objc_arc_weak) 240227825Stheraven#define _LIBCPP_HAS_OBJC_ARC_WEAK 241232950Stheraven#define _LIBCPP_HAS_NO_STRONG_ENUMS 242227825Stheraven#endif 243227825Stheraven 244227825Stheraven#if !(__has_feature(cxx_constexpr)) 245227825Stheraven#define _LIBCPP_HAS_NO_CONSTEXPR 246227825Stheraven#endif 247227825Stheraven 248232972Stheraven#if __FreeBSD__ 249232972Stheraven#define _LIBCPP_HAS_QUICK_EXIT 250232972Stheraven#endif 251232972Stheraven 252227825Stheraven#if (__has_feature(cxx_noexcept)) 253227825Stheraven# define _NOEXCEPT noexcept 254227825Stheraven# define _NOEXCEPT_(x) noexcept(x) 255227825Stheraven#else 256227825Stheraven# define _NOEXCEPT throw() 257227825Stheraven# define _NOEXCEPT_(x) 258227825Stheraven#endif 259227825Stheraven 260227825Stheraven#if __has_feature(underlying_type) 261227825Stheraven# define _LIBCXX_UNDERLYING_TYPE(T) __underlying_type(T) 262227825Stheraven#endif 263227825Stheraven 264227825Stheraven// Inline namespaces are available in Clang regardless of C++ dialect. 265227825Stheraven#define _LIBCPP_BEGIN_NAMESPACE_STD namespace std {inline namespace _LIBCPP_NAMESPACE { 266227825Stheraven#define _LIBCPP_END_NAMESPACE_STD } } 267227825Stheraven#define _VSTD std::_LIBCPP_NAMESPACE 268227825Stheraven 269227825Stheravennamespace std { 270227825Stheraven inline namespace _LIBCPP_NAMESPACE { 271227825Stheraven } 272227825Stheraven} 273227825Stheraven 274227825Stheraven#elif defined(__GNUC__) 275227825Stheraven 276227825Stheraven#define _ALIGNAS(x) __attribute__((__aligned__(x))) 277227825Stheraven 278227825Stheraven#define _ATTRIBUTE(x) __attribute__((x)) 279227825Stheraven 280227825Stheraven#if !__EXCEPTIONS 281227825Stheraven#define _LIBCPP_NO_EXCEPTIONS 282227825Stheraven#endif 283227825Stheraven 284227825Stheraven#define _LIBCPP_HAS_NO_TEMPLATE_ALIASES 285227825Stheraven#define _LIBCPP_HAS_NO_CONSTEXPR 286227825Stheraven 287227825Stheraven#define _NOEXCEPT throw() 288227825Stheraven#define _NOEXCEPT_(x) 289227825Stheraven 290227825Stheraven#ifndef __GXX_EXPERIMENTAL_CXX0X__ 291227825Stheraven 292227825Stheraven#define _LIBCPP_HAS_NO_ADVANCED_SFINAE 293227825Stheraven#define _LIBCPP_HAS_NO_DECLTYPE 294227825Stheraven#define _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS 295227825Stheraven#define _LIBCPP_HAS_NO_DELETED_FUNCTIONS 296227825Stheraven#define _LIBCPP_HAS_NO_NULLPTR 297227825Stheraven#define _LIBCPP_HAS_NO_STATIC_ASSERT 298227825Stheraven#define _LIBCPP_HAS_NO_UNICODE_CHARS 299227825Stheraven#define _LIBCPP_HAS_NO_VARIADICS 300227825Stheraven#define _LIBCPP_HAS_NO_RVALUE_REFERENCES 301227825Stheraven#define _LIBCPP_HAS_NO_ALWAYS_INLINE_VARIADICS 302227825Stheraven 303227825Stheraven#else // __GXX_EXPERIMENTAL_CXX0X__ 304227825Stheraven 305227825Stheraven#define _LIBCPP_HAS_NO_TRAILING_RETURN 306227825Stheraven#define _LIBCPP_HAS_NO_ALWAYS_INLINE_VARIADICS 307227825Stheraven 308227825Stheraven#if !(__GNUC__ >= 4 && __GNUC_MINOR__ >= 3) 309227825Stheraven#define _LIBCPP_HAS_NO_RVALUE_REFERENCES 310227825Stheraven#endif 311227825Stheraven 312227825Stheraven#if !(__GNUC__ >= 4 && __GNUC_MINOR__ >= 3) 313227825Stheraven#define _LIBCPP_HAS_NO_STATIC_ASSERT 314227825Stheraven#endif 315227825Stheraven 316227825Stheraven#if !(__GNUC__ >= 4 && __GNUC_MINOR__ >= 4) 317227825Stheraven#define _LIBCPP_HAS_NO_ADVANCED_SFINAE 318227825Stheraven#define _LIBCPP_HAS_NO_DECLTYPE 319227825Stheraven#define _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS 320227825Stheraven#define _LIBCPP_HAS_NO_DELETED_FUNCTIONS 321227825Stheraven#define _LIBCPP_HAS_NO_UNICODE_CHARS 322227825Stheraven#define _LIBCPP_HAS_NO_VARIADICS 323227825Stheraven#define _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS 324227825Stheraven#endif // !(__GNUC__ >= 4 && __GNUC_MINOR__ >= 4) 325227825Stheraven 326227825Stheraven#if !(__GNUC__ >= 4 && __GNUC_MINOR__ >= 6) 327227825Stheraven#define _LIBCPP_HAS_NO_NULLPTR 328227825Stheraven#endif 329227825Stheraven 330227825Stheraven#endif // __GXX_EXPERIMENTAL_CXX0X__ 331227825Stheraven 332227825Stheraven#define _LIBCPP_BEGIN_NAMESPACE_STD namespace std { namespace _LIBCPP_NAMESPACE { 333227825Stheraven#define _LIBCPP_END_NAMESPACE_STD } } 334227825Stheraven#define _VSTD std::_LIBCPP_NAMESPACE 335227825Stheraven 336227825Stheravennamespace std { 337227825Stheravennamespace _LIBCPP_NAMESPACE { 338227825Stheraven} 339227825Stheravenusing namespace _LIBCPP_NAMESPACE __attribute__((__strong__)); 340227825Stheraven} 341227825Stheraven 342227825Stheraven#elif defined(_MSC_VER) 343227825Stheraven 344227825Stheraven#define _LIBCPP_HAS_NO_TEMPLATE_ALIASES 345227825Stheraven#define _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER 346227825Stheraven#define _LIBCPP_HAS_NO_CONSTEXPR 347227825Stheraven#define _LIBCPP_HAS_NO_UNICODE_CHARS 348227825Stheraven#define _LIBCPP_HAS_NO_DELETED_FUNCTIONS 349227825Stheraven#define __alignof__ __alignof 350227825Stheraven#define _ATTRIBUTE __declspec 351227825Stheraven#define _ALIGNAS(x) __declspec(align(x)) 352227825Stheraven#define _LIBCPP_HAS_NO_VARIADICS 353227825Stheraven 354227825Stheraven#define _NOEXCEPT throw() 355227825Stheraven#define _NOEXCEPT_(x) 356227825Stheraven 357227825Stheraven#define _LIBCPP_BEGIN_NAMESPACE_STD namespace std { 358227825Stheraven#define _LIBCPP_END_NAMESPACE_STD } 359227825Stheraven#define _VSTD std 360227825Stheraven 361227825Stheravennamespace std { 362227825Stheraven} 363227825Stheraven 364227825Stheraven#endif // __clang__ || __GNUC___ || _MSC_VER 365227825Stheraven 366227825Stheraven#ifdef _LIBCPP_HAS_NO_UNICODE_CHARS 367227825Stheraventypedef unsigned short char16_t; 368227825Stheraventypedef unsigned int char32_t; 369227825Stheraven#endif // _LIBCPP_HAS_NO_UNICODE_CHARS 370227825Stheraven 371227825Stheraven#ifdef _LIBCPP_HAS_NO_STATIC_ASSERT 372227825Stheraven 373227825Stheraventemplate <bool> struct __static_assert_test; 374227825Stheraventemplate <> struct __static_assert_test<true> {}; 375227825Stheraventemplate <unsigned> struct __static_assert_check {}; 376227825Stheraven#define static_assert(__b, __m) \ 377227825Stheraven typedef __static_assert_check<sizeof(__static_assert_test<(__b)>)> \ 378227825Stheraven _LIBCPP_CONCAT(__t, __LINE__) 379227825Stheraven 380227825Stheraven#endif // _LIBCPP_HAS_NO_STATIC_ASSERT 381227825Stheraven 382227825Stheraven#ifdef _LIBCPP_HAS_NO_DECLTYPE 383227825Stheraven#define decltype(x) __typeof__(x) 384227825Stheraven#endif 385227825Stheraven 386227825Stheraven#ifdef _LIBCPP_HAS_NO_CONSTEXPR 387234976Stheraven#define _LIBCPP_CONSTEXPR 388234976Stheraven#else 389234976Stheraven#define _LIBCPP_CONSTEXPR constexpr 390227825Stheraven#endif 391227825Stheraven 392227825Stheraven#ifndef __has_feature 393227825Stheraven#define __has_feature(__x) 0 394227825Stheraven#endif 395227825Stheraven 396232950Stheraven#if __has_feature(cxx_explicit_conversions) 397232950Stheraven# define _LIBCPP_EXPLICIT explicit 398232950Stheraven#else 399232950Stheraven# define _LIBCPP_EXPLICIT 400232950Stheraven#endif 401232950Stheraven 402232950Stheraven#ifdef _LIBCPP_HAS_NO_STRONG_ENUMS 403232950Stheraven#define _LIBCPP_DECLARE_STRONG_ENUM(x) struct _LIBCPP_VISIBLE x { enum _ 404232950Stheraven#define _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(x) \ 405232950Stheraven _ __v_; \ 406232950Stheraven _LIBCPP_ALWAYS_INLINE x(_ __v) : __v_(__v) {} \ 407232950Stheraven _LIBCPP_ALWAYS_INLINE operator int() const {return __v_;} \ 408232950Stheraven }; 409232950Stheraven#else // _LIBCPP_HAS_NO_STRONG_ENUMS 410232950Stheraven#define _LIBCPP_DECLARE_STRONG_ENUM(x) enum class _LIBCPP_VISIBLE x 411232950Stheraven#define _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(x) 412232950Stheraven#endif // _LIBCPP_HAS_NO_STRONG_ENUMS 413232950Stheraven 414232950Stheraven#if __APPLE__ || __FreeBSD__ || _WIN32 || __sun__ 415227825Stheraven#define _LIBCPP_LOCALE__L_EXTENSIONS 1 416227825Stheraven#endif 417227825Stheraven#if __FreeBSD__ 418227825Stheraven#define _DECLARE_C99_LDBL_MATH 1 419227825Stheraven#endif 420227825Stheraven 421227825Stheraven#if __APPLE__ || __FreeBSD__ 422227825Stheraven#define _LIBCPP_HAS_DEFAULTRUNELOCALE 423227825Stheraven#endif 424227825Stheraven 425232950Stheraven#if __APPLE__ || __FreeBSD__ || __sun__ 426227825Stheraven#define _LIBCPP_WCTYPE_IS_MASK 427227825Stheraven#endif 428227825Stheraven 429227825Stheraven#ifdef _LIBCPP_DEBUG2 430227825Stheraven# if _LIBCPP_DEBUG2 == 0 431227825Stheraven# define _LIBCPP_DEBUG_LEVEL 1 432227825Stheraven# elif _LIBCPP_DEBUG2 == 1 433227825Stheraven# define _LIBCPP_DEBUG_LEVEL 2 434227825Stheraven# else 435227825Stheraven# error Supported values for _LIBCPP_DEBUG2 are 0 and 1 436227825Stheraven# endif 437227825Stheraven#endif 438227825Stheraven 439227825Stheraven#ifdef _LIBCPP_DEBUG2 440227825Stheraven# include <__debug> 441227825Stheraven#else 442227825Stheraven# define _LIBCPP_ASSERT(x, m) ((void)0) 443227825Stheraven#endif 444227825Stheraven 445227825Stheraven#endif // _LIBCPP_CONFIG 446