OSVR Framework (Internal Development Docs)  0.6-1962-g59773924
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
Export.h
Go to the documentation of this file.
1 
11 // Copyright 2016 Sensics, Inc.
12 //
13 // Licensed under the Apache License, Version 2.0 (the "License");
14 // you may not use this file except in compliance with the License.
15 // You may obtain a copy of the License at
16 //
17 // http://www.apache.org/licenses/LICENSE-2.0
18 //
19 // Unless required by applicable law or agreed to in writing, software
20 // distributed under the License is distributed on an "AS IS" BASIS,
21 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
22 // See the License for the specific language governing permissions and
23 // limitations under the License.
24 
25 #ifndef OSVR_PLUGINHOST_EXPORT_H
26 #define OSVR_PLUGINHOST_EXPORT_H
27 
28 #ifdef OSVR_PLUGINHOST_STATIC_DEFINE
29 # define OSVR_PLUGINHOST_EXPORT
30 # define OSVR_PLUGINHOST_NO_EXPORT
31 #endif
32 
33 /* Per-compiler advance preventative definition */
34 #if defined(__BORLANDC__) || defined(__CODEGEARC__) || defined(__HP_aCC) || \
35  defined(__PGI) || defined(__WATCOMC__)
36 /* Compilers that don't support deprecated, according to CMake. */
37 # ifndef OSVR_PLUGINHOST_DEPRECATED
38 # define OSVR_PLUGINHOST_DEPRECATED
39 # endif
40 #endif
41 
42 /* Check for attribute support */
43 #if defined(__INTEL_COMPILER)
44 /* Checking before GNUC because Intel implements GNU extensions,
45  * so it chooses to define __GNUC__ as well. */
46 # if __INTEL_COMPILER >= 1200
47 /* Intel compiler 12.0 or newer can handle these attributes per CMake */
48 # define OSVR_PLUGINHOST_EXPORT_HEADER_SUPPORTS_ATTRIBUTES
49 # endif
50 
51 #elif defined(__GNUC__)
52 # if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
53 /* GCC 4.2+ */
54 # define OSVR_PLUGINHOST_EXPORT_HEADER_SUPPORTS_ATTRIBUTES
55 # endif
56 #endif
57 
58 /* Per-platform defines */
59 #if defined(_MSC_VER)
60 /* MSVC on Windows */
61 
62 #ifndef OSVR_PLUGINHOST_EXPORT
63 # ifdef osvrPluginHost_EXPORTS
64  /* We are building this library */
65 # define OSVR_PLUGINHOST_EXPORT __declspec(dllexport)
66 # else
67  /* We are using this library */
68 # define OSVR_PLUGINHOST_EXPORT __declspec(dllimport)
69 # endif
70 #endif
71 
72 #ifndef OSVR_PLUGINHOST_DEPRECATED
73 # define OSVR_PLUGINHOST_DEPRECATED __declspec(deprecated)
74 #endif
75 
76 #elif defined(_WIN32) && defined(__GNUC__)
77 /* GCC-compatible on Windows */
78 
79 #ifndef OSVR_PLUGINHOST_EXPORT
80 # ifdef osvrPluginHost_EXPORTS
81  /* We are building this library */
82 # define OSVR_PLUGINHOST_EXPORT __attribute__((dllexport))
83 # else
84  /* We are using this library */
85 # define OSVR_PLUGINHOST_EXPORT __attribute__((dllimport))
86 # endif
87 #endif
88 
89 #ifndef OSVR_PLUGINHOST_DEPRECATED
90 # define OSVR_PLUGINHOST_DEPRECATED __attribute__((__deprecated__))
91 #endif
92 
93 #elif defined(OSVR_PLUGINHOST_EXPORT_HEADER_SUPPORTS_ATTRIBUTES) || \
94  (defined(__APPLE__) && defined(__MACH__))
95 /* GCC4.2+ compatible (assuming something *nix-like) and Mac OS X */
96 /* (The first macro is defined at the top of the file, if applicable) */
97 /* see https://gcc.gnu.org/wiki/Visibility */
98 
99 #ifndef OSVR_PLUGINHOST_EXPORT
100  /* We are building/using this library */
101 # define OSVR_PLUGINHOST_EXPORT __attribute__((visibility("default")))
102 #endif
103 
104 #ifndef OSVR_PLUGINHOST_NO_EXPORT
105 # define OSVR_PLUGINHOST_NO_EXPORT __attribute__((visibility("hidden")))
106 #endif
107 
108 #ifndef OSVR_PLUGINHOST_DEPRECATED
109 # define OSVR_PLUGINHOST_DEPRECATED __attribute__((__deprecated__))
110 #endif
111 
112 #endif
113 /* End of platform ifdefs */
114 
115 /* fallback def */
116 #ifndef OSVR_PLUGINHOST_EXPORT
117 # define OSVR_PLUGINHOST_EXPORT
118 #endif
119 
120 /* fallback def */
121 #ifndef OSVR_PLUGINHOST_NO_EXPORT
122 # define OSVR_PLUGINHOST_NO_EXPORT
123 #endif
124 
125 /* fallback def */
126 #ifndef OSVR_PLUGINHOST_DEPRECATED_EXPORT
127 # define OSVR_PLUGINHOST_DEPRECATED_EXPORT OSVR_PLUGINHOST_EXPORT OSVR_PLUGINHOST_DEPRECATED
128 #endif
129 
130 /* fallback def */
131 #ifndef OSVR_PLUGINHOST_DEPRECATED_NO_EXPORT
132 # define OSVR_PLUGINHOST_DEPRECATED_NO_EXPORT OSVR_PLUGINHOST_NO_EXPORT OSVR_PLUGINHOST_DEPRECATED
133 #endif
134 
135 /* Clean up after ourselves */
136 #undef OSVR_PLUGINHOST_EXPORT_HEADER_SUPPORTS_ATTRIBUTES
137 
138 #endif