• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //
2 //  Copyright (c) 2012 Artyom Beilis (Tonkikh)
3 //  Copyright (c) 2020 Alexander Grund
4 //
5 //  Distributed under the Boost Software License, Version 1.0. (See
6 //  accompanying file LICENSE or copy at
7 //  http://www.boost.org/LICENSE_1_0.txt)
8 //
9 #ifndef NOWIDE_CONFIG_HPP_INCLUDED
10 #define NOWIDE_CONFIG_HPP_INCLUDED
11 
12 #include <boost/nowide/replacement.hpp>
13 
14 // MinGW32 requires a __MSVCRT_VERSION__ defined to make some functions available, e.g. _stat64
15 // Hence define this here to target MSVC 7.0 which has the required functions and do it as early as possible
16 // as including a system header might default this to 0x0600 which is to low
17 #if defined(__MINGW32__) && !defined(__MSVCRT_VERSION__)
18 #define __MSVCRT_VERSION__ 0x0700
19 #endif
20 
21 #if(defined(__WIN32) || defined(_WIN32) || defined(WIN32)) && !defined(__CYGWIN__)
22 #define NOWIDE_WINDOWS
23 #endif
24 
25 #ifdef _MSC_VER
26 #define NOWIDE_MSVC _MSC_VER
27 #endif
28 
29 #ifdef __GNUC__
30 #define BOOST_SYMBOL_VISIBLE __attribute__((__visibility__("default")))
31 #endif
32 
33 #ifndef BOOST_SYMBOL_VISIBLE
34 #define BOOST_SYMBOL_VISIBLE
35 #endif
36 
37 #ifdef NOWIDE_WINDOWS
38 #define BOOST_SYMBOL_EXPORT __declspec(dllexport)
39 #define BOOST_SYMBOL_IMPORT __declspec(dllimport)
40 #else
41 #define BOOST_SYMBOL_EXPORT BOOST_SYMBOL_VISIBLE
42 #define BOOST_SYMBOL_IMPORT
43 #endif
44 
45 #if defined(BOOST_NOWIDE_DYN_LINK)
46 #ifdef BOOST_NOWIDE_SOURCE
47 #define BOOST_NOWIDE_DECL BOOST_SYMBOL_EXPORT
48 #else
49 #define BOOST_NOWIDE_DECL BOOST_SYMBOL_IMPORT
50 #endif // BOOST_NOWIDE_SOURCE
51 #else
52 #define BOOST_NOWIDE_DECL
53 #endif // BOOST_NOWIDE_DYN_LINK
54 
55 #ifndef NOWIDE_DECL
56 #define NOWIDE_DECL
57 #endif
58 
59 #if defined(NOWIDE_WINDOWS)
60 #ifdef BOOST_NOWIDE_USE_FILEBUF_REPLACEMENT
61 #undef BOOST_NOWIDE_USE_FILEBUF_REPLACEMENT
62 #endif
63 #define BOOST_NOWIDE_USE_FILEBUF_REPLACEMENT 1
64 #elif !defined(BOOST_NOWIDE_USE_FILEBUF_REPLACEMENT)
65 #define BOOST_NOWIDE_USE_FILEBUF_REPLACEMENT 0
66 #endif
67 
68 #if defined(__GNUC__) && __GNUC__ >= 7
69 #define BOOST_NOWIDE_FALLTHROUGH __attribute__((fallthrough))
70 #else
71 #define BOOST_NOWIDE_FALLTHROUGH
72 #endif
73 
74 #if defined __GNUC__
75 #define BOOST_LIKELY(x) __builtin_expect(x, 1)
76 #define BOOST_UNLIKELY(x) __builtin_expect(x, 0)
77 #else
78 #if !defined(BOOST_LIKELY)
79 #define BOOST_LIKELY(x) x
80 #endif
81 #if !defined(BOOST_UNLIKELY)
82 #define BOOST_UNLIKELY(x) x
83 #endif
84 #endif
85 
86 #endif
87