1// (C) Copyright Gennadiy Rozental 2001.
2// Distributed under the Boost Software License, Version 1.0.
3// (See accompanying file LICENSE_1_0.txt or copy at
4// http://www.boost.org/LICENSE_1_0.txt)
5
6// See http://www.boost.org/libs/test for the library home page.
7//
8//!@file
9//!@brief a central place for global configuration switches
10// ***************************************************************************
11
12#ifndef BOOST_TEST_CONFIG_HPP_071894GER
13#define BOOST_TEST_CONFIG_HPP_071894GER
14
15// Boost
16#include <boost/config.hpp> // compilers workarounds
17#include <boost/detail/workaround.hpp>
18
19#if defined(_WIN32) && !defined(BOOST_DISABLE_WIN32) && \
20 (!defined(__COMO__) && !defined(__MWERKS__) && \
21 !defined(__GNUC__) && !defined(BOOST_EMBTC) || \
22 BOOST_WORKAROUND(__MWERKS__, >= 0x3000))
23# define BOOST_SEH_BASED_SIGNAL_HANDLING
24#endif
25
26#if defined(__COMO__) && defined(_MSC_VER)
27// eh.h uses type_info without declaring it.
28class type_info;
29# define BOOST_SEH_BASED_SIGNAL_HANDLING
30#endif
31
32//____________________________________________________________________________//
33
34#if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x570)) || \
35 BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) || \
36 (defined __sgi && BOOST_WORKAROUND(_COMPILER_VERSION, BOOST_TESTED_AT(730)))
37# define BOOST_TEST_SHIFTED_LINE
38#endif
39
40//____________________________________________________________________________//
41
42#if defined(BOOST_MSVC) || (defined(__BORLANDC__) && !defined(BOOST_DISABLE_WIN32))
43# define BOOST_TEST_CALL_DECL __cdecl
44#else
45# define BOOST_TEST_CALL_DECL /**/
46#endif
47
48//____________________________________________________________________________//
49
50#if !defined(BOOST_NO_STD_LOCALE) && !defined(__MWERKS__)
51# define BOOST_TEST_USE_STD_LOCALE 1
52#endif
53
54//____________________________________________________________________________//
55
56#if BOOST_WORKAROUND(BOOST_BORLANDC, <= 0x570) || \
57 BOOST_WORKAROUND( __COMO__, <= 0x433 ) || \
58 BOOST_WORKAROUND( __INTEL_COMPILER, <= 800 ) || \
59 defined(__sgi) && _COMPILER_VERSION <= 730 || \
60 BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) || \
61 defined(__DECCXX) || \
62 defined(__DMC__)
63# define BOOST_TEST_NO_PROTECTED_USING
64#endif
65
66//____________________________________________________________________________//
67
68#if BOOST_WORKAROUND(BOOST_MSVC, < 1400)
69#define BOOST_TEST_PROTECTED_VIRTUAL
70#else
71#define BOOST_TEST_PROTECTED_VIRTUAL virtual
72#endif
73
74//____________________________________________________________________________//
75
76#if !defined(BOOST_BORLANDC) && !BOOST_WORKAROUND( __SUNPRO_CC, < 0x5100 )
77#define BOOST_TEST_SUPPORT_TOKEN_ITERATOR 1
78#endif
79
80//____________________________________________________________________________//
81
82// Sun compiler does not support visibility on enums
83#if defined(__SUNPRO_CC)
84#define BOOST_TEST_ENUM_SYMBOL_VISIBLE
85#else
86#define BOOST_TEST_ENUM_SYMBOL_VISIBLE BOOST_SYMBOL_VISIBLE
87#endif
88
89//____________________________________________________________________________//
90
91#if defined(BOOST_ALL_DYN_LINK) && !defined(BOOST_TEST_DYN_LINK)
92# define BOOST_TEST_DYN_LINK
93#endif
94
95// in case any of the define from cmake/b2 is set
96#if !defined(BOOST_TEST_DYN_LINK) \
97 && (defined(BOOST_UNIT_TEST_FRAMEWORK_DYN_LINK) \
98 || defined(BOOST_TEST_EXEC_MONITOR_DYN_LINK) \
99 || defined(BOOST_PRG_EXEC_MONITOR_DYN_LINK) )
100# define BOOST_TEST_DYN_LINK
101#endif
102
103#if defined(BOOST_TEST_INCLUDED)
104# undef BOOST_TEST_DYN_LINK
105#endif
106
107#if defined(BOOST_TEST_DYN_LINK)
108# define BOOST_TEST_ALTERNATIVE_INIT_API
109
110# ifdef BOOST_TEST_SOURCE
111# define BOOST_TEST_DECL BOOST_SYMBOL_EXPORT BOOST_SYMBOL_VISIBLE
112# else
113# define BOOST_TEST_DECL BOOST_SYMBOL_IMPORT BOOST_SYMBOL_VISIBLE
114# endif // BOOST_TEST_SOURCE
115#else
116# if defined(BOOST_TEST_INCLUDED)
117# define BOOST_TEST_DECL
118# else
119# define BOOST_TEST_DECL BOOST_SYMBOL_VISIBLE
120# endif
121#endif
122
123#if !defined(BOOST_TEST_MAIN) && defined(BOOST_AUTO_TEST_MAIN)
124#define BOOST_TEST_MAIN BOOST_AUTO_TEST_MAIN
125#endif
126
127#if !defined(BOOST_TEST_MAIN) && defined(BOOST_TEST_MODULE)
128#define BOOST_TEST_MAIN BOOST_TEST_MODULE
129#endif
130
131
132
133#ifndef BOOST_PP_VARIADICS /* we can change this only if not already defined */
134
135#ifdef __PGI
136#define BOOST_PP_VARIADICS 1
137#endif
138
139#if BOOST_CLANG
140#define BOOST_PP_VARIADICS 1
141#endif
142
143#if defined(BOOST_GCC) && (BOOST_GCC >= 4 * 10000 + 8 * 100)
144#define BOOST_PP_VARIADICS 1
145#endif
146
147#if defined(__NVCC__)
148#define BOOST_PP_VARIADICS 1
149#endif
150
151#endif /* ifndef BOOST_PP_VARIADICS */
152
153// some versions of VC exibit a manifest error with this BOOST_UNREACHABLE_RETURN
154#if BOOST_WORKAROUND(BOOST_MSVC, < 1910)
155# define BOOST_TEST_UNREACHABLE_RETURN(x) return x
156#else
157# define BOOST_TEST_UNREACHABLE_RETURN(x) BOOST_UNREACHABLE_RETURN(x)
158#endif
159
160//____________________________________________________________________________//
161// string_view support
162//____________________________________________________________________________//
163// note the code should always be compatible with compiled version of boost.test
164// using a pre-c++17 compiler
165
166#ifndef BOOST_NO_CXX17_HDR_STRING_VIEW
167#define BOOST_TEST_STRING_VIEW
168#endif
169
170#endif // BOOST_TEST_CONFIG_HPP_071894GER
171

source code of include/boost/test/detail/config.hpp