__config revision 232972
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
387227825Stheraven#define constexpr const
388227825Stheraven#endif
389227825Stheraven
390227825Stheraven#ifndef __has_feature
391227825Stheraven#define __has_feature(__x) 0
392227825Stheraven#endif
393227825Stheraven
394232950Stheraven#if __has_feature(cxx_explicit_conversions)
395232950Stheraven#   define _LIBCPP_EXPLICIT explicit
396232950Stheraven#else
397232950Stheraven#   define _LIBCPP_EXPLICIT
398232950Stheraven#endif
399232950Stheraven
400232950Stheraven#ifdef _LIBCPP_HAS_NO_STRONG_ENUMS
401232950Stheraven#define _LIBCPP_DECLARE_STRONG_ENUM(x) struct _LIBCPP_VISIBLE x { enum _
402232950Stheraven#define _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(x) \
403232950Stheraven    _ __v_; \
404232950Stheraven    _LIBCPP_ALWAYS_INLINE x(_ __v) : __v_(__v) {} \
405232950Stheraven    _LIBCPP_ALWAYS_INLINE operator int() const {return __v_;} \
406232950Stheraven    };
407232950Stheraven#else  // _LIBCPP_HAS_NO_STRONG_ENUMS
408232950Stheraven#define _LIBCPP_DECLARE_STRONG_ENUM(x) enum class _LIBCPP_VISIBLE x
409232950Stheraven#define _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(x)
410232950Stheraven#endif  // _LIBCPP_HAS_NO_STRONG_ENUMS
411232950Stheraven
412232950Stheraven#if __APPLE__ || __FreeBSD__ || _WIN32 || __sun__
413227825Stheraven#define _LIBCPP_LOCALE__L_EXTENSIONS 1
414227825Stheraven#endif
415227825Stheraven#if __FreeBSD__
416227825Stheraven#define _DECLARE_C99_LDBL_MATH 1
417227825Stheraven#endif
418227825Stheraven
419227825Stheraven#if __APPLE__ || __FreeBSD__
420227825Stheraven#define _LIBCPP_HAS_DEFAULTRUNELOCALE
421227825Stheraven#endif
422227825Stheraven
423232950Stheraven#if __APPLE__ || __FreeBSD__ || __sun__
424227825Stheraven#define _LIBCPP_WCTYPE_IS_MASK
425227825Stheraven#endif
426227825Stheraven
427227825Stheraven#ifdef _LIBCPP_DEBUG2
428227825Stheraven#   if _LIBCPP_DEBUG2 == 0
429227825Stheraven#       define _LIBCPP_DEBUG_LEVEL 1
430227825Stheraven#   elif _LIBCPP_DEBUG2 == 1
431227825Stheraven#       define _LIBCPP_DEBUG_LEVEL 2
432227825Stheraven#   else
433227825Stheraven#       error Supported values for _LIBCPP_DEBUG2 are 0 and 1
434227825Stheraven#   endif
435227825Stheraven#endif
436227825Stheraven
437227825Stheraven#ifdef _LIBCPP_DEBUG2
438227825Stheraven#   include <__debug>
439227825Stheraven#else
440227825Stheraven#   define _LIBCPP_ASSERT(x, m) ((void)0)
441227825Stheraven#endif
442227825Stheraven
443227825Stheraven#endif  // _LIBCPP_CONFIG
444