summaryrefslogtreecommitdiffstats
path: root/contrib/src/boost/config/select_stdlib_config.hpp
blob: 26b0b666b984ccf29accfb92b2266874f6525e0f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
//  Boost compiler configuration selection header file


//  (C) Copyright John Maddock 2001 - 2003. 

//  (C) Copyright Jens Maurer 2001 - 2002. 

//  Use, modification and distribution are subject to the 

//  Boost Software License, Version 1.0. (See accompanying file 

//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)



//  See http://www.boost.org for most recent version.


// locate which std lib we are using and define BOOST_STDLIB_CONFIG as needed:


// First include <cstddef> to determine if some version of STLport is in use as the std lib

// (do not rely on this header being included since users can short-circuit this header 

//  if they know whose std lib they are using.)

#ifdef __cplusplus

#  include <cstddef>

#else

#  include <stddef.h>

#endif


#if defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)

// STLPort library; this _must_ come first, otherwise since

// STLport typically sits on top of some other library, we

// can end up detecting that first rather than STLport:

#  define BOOST_STDLIB_CONFIG "boost/config/stdlib/stlport.hpp"


#else


// If our std lib was not some version of STLport, and has not otherwise

// been detected, then include <utility> as it is about 

// the smallest of the std lib headers that includes real C++ stuff.

// Some std libs do not include their C++-related macros in <cstddef> 

// so this additional include makes sure we get those definitions.

// Note: do not rely on this header being included since users can short-circuit this 

// #include if they know whose std lib they are using.

#if !defined(__LIBCOMO__) && !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER)\

   && !defined(_LIBCPP_VERSION) && !defined(__GLIBCPP__) && !defined(__GLIBCXX__)\
   && !defined(__STL_CONFIG_H) && !defined(__MSL_CPP__) && !defined(__IBMCPP__)\
   && !defined(MSIPL_COMPILE_H) && !defined(_YVALS) && !defined(_CPPLIB_VER)
#include <utility>

#endif


#if defined(__LIBCOMO__)

// Comeau STL:

#define BOOST_STDLIB_CONFIG "boost/config/stdlib/libcomo.hpp"


#elif defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER)

// Rogue Wave library:

#  define BOOST_STDLIB_CONFIG "boost/config/stdlib/roguewave.hpp"


#elif defined(_LIBCPP_VERSION)

// libc++

#  define BOOST_STDLIB_CONFIG "boost/config/stdlib/libcpp.hpp"


#elif defined(__GLIBCPP__) || defined(__GLIBCXX__)

// GNU libstdc++ 3

#  define BOOST_STDLIB_CONFIG "boost/config/stdlib/libstdcpp3.hpp"


#elif defined(__STL_CONFIG_H)

// generic SGI STL

#  define BOOST_STDLIB_CONFIG "boost/config/stdlib/sgi.hpp"


#elif defined(__MSL_CPP__)

// MSL standard lib:

#  define BOOST_STDLIB_CONFIG "boost/config/stdlib/msl.hpp"


#elif defined(__IBMCPP__)

// take the default VACPP std lib

#  define BOOST_STDLIB_CONFIG "boost/config/stdlib/vacpp.hpp"


#elif defined(MSIPL_COMPILE_H)

// Modena C++ standard library

#  define BOOST_STDLIB_CONFIG "boost/config/stdlib/modena.hpp"


#elif (defined(_YVALS) && !defined(__IBMCPP__)) || defined(_CPPLIB_VER)

// Dinkumware Library (this has to appear after any possible replacement libraries):

#  define BOOST_STDLIB_CONFIG "boost/config/stdlib/dinkumware.hpp"


#elif defined (BOOST_ASSERT_CONFIG)

// this must come last - generate an error if we don't

// recognise the library:

#  error "Unknown standard library - please configure and report the results to boost.org"


#endif


#endif


#if 0

//

// This section allows dependency scanners to find all the files we *might* include:

//

#  include "boost/config/stdlib/stlport.hpp"

#  include "boost/config/stdlib/libcomo.hpp"

#  include "boost/config/stdlib/roguewave.hpp"

#  include "boost/config/stdlib/libcpp.hpp"

#  include "boost/config/stdlib/libstdcpp3.hpp"

#  include "boost/config/stdlib/sgi.hpp"

#  include "boost/config/stdlib/msl.hpp"

#  include "boost/config/stdlib/vacpp.hpp"

#  include "boost/config/stdlib/modena.hpp"

#  include "boost/config/stdlib/dinkumware.hpp"

#endif