HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
OpenEXRConfig.h
Go to the documentation of this file.
1 // SPDX-License-Identifier: BSD-3-Clause
2 // Copyright (c) Contributors to the OpenEXR Project.
3 
4 // This file is auto-generated by the configure step
5 
6 #ifndef INCLUDED_OPENEXR_CONFIG_H
7 #define INCLUDED_OPENEXR_CONFIG_H 1
8 
9 #pragma once
10 
11 //
12 // The OpenEXR release version is defined officially in
13 // src/lib/OpenEXRCore/openexr_version.h, but CMake doesn't readily allow
14 // that to be included here, so duplicate the settings for
15 // backwards-compatibility with applications that may expect to get the
16 // defines from this include.
17 //
18 
19 #ifndef INCLUDED_OPENEXR_VERSION_H
20 #define OPENEXR_VERSION_MAJOR 3
21 #define OPENEXR_VERSION_MINOR 4
22 #define OPENEXR_VERSION_PATCH 3
23 #define OPENEXR_SOVERSION 33
24 #endif
25 
26 #define OPENEXR_IMATH_SOVERSION
27 #define OPENEXR_IMATH_VERSION_MAJOR 3
28 #define OPENEXR_IMATH_VERSION_MINOR 2
29 #define OPENEXR_IMATH_VERSION_PATCH 2
30 
31 #define OPENEXR_OPENJPH_VERSION_MAJOR 0
32 #define OPENEXR_OPENJPH_VERSION_MINOR 24
33 #define OPENEXR_OPENJPH_VERSION_PATCH 5
34 
35 //
36 // Options / configuration based on O.S. / compiler
37 /////////////////////
38 
39 // automated formatting does not handle the cmake tags well
40 // clang-format off
41 
42 //
43 // Define and set to 1 if the target system has support for large
44 // stack sizes.
45 //
46 /* #undef OPENEXR_HAVE_LARGE_STACK */
47 
48 //////////////////////
49 //
50 // C++ namespace configuration / options
51 
52 //
53 // Current internal library namespace name
54 //
55 #define OPENEXR_IMF_INTERNAL_NAMESPACE_CUSTOM 1
56 #define OPENEXR_IMF_INTERNAL_NAMESPACE Imf_3_4_sidefx
57 
58 //
59 // Current public user namespace name
60 //
61 
62 #define OPENEXR_IMF_NAMESPACE_CUSTOM 1
63 #define OPENEXR_IMF_NAMESPACE Imf
64 
65 //
66 // Version string for runtime access
67 //
68 
69 #define OPENEXR_VERSION_STRING "3.4.3"
70 #define OPENEXR_PACKAGE_STRING "OpenEXR 3.4.3"
71 
72 #define OPENEXR_VERSION_RELEASE_TYPE ""
73 // Deprecated, for back compatibility:
74 #define OPENEXR_VERSION_EXTRA ""
75 
76 #define OPENEXR_LIB_VERSION_STRING "33.3.4.3"
77 
78 // clang-format on
79 
80 // Version as a single hex number, e.g. 0x01000300 == 1.0.3
81 #define OPENEXR_VERSION_HEX \
82  (((OPENEXR_VERSION_MAJOR) << 24) | \
83  ((OPENEXR_VERSION_MINOR) << 16) | \
84  ((OPENEXR_VERSION_PATCH) << 8))
85 
86 // On modern versions of gcc & clang, __has_attribute can test support for
87 // __attribute__((attr)). Make sure it's safe for other compilers.
88 #ifndef __has_attribute
89 # define __has_attribute(x) 0
90 #endif
91 
92 // Whether the user configured the library to have symbol visibility
93 // tagged
94 #define OPENEXR_ENABLE_API_VISIBILITY
95 
96 /// \defgroup ExportMacros Macros to manage symbol visibility
97 ///
98 /// See website/SymbolVisibility.rst for more discussion about the
99 /// motivation for these macros
100 ///
101 /// If we are compiling a DLL for Windows, there needs to be custom
102 /// rules for each library such that the macro swaps between doing a
103 /// dllexport and a dllimport, so the defines here are less
104 /// useful. Further, MSVC does not have this concept at all currently,
105 /// so is elided.
106 ///
107 /// The top level macros which start with OPENEXR can act as simple
108 /// ways to combine the logic however for non-DLL or non-windows
109 /// platforms, but until the current patterns change, one should check
110 /// the specific library export.h (i.e. @sa IexExport.h,
111 /// @sa IlmThreadExport.h, @sa ImfExport.h, @sa ImfUtilExport.h )
112 ///
113 /// These per-library exports define a subset which are used by that
114 /// library.
115 ///
116 /// Iex is simple and does not need to do more than expose class types
117 /// and functions, and does not have any private members to hide, so
118 /// only provides a couple of the possible macros.
119 ///
120 /// Similarly, IlmThread is also reasonably simple.
121 ///
122 /// OpenEXR and OpenEXRUtil have much more logic and have to deal with
123 /// templates and template instantiation, and so define more of the
124 /// macros.
125 ///
126 /// @{
127 
128 #if defined(OPENEXR_ENABLE_API_VISIBILITY) && \
129  !(defined(OPENEXR_DLL) || defined(_MSC_VER))
130 # define OPENEXR_PUBLIC_SYMBOL_ATTRIBUTE \
131  __attribute__ ((__visibility__ ("default")))
132 # define OPENEXR_PRIVATE_SYMBOL_ATTRIBUTE \
133  __attribute__ ((__visibility__ ("hidden")))
134 // clang differs from gcc and has type visibility which is needed
135 // for enums and templates, and isn't well documented, but causes
136 // the vtable and typeinfo to be made visible, but not necessarily
137 // all the members
138 # if __has_attribute(__type_visibility__)
139 # define OPENEXR_PUBLIC_TYPE_VISIBILITY_ATTRIBUTE \
140  __attribute__ ((__type_visibility__ ("default")))
141 # endif
142 
143 // these are always the same, at least in current compilers
144 # define OPENEXR_EXPORT OPENEXR_PUBLIC_SYMBOL_ATTRIBUTE
145 # define OPENEXR_HIDDEN OPENEXR_PRIVATE_SYMBOL_ATTRIBUTE
146 // currently define this as the same between compilers to export
147 // things like default copy ctors etc, and do not use the type
148 // visibility which only exports the typeinfo / vtable
149 # define OPENEXR_EXPORT_TYPE OPENEXR_EXPORT
150 # define OPENEXR_EXPORT_EXTERN_TEMPLATE OPENEXR_EXPORT
151 
152 # ifdef OPENEXR_PUBLIC_TYPE_VISIBILITY_ATTRIBUTE
153 # define OPENEXR_EXPORT_ENUM OPENEXR_PUBLIC_TYPE_VISIBILITY_ATTRIBUTE
154 # define OPENEXR_EXPORT_TEMPLATE_TYPE \
155  OPENEXR_PUBLIC_TYPE_VISIBILITY_ATTRIBUTE
156 // clang (well, type_visibility) seems empirically need the
157 // default/public symbol tag when specifying explicit template
158 // instantiations, where gcc (no type_visibility) complains if
159 // you set that
160 # define OPENEXR_EXPORT_TEMPLATE_INSTANCE OPENEXR_EXPORT
161 # else
162 # define OPENEXR_EXPORT_ENUM
163 # define OPENEXR_EXPORT_TEMPLATE_TYPE OPENEXR_EXPORT
164 # define OPENEXR_EXPORT_TEMPLATE_INSTANCE
165 # endif
166 
167 #else // msvc or api visibility disabled, just clear all this out (DLLs will define a set anyway)
168 
169 # define OPENEXR_EXPORT
170 # define OPENEXR_HIDDEN
171 # define OPENEXR_EXPORT_TYPE
172 # define OPENEXR_EXPORT_EXTERN_TEMPLATE
173 # define OPENEXR_EXPORT_ENUM
174 # define OPENEXR_EXPORT_TEMPLATE_TYPE
175 # define OPENEXR_EXPORT_TYPE
176 # define OPENEXR_EXPORT_TEMPLATE_INSTANCE
177 
178 #endif
179 
180 #if defined(__cplusplus) && (__cplusplus >= 201402L)
181 # define OPENEXR_DEPRECATED(msg) [[deprecated (msg)]]
182 #endif
183 
184 #ifndef OPENEXR_DEPRECATED
185 # ifdef _MSC_VER
186 # define OPENEXR_DEPRECATED(msg) __declspec(deprecated (msg))
187 # else
188 # define OPENEXR_DEPRECATED(msg) __attribute__ ((deprecated (msg)))
189 # endif
190 #endif
191 
192 #endif // INCLUDED_OPENEXR_CONFIG_H