1 // STLport configuration file
2 // It is internal STLport header - DO NOT include it directly
3 // Microsoft Visual C++ 4.0, 4.1, 4.2, 5.0, 6.0, 7.0, 7.1, ICL
6 // Common features for VC++ 4.0 and higher
8 # define _STLP_NATIVE_HEADER(x) <../crt/##x>
9 # define _STLP_NATIVE_C_HEADER(x) <../crt/##x>
10 # define _STLP_NATIVE_CPP_C_HEADER(x) <../crt/##x>
11 # define _STLP_NATIVE_OLD_STREAMS_HEADER(x) <../crt/##x>
12 # define _STLP_NATIVE_CPP_RUNTIME_HEADER(header) <../crt/##header>
13 # define _STLP_GLOBAL_NEW_HANDLER
15 # define _STLP_NATIVE_HEADER(x) <../include/##x>
16 # define _STLP_NATIVE_C_HEADER(x) <../include/##x>
17 # define _STLP_NATIVE_CPP_C_HEADER(x) <../include/##x>
18 # define _STLP_NATIVE_OLD_STREAMS_HEADER(x) <../include/##x>
19 # define _STLP_NATIVE_CPP_RUNTIME_HEADER(header) <../include/##header>
22 # define _STLP_CALL __cdecl
24 # ifndef _STLP_LONG_LONG
25 # define _STLP_LONG_LONG __int64
28 # define _STLP_PRAGMA_ONCE
30 // these switches depend on compiler flags
32 # define _STLP_HAS_NO_EXCEPTIONS 1
35 # define _STLP_VENDOR_UNEXPECTED_STD
37 # if defined ( _MT ) && !defined (_STLP_NO_THREADS) && !defined (_REENTRANT) && !defined(__WINS__)
41 # if !defined (_NATIVE_WCHAR_T_DEFINED)
42 # define _STLP_WCHAR_T_IS_USHORT 1
45 # define _STLP_MINIMUM_IMPORT_STD
49 # ifndef _STLP_MSVC50_COMPATIBILITY
50 # define _STLP_MSVC50_COMPATIBILITY 1
53 # define _STLP_DLLEXPORT_NEEDS_PREDECLARATION 1
54 # define _STLP_HAS_SPECIFIC_PROLOG_EPILOG
56 // # ifndef __BUILDING_STLPORT
57 // # define _STLP_USE_TEMPLATE_EXPORT 1
60 # if (_STLP_MSVC >= 1310)
61 # define _STLP_NO_METHOD_SPECIALIZATION 1
62 # endif // (_STLP_MSVC >= 1310)
64 # if (_STLP_MSVC > 1100)
65 typedef char __stl_char;
66 # define _STLP_DEFAULTCHAR __stl_char
67 # endif /* (_STLP_MSVC < 1100 ) */
69 # if (_STLP_MSVC <= 1310)
70 # define _STLP_STATIC_CONST_INIT_BUG 1
71 # endif // (_STLP_MSVC <= 1310)
73 # if (_STLP_MSVC <= 1300)
74 # define _STLP_DEFAULT_CONSTRUCTOR_BUG 1
76 # define _STLP_NO_TYPENAME_IN_TEMPLATE_HEADER
77 // fails to properly resolve call to sin() from within sin()
78 # define _STLP_SAME_FUNCTION_NAME_RESOLUTION_BUG
79 # define _STLP_NO_TYPENAME_ON_RETURN_TYPE 1
80 // boris : not defining this macro for SP5 causes other problems
81 // # if !defined (_MSC_FULL_VER) || (_MSC_FULL_VER < 12008804 )
82 # define _STLP_NO_USING_FOR_GLOBAL_FUNCTIONS 1
84 # define _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER 1
85 # define _STLP_NO_CLASS_PARTIAL_SPECIALIZATION 1
86 # define _STLP_NO_FRIEND_TEMPLATES
87 // VC++ cannot handle default allocator argument in template constructors
88 # define _STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS
89 // there is no partial spec, and MSVC breaks on simulating it for iterator_traits queries
90 # define _STLP_USE_OLD_HP_ITERATOR_QUERIES
91 // # define _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS 1
92 # define _STLP_NO_QUALIFIED_FRIENDS 1
93 # define _STLP_DONT_USE_BOOL_TYPEDEF 1
94 # endif /* _STLP_MSVC <= 1300 */
96 # endif /* _STLP_MSVC */
98 # if (_MSC_VER <= 1310)
99 # define _STLP_VENDOR_GLOBAL_CSTD
100 // They included the necessary coding,
101 // but the beta still has an issue with template classes
102 // ok: class a { static const int v = 2; };
103 // error: template <class _Tp> class a { static const int v = 2; };
104 # if !defined (_STLP_WHOLE_NATIVE_STD) && ! defined (_STLP_REDEFINE_STD)
105 # define _STLP_REDEFINE_STD
107 # endif /* (_MSC_VER <= 1310) */
109 # if (_MSC_VER <= 1200) // including MSVC 6.0
110 // these work, as long they are inline
111 # define _STLP_INLINE_MEMBER_TEMPLATES 1
112 # define _STLP_NO_MEMBER_TEMPLATE_KEYWORD 1
113 # define _STLP_GLOBAL_NEW_HANDLER
114 # define _STLP_DONT_RETURN_VOID 1
115 # define _STLP_DONT_USE_NESTED_TCLASS_THROUGHT_TPARAM 1
116 # endif /* (_MSC_VER <= 1200) */
118 # if ( _MSC_VER<=1010 )
119 // "bool" is reserved in MSVC 4.1 while <yvals.h> absent, so :
120 // # define _STLP_USE_ABBREVS 1
121 # define _STLP_NO_BAD_ALLOC
122 # define _STLP_HAS_NO_NEW_C_HEADERS 1
123 # define _STLP_NO_NEW_NEW_HEADER 1
124 # elif (_MSC_VER < 1100)
125 // VC++ 4.2 and higher
126 # define _STLP_YVALS_H 1
127 # define _STLP_HAS_NO_NEW_IOSTREAMS 1
130 # if defined (_STLP_MSVC) && ( _STLP_MSVC < 1200 ) /* VC++ 6.0 */
131 // # define _STLP_NO_MEMBER_TEMPLATES 1
132 // # define _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS 1
133 # define _STLP_NON_TYPE_TMPL_PARAM_BUG 1
134 # define _STLP_THROW_RETURN_BUG 1
135 # define _STLP_NO_MEMBER_TEMPLATE_CLASSES 1
138 # if defined (_STLP_MSVC) && ( _STLP_MSVC < 1100 )
139 # ifndef _STLP_NO_OWN_IOSTREAMS
140 # define _STLP_NO_OWN_IOSTREAMS
141 # undef _STLP_OWN_IOSTREAMS
143 // # define _STLP_NESTED_TYPE_PARAM_BUG 1
144 // Debug mode does not work for 4.2
146 # pragma message ("STLport debug mode does not work for VC++ 4.2, turning _STLP_DEBUG off ...")
149 # define _STLP_NO_BOOL 1
150 # define _STLP_NEED_TYPENAME 1
151 # define _STLP_NEED_EXPLICIT 1
152 # define _STLP_NEED_MUTABLE 1
153 # define _STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX
154 # define _STLP_LIMITED_DEFAULT_TEMPLATES 1
156 // up to 4.2, library is in global namespace
157 # define _STLP_VENDOR_GLOBAL_STD
158 # define _STLP_NONTEMPL_BASE_MATCH_BUG 1
159 # define _STLP_BROKEN_USING_DIRECTIVE 1
160 # define _STLP_NO_ARROW_OPERATOR
161 # define _STLP_NO_SIGNED_BUILTINS 1
162 # define _STLP_NO_EXCEPTION_SPEC 1
163 # undef _STLP_DEFAULT_TYPE_PARAM
164 # undef _STLP_HAS_NO_NAMESPACES
165 # undef _STLP_NO_AT_MEMBER_FUNCTION
166 # undef _STLP_NO_MEMBER_TEMPLATES
167 # undef _STLP_NO_MEMBER_TEMPLATE_CLASSES
168 # define _STLP_HAS_NO_NAMESPACES 1
169 # define _STLP_NO_AT_MEMBER_FUNCTION 1
170 # define _STLP_NO_MEMBER_TEMPLATES
171 # define _STLP_NO_MEMBER_TEMPLATE_CLASSES
174 // If we are under Windows CE, include appropriate config
177 # include <config/stl_wince.h>
181 # define _STLP_LIB_BASENAME "stlport_icl"
183 # if (_MSC_VER >= 1310)
184 # define _STLP_LIB_BASENAME "stlport_vc71"
185 # elif (_MSC_VER >= 1300)
186 # define _STLP_LIB_BASENAME "stlport_vc7"
187 # elif (_MSC_VER >= 1200)
188 # define _STLP_LIB_BASENAME "stlport_vc6"
190 # elif (_MSC_VER >= 1100)
192 //# define _STLP_LIB_BASENAME "stlport_vc5_unicode"
194 # define _STLP_LIB_BASENAME "stlport_vc5"
196 # endif /* (_MSC_VER >= 1200) */
200 # if (defined (__ICL) && (__ICL < 450)) || (_MSC_VER < 1200)
201 // only static STLport lib now works for ICL and VC 5.0
202 # undef _STLP_USE_STATIC_LIB
203 # define _STLP_USE_STATIC_LIB
204 // disable hook which makes template symbols to be searched for in the library
205 # undef _STLP_NO_CUSTOM_IO
208 #if defined (__WINS__)
213 # ifdef _STLP_PTHREADS
214 # undef _STLP_PTHREADS
216 # ifdef _STLP_THREADS
217 # undef _STLP_THREADS
220 # undef _STLP_NATIVE_C_HEADER
221 # define _STLP_NATIVE_C_HEADER(x) <libc/##x>
223 # define _STLP_NO_NEW_HEADER
224 # define _STLP_HAS_NO_NEW_C_HEADERS 1
225 # define _STLP_NO_THREADS
226 # define _STLP_NO_EXCEPTIONS
227 # define _STLP_USE_TRAP_LEAVE
228 # define _STLP_NO_EXCEPTION_HEADER
229 // # define _STLP_NO_WCHAR_T
230 # define _STLP_NO_IOSTREAMS
231 # define _STLP_NO_OWN_IOSTREAMS
232 # undef _STLP_OWN_IOSTREAMS
234 # define _STLP_USE_NEWALLOC
235 # define _STLP_NO_NODE_ALLOC
236 # define _STLP_LITTLE_ENDIAN
237 # define _STLP_NO_LONG_DOUBLE
240 # define _STLP_NO_NAMESPACES
241 # define _STLP_CONST_CONSTRUCTOR_BUG
242 //# define _STLP_IMPLICIT_STRING_TO_DESC
243 // # define _STLP_MULTI_CONST_TEMPLATE_ARG_BUG
246 # include <config/vc_select_lib.h>