USRP Hardware Driver and USRP Manual Version: 4.7.0.0-0-unknown
UHD and USRP Manual
 
Loading...
Searching...
No Matches
config.h
Go to the documentation of this file.
1//
2// Copyright 2015-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#ifdef _MSC_VER
11// Bring in "and", "or", and "not"
12# include <iso646.h>
13
14// Define ssize_t
15# ifndef _SSIZE_T_DEFINED
16# define _SSIZE_T_DEFINED
17# include <BaseTsd.h>
18typedef SSIZE_T ssize_t;
19# endif /* _SSIZE_T_DEFINED */
20
21#endif /* _MSC_VER */
22
23// Define cross-platform macros
24#if defined(_MSC_VER)
25# define UHD_EXPORT __declspec(dllexport)
26# define UHD_IMPORT __declspec(dllimport)
27# define UHD_EXPORT_HEADER
28# define UHD_IMPORT_HEADER
29# define UHD_INLINE __forceinline
30# define UHD_DEPRECATED __declspec(deprecated)
31# define UHD_ALIGNED(x) __declspec(align(x))
32# define UHD_UNUSED(x) x
33#elif defined(__MINGW32__)
34# define UHD_EXPORT __declspec(dllexport)
35# define UHD_IMPORT __declspec(dllimport)
36# define UHD_EXPORT_HEADER
37# define UHD_IMPORT_HEADER
38# define UHD_INLINE inline
39# define UHD_DEPRECATED __declspec(deprecated)
40# define UHD_ALIGNED(x) __declspec(align(x))
41# define UHD_UNUSED(x) x __attribute__((unused))
42#elif defined(__clang__)
43# define UHD_EXPORT __attribute__((visibility("default")))
44# define UHD_IMPORT __attribute__((visibility("default")))
45# define UHD_EXPORT_HEADER __attribute__((visibility("default")))
46# define UHD_IMPORT_HEADER __attribute__((visibility("default")))
47# define UHD_INLINE inline __attribute__((always_inline))
48# define UHD_DEPRECATED __attribute__((deprecated))
49# define UHD_ALIGNED(x) __attribute__((aligned(x)))
50# define UHD_UNUSED(x) x __attribute__((unused))
51#elif defined(__GNUC__) && (__GNUC__ >= 4)
52# define UHD_EXPORT __attribute__((visibility("default")))
53# define UHD_IMPORT __attribute__((visibility("default")))
54# define UHD_EXPORT_HEADER __attribute__((visibility("default")))
55# define UHD_IMPORT_HEADER __attribute__((visibility("default")))
56# define UHD_INLINE inline __attribute__((always_inline))
57# define UHD_DEPRECATED __attribute__((deprecated))
58# define UHD_ALIGNED(x) __attribute__((aligned(x)))
59# define UHD_UNUSED(x) x __attribute__((unused))
60#else
61# define UHD_EXPORT
62# define UHD_IMPORT
63# define UHD_EXPORT_HEADER
64# define UHD_IMPORT_HEADER
65# define UHD_INLINE inline
66# define UHD_DEPRECATED
67# define UHD_ALIGNED(x)
68# define UHD_UNUSED(x) x
69#endif
70
71// Define API declaration macro
72//
73// UHD_API should be used for classes/structs that
74// have a direct cpp implementations that get directly
75// built into a so/dylib/dll.
76//
77// UHD_API_HEADER should be used for classes/structs
78// that are implemented in header only like hpp/ipp.
79#ifdef UHD_STATIC_LIB
80# define UHD_API
81# define UHD_API_HEADER
82#else
83# ifdef UHD_DLL_EXPORTS
84# define UHD_API UHD_EXPORT
85# define UHD_API_HEADER UHD_EXPORT_HEADER
86# else
87# define UHD_API UHD_IMPORT
88# define UHD_API_HEADER UHD_IMPORT_HEADER
89# endif // UHD_DLL_EXPORTS
90#endif // UHD_STATIC_LIB
91
92// Platform defines for conditional code:
93// Taken from boost/config/select_platform_config.hpp,
94// However, we define macros, not strings, for platforms.
95#if (defined(linux) || defined(__linux) || defined(__linux__) || defined(__GLIBC__)) \
96 && !defined(_CRAYC) && !defined(__FreeBSD_kernel__) && !defined(__GNU__)
97# define UHD_PLATFORM_LINUX
98#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
99# define UHD_PLATFORM_WIN32
100#elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__)
101# define UHD_PLATFORM_MACOS
102#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) \
103 || defined(__FreeBSD_kernel__)
104# define UHD_PLATFORM_BSD
105#endif