]> AND Private Git Repository - canny.git/blob - stc/exp/ml_stc_linux_make_v1.0/include/boost/config/stdlib/libstdcpp3.hpp
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
340e866a6c566c68e108ea6252b955324d5117a7
[canny.git] / stc / exp / ml_stc_linux_make_v1.0 / include / boost / config / stdlib / libstdcpp3.hpp
1 //  (C) Copyright John Maddock 2001.\r
2 //  (C) Copyright Jens Maurer 2001.\r
3 //  Use, modification and distribution are subject to the\r
4 //  Boost Software License, Version 1.0. (See accompanying file\r
5 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)\r
6 \r
7 //  See http://www.boost.org for most recent version.\r
8 \r
9 //  config for libstdc++ v3\r
10 //  not much to go in here:\r
11 \r
12 #ifdef __GLIBCXX__\r
13 #define BOOST_STDLIB "GNU libstdc++ version " BOOST_STRINGIZE(__GLIBCXX__)\r
14 #else\r
15 #define BOOST_STDLIB "GNU libstdc++ version " BOOST_STRINGIZE(__GLIBCPP__)\r
16 #endif\r
17 \r
18 #if !defined(_GLIBCPP_USE_WCHAR_T) && !defined(_GLIBCXX_USE_WCHAR_T)\r
19 #  define BOOST_NO_CWCHAR\r
20 #  define BOOST_NO_CWCTYPE\r
21 #  define BOOST_NO_STD_WSTRING\r
22 #  define BOOST_NO_STD_WSTREAMBUF\r
23 #endif\r
24 \r
25 #if defined(__osf__) && !defined(_REENTRANT) \\r
26   && ( defined(_GLIBCXX_HAVE_GTHR_DEFAULT) || defined(_GLIBCPP_HAVE_GTHR_DEFAULT) )\r
27 // GCC 3 on Tru64 forces the definition of _REENTRANT when any std lib header\r
28 // file is included, therefore for consistency we define it here as well.\r
29 #  define _REENTRANT\r
30 #endif\r
31 \r
32 #ifdef __GLIBCXX__ // gcc 3.4 and greater:\r
33 #  if defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \\r
34         || defined(_GLIBCXX__PTHREADS)\r
35       //\r
36       // If the std lib has thread support turned on, then turn it on in Boost\r
37       // as well.  We do this because some gcc-3.4 std lib headers define _REENTANT\r
38       // while others do not...\r
39       //\r
40 #     define BOOST_HAS_THREADS\r
41 #  else\r
42 #     define BOOST_DISABLE_THREADS\r
43 #  endif\r
44 #elif defined(__GLIBCPP__) \\r
45         && !defined(_GLIBCPP_HAVE_GTHR_DEFAULT) \\r
46         && !defined(_GLIBCPP__PTHREADS)\r
47    // disable thread support if the std lib was built single threaded:\r
48 #  define BOOST_DISABLE_THREADS\r
49 #endif\r
50 \r
51 #if (defined(linux) || defined(__linux) || defined(__linux__)) && defined(__arm__) && defined(_GLIBCPP_HAVE_GTHR_DEFAULT)\r
52 // linux on arm apparently doesn't define _REENTRANT\r
53 // so just turn on threading support whenever the std lib is thread safe:\r
54 #  define BOOST_HAS_THREADS\r
55 #endif\r
56 \r
57 \r
58 #if !defined(_GLIBCPP_USE_LONG_LONG) \\r
59     && !defined(_GLIBCXX_USE_LONG_LONG)\\r
60     && defined(BOOST_HAS_LONG_LONG)\r
61 // May have been set by compiler/*.hpp, but "long long" without library\r
62 // support is useless.\r
63 #  undef BOOST_HAS_LONG_LONG\r
64 #endif\r
65 \r
66 #if defined(__GLIBCXX__) || (defined(__GLIBCPP__) && __GLIBCPP__>=20020514) // GCC >= 3.1.0\r
67 #  define BOOST_STD_EXTENSION_NAMESPACE __gnu_cxx\r
68 #  define BOOST_HAS_SLIST\r
69 #  define BOOST_HAS_HASH\r
70 #  define BOOST_SLIST_HEADER <ext/slist>\r
71 # if !defined(__GNUC__) || __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 3)\r
72 #   define BOOST_HASH_SET_HEADER <ext/hash_set>\r
73 #   define BOOST_HASH_MAP_HEADER <ext/hash_map>\r
74 # else\r
75 #   define BOOST_HASH_SET_HEADER <backward/hash_set>\r
76 #   define BOOST_HASH_MAP_HEADER <backward/hash_map>\r
77 # endif\r
78 #endif\r
79 \r
80 //  stdlibc++ C++0x support is detected via __GNUC__, __GNUC_MINOR__, and possibly\r
81 //  __GNUC_PATCHLEVEL__ at the suggestion of Jonathan Wakely, one of the stdlibc++\r
82 //  developers. He also commented:\r
83 //\r
84 //       "I'm not sure how useful __GLIBCXX__ is for your purposes, for instance in\r
85 //       GCC 4.2.4 it is set to 20080519 but in GCC 4.3.0 it is set to 20080305.\r
86 //       Although 4.3.0 was released earlier than 4.2.4, it has better C++0x support\r
87 //       than any release in the 4.2 series."\r
88 //\r
89 //  Another resource for understanding stdlibc++ features is:\r
90 //  http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#manual.intro.status.standard.200x\r
91 \r
92 //  C++0x headers in GCC 4.3.0 and later\r
93 //\r
94 #if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 3) || !defined(__GXX_EXPERIMENTAL_CXX0X__)\r
95 #  define BOOST_NO_0X_HDR_ARRAY\r
96 #  define BOOST_NO_0X_HDR_RANDOM\r
97 #  define BOOST_NO_0X_HDR_REGEX\r
98 #  define BOOST_NO_0X_HDR_TUPLE\r
99 #  define BOOST_NO_0X_HDR_TYPE_TRAITS\r
100 #  define BOOST_NO_STD_UNORDERED  // deprecated; see following\r
101 #  define BOOST_NO_0X_HDR_UNORDERED_MAP\r
102 #  define BOOST_NO_0X_HDR_UNORDERED_SET\r
103 #endif\r
104 \r
105 //  C++0x headers in GCC 4.4.0 and later\r
106 //\r
107 #if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4) || !defined(__GXX_EXPERIMENTAL_CXX0X__)\r
108 #  define BOOST_NO_0X_HDR_CHRONO\r
109 #  define BOOST_NO_0X_HDR_CONDITION_VARIABLE\r
110 #  define BOOST_NO_0X_HDR_FORWARD_LIST\r
111 #  define BOOST_NO_0X_HDR_INITIALIZER_LIST\r
112 #  define BOOST_NO_0X_HDR_MUTEX\r
113 #  define BOOST_NO_0X_HDR_RATIO\r
114 #  define BOOST_NO_0X_HDR_SYSTEM_ERROR\r
115 #  define BOOST_NO_0X_HDR_THREAD\r
116 #endif\r
117 \r
118 //  C++0x headers not yet implemented\r
119 //\r
120 #  define BOOST_NO_0X_HDR_CODECVT\r
121 #  define BOOST_NO_0X_HDR_CONCEPTS\r
122 #  define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS\r
123 #  define BOOST_NO_0X_HDR_FUTURE\r
124 #  define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS\r
125 #  define BOOST_NO_0X_HDR_MEMORY_CONCEPTS\r
126 \r
127 //  --- end ---\r