19720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// STLport configuration file for Digital Mars C++
29720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
3e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#define _STLP_COMPILER __DMC_VERSION_STRING__
49720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
5e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if (__DMC__ < 0x849)
6e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  error "Digital Mars C++ compilers before version 8.49 are not supported!"
79720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
89720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
9e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* DMC goes too far in template instanciation and tries to fully instanciate
10e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * slist<pair<const int, string> > for instance. The generation of assignment
11e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * operator fails of course so we are force to use mutable key for this compiler.
12e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */
13e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#define _STLP_NO_CONST_IN_PAIR
14e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#define _STLP_DONT_SUP_DFLT_PARAM
159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _CPPUNWIND
179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_NO_EXCEPTIONS
189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
19e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
20e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#ifndef _CPPRTTI
21e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  define _STLP_NO_RTTI
22e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif
23e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_VENDOR_GLOBAL_CSTD
259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block//DMC prefer enum to real static const variable because it do not consider
279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block//static const as const enough to be used in switch declaration...
289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_STATIC_CONST_INIT_BUG
299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_WIN32)
319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// it's not fully supported on non-Win32 platforms
329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_NO_NATIVE_WIDE_FUNCTIONS
339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* _STLP_NO_OWN_NAMESPACE is defined because Digital Mars' linker and libarian
369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   appear to have problems with STLport namespaces. Summary of the issues:
379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   STATIC: Digital Mars' librarian (lib.exe) may fail with "len <= IDMAX" error
399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   if _STLP_DEBUG is defined.  This is because Digital Mars' librarian uses
409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   Microsoft OMF format, which limits identifier length to about 512 bytes.
419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   With STLport namespaces, some identifiers such as Category_Map in
429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   src/locale_catalog.cpp may exceed the maximum OMF identifier length.
439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   DYNAMIC: Export issues with cin, cout, cerr, clog in src/iostream.cpp.
459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   Exports in Digital Mars 'def' file must match mangled names in iostream.cpp.
469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   With STLport namespaces, the mangled names in the intermediate files no
479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   longer match these pre-defined exports. To use STLport dynamic libraries
489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   and STLport namespaces with Digital Mars, the pre-defined exports in
499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   src/iostream.cpp and the related Digital Mars 'def' files would need to be
509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   revised. */
519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_NO_OWN_NAMESPACE 1
529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// select threads strategy
54e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (_MT) && !defined (_STLP_NO_THREADS)
55e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  define _STLP_THREADS
569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _BOOL_DEFINED
599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_NO_BOOL
609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else
619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_DONT_USE_BOOL_TYPEDEF
629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if _INTEGRAL_MAX_BITS >= 64
659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_LONG_LONG long long
669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
68e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#define _STLP_MARK_PARAMETER_AS_UNUSED(X)
699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_DONT_USE_PRIV_NAMESPACE
70e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#define _STLP_PRIV
719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_THROW_RETURN_BUG
729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_DLL)
749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  undef _STLP_NO_UNEXPECTED_EXCEPT_SUPPORT
759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
77e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if (__DMC__ < 0x849)
78e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  define _STLP_NO_BAD_ALLOC
79e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif
80e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_USE_ABBREVS
829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER
839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
84e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#define _STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND
859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_EXPORT_DECLSPEC __declspec(dllexport)
869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_IMPORT_DECLSPEC __declspec(dllimport)
879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_CLASS_EXPORT_DECLSPEC __declspec(dllexport)
899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_CLASS_IMPORT_DECLSPEC __declspec(dllimport)
909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
91e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#define _STLP_NEED_ADDITIONAL_STATIC_DECLSPEC
92e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
93e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott//#define _STLP_IMPORT_TEMPLATE_KEYWORD __declspec(dllimport)
94e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott//#define _STLP_EXPORT_TEMPLATE_KEYWORD __declspec(dllexport)
959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_WINDLL)
979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_DLL
989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_DLL)
1009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_RUNTIME_DLL
1019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
1029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#include <stl/config/_detect_dll_or_lib.h>
1039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef _STLP_RUNTIME_DLL
1049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef _STLP_DLL
1059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_USE_DYNAMIC_LIB)
1079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_USE_DECLSPEC 1
1089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if defined (__BUILDING_STLPORT)
1099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_CALL __export
1109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  else
1119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_CALL
1129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
1139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else
1149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_CALL
1159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
1169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#include <stl/config/_auto_link.h>
1189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
119e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#undef __SC__
1209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
121e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include <stl/config/_feedback.h>
122