USRP Hardware Driver and USRP Manual  Version: 4.8.0.0
UHD and USRP Manual
config.hpp
Go to the documentation of this file.
1 //
2 // Copyright 2010-2011,2014-2016 Ettus Research LLC
3 // Copyright 2018 Ettus Research, a National Instruments Company
4 //
5 // SPDX-License-Identifier: GPL-3.0-or-later
6 //
7 
8 #pragma once
9 
10 #include <boost/config.hpp>
11 #include <boost/version.hpp>
12 
13 #ifdef BOOST_MSVC
14 // suppress warnings
15 //# pragma warning(push)
16 //# pragma warning(disable: 4511) // copy constructor can't not be generated
17 //# pragma warning(disable: 4512) // assignment operator can't not be generated
18 //# pragma warning(disable: 4100) // unreferenced formal parameter
19 //# pragma warning(disable: 4996) // <symbol> was declared deprecated
20 # pragma warning(disable : 4355) // 'this' : used in base member initializer list
21 //# pragma warning(disable: 4706) // assignment within conditional expression
22 # pragma warning(disable : 4251) // class 'A<T>' needs to have dll-interface to be used
23  // by clients of class 'B'
24 //# pragma warning(disable: 4127) // conditional expression is constant
25 //# pragma warning(disable: 4290) // C++ exception specification ignored except to ...
26 //# pragma warning(disable: 4180) // qualifier applied to function type has no meaning;
27 // ignored
28 # pragma warning(disable : 4275) // non dll-interface class ... used as base for
29  // dll-interface class ...
30 //# pragma warning(disable: 4267) // 'var' : conversion from 'size_t' to 'type', possible
31 // loss of data # pragma warning(disable: 4511) // 'class' : copy constructor could not be
32 // generated
33 # pragma warning(disable : 4250) // 'class' : inherits 'method' via dominance
34 # pragma warning( \
35  disable : 4200) // nonstandard extension used : zero-sized array in struct/union
36 
37 // define logical operators
38 # include <ciso646>
39 
40 // define ssize_t
41 # ifndef _SSIZE_T_DEFINED
42 # define _SSIZE_T_DEFINED
43 # include <BaseTsd.h>
44 typedef SSIZE_T ssize_t;
45 # endif /* _SSIZE_T_DEFINED */
46 
47 #endif // BOOST_MSVC
48 
49 // define cross platform attribute macros
50 #if defined(BOOST_MSVC)
51 # define UHD_EXPORT __declspec(dllexport)
52 # define UHD_IMPORT __declspec(dllimport)
53 # define UHD_EXPORT_HEADER
54 # define UHD_IMPORT_HEADER
55 # define UHD_INLINE __forceinline
56 # define UHD_FORCE_INLINE __forceinline
57 # define UHD_DEPRECATED __declspec(deprecated)
58 # define UHD_ALIGNED(x) __declspec(align(x))
59 # define UHD_UNUSED(x) x
60 # define UHD_FALLTHROUGH
61 # define UHD_FUNCTION __FUNCTION__
62 # define UHD_PRETTY_FUNCTION __FUNCSIG__
63 #elif defined(__MINGW32__)
64 # define UHD_EXPORT __declspec(dllexport)
65 # define UHD_IMPORT __declspec(dllimport)
66 # define UHD_EXPORT_HEADER
67 # define UHD_IMPORT_HEADER
68 # define UHD_INLINE inline
69 # define UHD_FORCE_INLINE inline
70 # define UHD_DEPRECATED __declspec(deprecated)
71 # define UHD_ALIGNED(x) __declspec(align(x))
72 # define UHD_UNUSED(x) x __attribute__((unused))
73 # define UHD_FALLTHROUGH
74 # define UHD_FUNCTION __func__
75 # define UHD_PRETTY_FUNCTION __PRETTY_FUNCTION__
76 #elif defined(__clang__)
77 # define UHD_EXPORT __attribute__((visibility("default")))
78 # define UHD_IMPORT __attribute__((visibility("default")))
79 # define UHD_EXPORT_HEADER __attribute__((visibility("default")))
80 # define UHD_IMPORT_HEADER __attribute__((visibility("default")))
81 # define UHD_INLINE inline __attribute__((always_inline))
82 # define UHD_FORCE_INLINE inline __attribute__((always_inline))
83 # define UHD_DEPRECATED __attribute__((deprecated))
84 # define UHD_ALIGNED(x) __attribute__((aligned(x)))
85 # define UHD_UNUSED(x) x __attribute__((unused))
86 # if __clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 8)
87 # define UHD_FALLTHROUGH [[clang::fallthrough]];
88 # else
89 # define UHD_FALLTHROUGH
90 # endif
91 # define UHD_FUNCTION __func__
92 # define UHD_PRETTY_FUNCTION __PRETTY_FUNCTION__
93 # if __clang_major__ >= 10
94 # define UHD_HAVE_WDEPRECATED_VOLATILE
95 # endif
96 #elif defined(__GNUG__) && __GNUG__ >= 4
97 # define UHD_EXPORT __attribute__((visibility("default")))
98 # define UHD_IMPORT __attribute__((visibility("default")))
99 # define UHD_EXPORT_HEADER __attribute__((visibility("default")))
100 # define UHD_IMPORT_HEADER __attribute__((visibility("default")))
101 # define UHD_INLINE inline __attribute__((always_inline))
102 # define UHD_FORCE_INLINE inline __attribute__((always_inline))
103 # define UHD_DEPRECATED __attribute__((deprecated))
104 # define UHD_ALIGNED(x) __attribute__((aligned(x)))
105 # define UHD_UNUSED(x) x __attribute__((unused))
106 # if __GNUG__ >= 7
107 # define UHD_FALLTHROUGH __attribute__((fallthrough));
108 # else
109 # define UHD_FALLTHROUGH
110 # endif
111 # define UHD_FUNCTION __func__
112 # define UHD_PRETTY_FUNCTION __PRETTY_FUNCTION__
113 # if __GNUG__ >= 10
114 # define UHD_HAVE_WVOLATILE
115 # endif
116 #else
117 # define UHD_EXPORT
118 # define UHD_IMPORT
119 # define UHD_EXPORT_HEADER
120 # define UHD_IMPORT_HEADER
121 # define UHD_INLINE inline
122 # define UHD_FORCE_INLINE inline
123 # define UHD_DEPRECATED
124 # define UHD_ALIGNED(x)
125 # define UHD_UNUSED(x) x
126 # define UHD_FALLTHROUGH
127 # define UHD_FUNCTION __func__
128 # define UHD_PRETTY_FUNCTION __func__
129 #endif
130 
131 // Define API declaration macro
132 //
133 // UHD_API should be used for classes/structs that
134 // have a direct cpp implementations that get directly
135 // built into a so/dylib/dll.
136 //
137 // UHD_API_HEADER should be used for classes/structs
138 // that are implemented in header only like hpp/ipp.
139 #ifdef UHD_STATIC_LIB
140 # define UHD_API
141 # define UHD_API_HEADER
142 #else
143 # ifdef UHD_DLL_EXPORTS
144 # define UHD_API UHD_EXPORT
145 # define UHD_API_HEADER UHD_EXPORT_HEADER
146 # else
147 # define UHD_API UHD_IMPORT
148 # define UHD_API_HEADER UHD_IMPORT_HEADER
149 # endif // UHD_DLL_EXPORTS
150 #endif // UHD_STATIC_LIB
151 
152 // Platform defines for conditional parts of headers:
153 // Taken from boost/config/select_platform_config.hpp,
154 // however, we define macros, not strings for platforms.
155 #if (defined(linux) || defined(__linux) || defined(__linux__) || defined(__GLIBC__)) \
156  && !defined(_CRAYC) && !defined(__FreeBSD_kernel__) && !defined(__GNU__)
157 # define UHD_PLATFORM_LINUX
158 #elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
159 # define UHD_PLATFORM_WIN32
160 #elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__)
161 # define UHD_PLATFORM_MACOS
162 #elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) \
163  || defined(__FreeBSD_kernel__)
164 # define UHD_PLATFORM_BSD
165 #endif
166 
167 // Define 'stringize' preprocessor macros. The stringize macro, XSTR, takes
168 // variable arguments so that it can deal with strings that contain commas.
169 // There are two different versions because MSVC handles this syntax a bit
170 // differently than other compilers.
171 #if defined(BOOST_MSVC)
172 # define XSTR(x, ...) # x
173 #else
174 # define XSTR(x...) # x
175 #endif
176 
177 #define STR(x) XSTR(x)