Mercurial > hg > vamp-build-and-test
comparison DEPENDENCIES/generic/include/boost/interprocess/detail/workaround.hpp @ 16:2665513ce2d3
Add boost headers
author | Chris Cannam |
---|---|
date | Tue, 05 Aug 2014 11:11:38 +0100 |
parents | |
children | c530137014c0 |
comparison
equal
deleted
inserted
replaced
15:663ca0da4350 | 16:2665513ce2d3 |
---|---|
1 ////////////////////////////////////////////////////////////////////////////// | |
2 // | |
3 // (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost | |
4 // Software License, Version 1.0. (See accompanying file | |
5 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | |
6 // | |
7 // See http://www.boost.org/libs/interprocess for documentation. | |
8 // | |
9 ////////////////////////////////////////////////////////////////////////////// | |
10 | |
11 #ifndef BOOST_INTERPROCESS_DETAIL_WORKAROUND_HPP | |
12 #define BOOST_INTERPROCESS_DETAIL_WORKAROUND_HPP | |
13 | |
14 #include <boost/interprocess/detail/config_begin.hpp> | |
15 | |
16 #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) | |
17 #define BOOST_INTERPROCESS_WINDOWS | |
18 #define BOOST_INTERPROCESS_FORCE_GENERIC_EMULATION | |
19 #define BOOST_INTERPROCESS_HAS_KERNEL_BOOTTIME | |
20 //Define this to connect with shared memory created with versions < 1.54 | |
21 //#define BOOST_INTERPROCESS_BOOTSTAMP_IS_LASTBOOTUPTIME | |
22 #else | |
23 #include <unistd.h> | |
24 | |
25 #if defined(_POSIX_THREAD_PROCESS_SHARED) && ((_POSIX_THREAD_PROCESS_SHARED - 0) > 0) | |
26 //Cygwin defines _POSIX_THREAD_PROCESS_SHARED but does not implement it. | |
27 #if defined(__CYGWIN__) | |
28 #define BOOST_INTERPROCESS_BUGGY_POSIX_PROCESS_SHARED | |
29 //Mac Os X < Lion (10.7) might define _POSIX_THREAD_PROCESS_SHARED but there is no real support. | |
30 #elif defined(__APPLE__) | |
31 #include "TargetConditionals.h" | |
32 //Check we're on Mac OS target | |
33 #if defined(TARGET_OS_MAC) | |
34 #include "AvailabilityMacros.h" | |
35 //If minimum target for this compilation is older than Mac Os Lion, then we are out of luck | |
36 #if MAC_OS_X_VERSION_MIN_REQUIRED < 1070 | |
37 #define BOOST_INTERPROCESS_BUGGY_POSIX_PROCESS_SHARED | |
38 #endif | |
39 #endif | |
40 #endif | |
41 | |
42 //If buggy _POSIX_THREAD_PROCESS_SHARED is detected avoid using it | |
43 #if defined(BOOST_INTERPROCESS_BUGGY_POSIX_PROCESS_SHARED) | |
44 #undef BOOST_INTERPROCESS_BUGGY_POSIX_PROCESS_SHARED | |
45 #else | |
46 #define BOOST_INTERPROCESS_POSIX_PROCESS_SHARED | |
47 #endif | |
48 #endif | |
49 | |
50 #if defined(_POSIX_BARRIERS) && ((_POSIX_BARRIERS - 0) > 0) | |
51 #define BOOST_INTERPROCESS_POSIX_BARRIERS | |
52 #endif | |
53 | |
54 #if defined(_POSIX_SEMAPHORES) && ((_POSIX_SEMAPHORES - 0) > 0) | |
55 #define BOOST_INTERPROCESS_POSIX_NAMED_SEMAPHORES | |
56 #if defined(__CYGWIN__) | |
57 #define BOOST_INTERPROCESS_POSIX_SEMAPHORES_NO_UNLINK | |
58 #endif | |
59 //Some platforms have a limited (name length) named semaphore support | |
60 #elif (defined(__FreeBSD__) && (__FreeBSD__ >= 4)) || defined(__APPLE__) | |
61 #define BOOST_INTERPROCESS_POSIX_NAMED_SEMAPHORES | |
62 #endif | |
63 | |
64 #if ((defined _V6_ILP32_OFFBIG) &&(_V6_ILP32_OFFBIG - 0 > 0)) ||\ | |
65 ((defined _V6_LP64_OFF64) &&(_V6_LP64_OFF64 - 0 > 0)) ||\ | |
66 ((defined _V6_LPBIG_OFFBIG) &&(_V6_LPBIG_OFFBIG - 0 > 0)) ||\ | |
67 ((defined _XBS5_ILP32_OFFBIG)&&(_XBS5_ILP32_OFFBIG - 0 > 0)) ||\ | |
68 ((defined _XBS5_LP64_OFF64) &&(_XBS5_LP64_OFF64 - 0 > 0)) ||\ | |
69 ((defined _XBS5_LPBIG_OFFBIG)&&(_XBS5_LPBIG_OFFBIG - 0 > 0)) ||\ | |
70 ((defined _FILE_OFFSET_BITS) &&(_FILE_OFFSET_BITS - 0 >= 64))||\ | |
71 ((defined _FILE_OFFSET_BITS) &&(_FILE_OFFSET_BITS - 0 >= 64)) | |
72 #define BOOST_INTERPROCESS_UNIX_64_BIT_OR_BIGGER_OFF_T | |
73 #endif | |
74 | |
75 //Check for XSI shared memory objects. They are available in nearly all UNIX platforms | |
76 #if !defined(__QNXNTO__) | |
77 #define BOOST_INTERPROCESS_XSI_SHARED_MEMORY_OBJECTS | |
78 #endif | |
79 | |
80 #if defined(_POSIX_SHARED_MEMORY_OBJECTS) && ((_POSIX_SHARED_MEMORY_OBJECTS - 0) > 0) | |
81 #define BOOST_INTERPROCESS_POSIX_SHARED_MEMORY_OBJECTS | |
82 #else | |
83 //VMS and MACOS don't define it but they have shm_open/close interface | |
84 #if defined(__vms) | |
85 #if __CRTL_VER >= 70200000 | |
86 #define BOOST_INTERPROCESS_POSIX_SHARED_MEMORY_OBJECTS | |
87 #endif | |
88 //Mac OS has some non-conformant features like names limited to SHM_NAME_MAX | |
89 #elif defined (__APPLE__) | |
90 //#define BOOST_INTERPROCESS_POSIX_SHARED_MEMORY_OBJECTS | |
91 //#define BOOST_INTERPROCESS_POSIX_SHARED_MEMORY_OBJECTS_NO_GROW | |
92 #endif | |
93 #endif | |
94 | |
95 //Now check if we have only XSI shared memory | |
96 #if defined(BOOST_INTERPROCESS_XSI_SHARED_MEMORY_OBJECTS) &&\ | |
97 !defined(BOOST_INTERPROCESS_POSIX_SHARED_MEMORY_OBJECTS) | |
98 //#define BOOST_INTERPROCESS_XSI_SHARED_MEMORY_OBJECTS_ONLY | |
99 #endif | |
100 | |
101 #if defined(_POSIX_TIMEOUTS) && ((_POSIX_TIMEOUTS - 0) > 0) | |
102 #define BOOST_INTERPROCESS_POSIX_TIMEOUTS | |
103 #endif | |
104 | |
105 #ifdef BOOST_INTERPROCESS_POSIX_SHARED_MEMORY_OBJECTS | |
106 //Some systems have filesystem-based resources, so the | |
107 //portable "/shmname" format does not work due to permission issues | |
108 //For those systems we need to form a path to a temporary directory: | |
109 // hp-ux tru64 vms freebsd | |
110 #if defined(__hpux) || defined(__osf__) || defined(__vms) || (defined(__FreeBSD__) && (__FreeBSD__ < 7)) | |
111 #define BOOST_INTERPROCESS_FILESYSTEM_BASED_POSIX_SHARED_MEMORY | |
112 //Some systems have "jailed" environments where shm usage is restricted at runtime | |
113 //and temporary file file based shm is possible in those executions. | |
114 #elif defined(__FreeBSD__) | |
115 #define BOOST_INTERPROCESS_RUNTIME_FILESYSTEM_BASED_POSIX_SHARED_MEMORY | |
116 #endif | |
117 #endif | |
118 | |
119 #ifdef BOOST_INTERPROCESS_POSIX_NAMED_SEMAPHORES | |
120 #if defined(__osf__) || defined(__vms) | |
121 #define BOOST_INTERPROCESS_FILESYSTEM_BASED_POSIX_SEMAPHORES | |
122 #endif | |
123 #endif | |
124 | |
125 #if defined(_POSIX_VERSION) && defined(_XOPEN_VERSION) && \ | |
126 (((_POSIX_VERSION + 0)>= 200112L || (_XOPEN_VERSION + 0)>= 500)) | |
127 #define BOOST_INTERPROCESS_POSIX_RECURSIVE_MUTEXES | |
128 #endif | |
129 | |
130 #if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__) | |
131 #define BOOST_INTERPROCESS_BSD_DERIVATIVE | |
132 //Some *BSD systems (OpenBSD & NetBSD) need sys/param.h before sys/sysctl.h, whereas | |
133 //others (FreeBSD & Darwin) need sys/types.h | |
134 #include <sys/types.h> | |
135 #include <sys/param.h> | |
136 #include <sys/sysctl.h> | |
137 #if defined(CTL_KERN) && defined (KERN_BOOTTIME) | |
138 //#define BOOST_INTERPROCESS_HAS_KERNEL_BOOTTIME | |
139 #endif | |
140 #endif | |
141 #endif //!defined(BOOST_INTERPROCESS_WINDOWS) | |
142 | |
143 #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) | |
144 #define BOOST_INTERPROCESS_PERFECT_FORWARDING | |
145 #endif | |
146 | |
147 //Now declare some Boost.Interprocess features depending on the implementation | |
148 #if defined(BOOST_INTERPROCESS_POSIX_NAMED_SEMAPHORES) && !defined(BOOST_INTERPROCESS_POSIX_SEMAPHORES_NO_UNLINK) | |
149 #define BOOST_INTERPROCESS_NAMED_MUTEX_USES_POSIX_SEMAPHORES | |
150 #define BOOST_INTERPROCESS_NAMED_SEMAPHORE_USES_POSIX_SEMAPHORES | |
151 #endif | |
152 | |
153 // Timeout duration use if BOOST_INTERPROCESS_ENABLE_TIMEOUT_WHEN_LOCKING is set | |
154 #ifndef BOOST_INTERPROCESS_TIMEOUT_WHEN_LOCKING_DURATION_MS | |
155 #define BOOST_INTERPROCESS_TIMEOUT_WHEN_LOCKING_DURATION_MS 10000 | |
156 #endif | |
157 | |
158 //Other switches | |
159 //BOOST_INTERPROCESS_MSG_QUEUE_USES_CIRC_INDEX | |
160 //message queue uses a circular queue as index instead of an array (better performance) | |
161 //Boost version < 1.52 uses an array, so undef this if you want to communicate | |
162 //with processes compiled with those versions. | |
163 #define BOOST_INTERPROCESS_MSG_QUEUE_CIRCULAR_INDEX | |
164 | |
165 //Inline attributes | |
166 #if defined(_MSC_VER) | |
167 #define BOOST_INTERPROCESS_ALWAYS_INLINE __forceinline | |
168 #elif defined (__GNUC__) | |
169 #define BOOST_INTERPROCESS_ALWAYS_INLINE __attribute__((__always_inline__)) | |
170 #else | |
171 #define BOOST_INTERPROCESS_ALWAYS_INLINE inline | |
172 #endif | |
173 | |
174 #if defined(_MSC_VER) | |
175 #define BOOST_INTERPROCESS_NEVER_INLINE __declspec(noinline) | |
176 #elif defined (__GNUC__) | |
177 #define BOOST_INTERPROCESS_NEVER_INLINE __attribute__((__noinline__)) | |
178 #endif | |
179 | |
180 #if defined(BOOST_NO_CXX11_NOEXCEPT) | |
181 #if defined(BOOST_MSVC) | |
182 #define BOOST_INTERPROCESS_NOEXCEPT throw() | |
183 #else | |
184 #define BOOST_INTERPROCESS_NOEXCEPT | |
185 #endif | |
186 #define BOOST_INTERPROCESS_NOEXCEPT_IF(x) | |
187 #else | |
188 #define BOOST_INTERPROCESS_NOEXCEPT noexcept | |
189 #define BOOST_INTERPROCESS_NOEXCEPT_IF(x) noexcept(x) | |
190 #endif | |
191 | |
192 #include <boost/interprocess/detail/config_end.hpp> | |
193 | |
194 #endif //#ifndef BOOST_INTERPROCESS_DETAIL_WORKAROUND_HPP |