// // SPDX-License-Identifier: BSD-3-Clause // Copyright Contributors to the OpenEXR Project. // #ifndef INCLUDED_IMATHEXPORT_H #define INCLUDED_IMATHEXPORT_H #include "ImathConfig.h" /// \defgroup ExportMacros Macros to manage symbol visibility /// /// There is more information about the motivation for these macros /// documented in the OpenEXR source tree /// (https://github.com/AcademySoftwareFoundation/openexr) under /// docs/SymbolVisibility.md /// /// Imath only needs a couple of the possible macros outlined in the /// above document, and due to it largely being inline only, does not /// have much to do. /// /// @{ #if defined(IMATH_DLL) // when building Imath as a DLL for Windows, we have to control the // typical DLL export / import things. Luckily, the typeinfo is all // automatic there, so only have to deal with symbols, except Windows // has some weirdness with DLLs and extern const, so we have to // provide a macro to handle that. # if defined(IMATH_EXPORTS) # define IMATH_EXPORT __declspec(dllexport) # define IMATH_EXPORT_CONST extern __declspec(dllexport) # else # define IMATH_EXPORT __declspec(dllimport) # define IMATH_EXPORT_CONST extern __declspec(dllimport) # endif // DLLs don't support these types of visibility controls, just leave them as empty # define IMATH_EXPORT_TYPE # define IMATH_EXPORT_ENUM # define IMATH_EXPORT_TEMPLATE_TYPE #else # ifdef IMATH_PUBLIC_SYMBOL_ATTRIBUTE # define IMATH_EXPORT IMATH_PUBLIC_SYMBOL_ATTRIBUTE # define IMATH_EXPORT_CONST extern const IMATH_PUBLIC_SYMBOL_ATTRIBUTE # else # define IMATH_EXPORT # define IMATH_EXPORT_CONST extern const # endif # ifdef IMATH_PUBLIC_TYPE_VISIBILITY_ATTRIBUTE # define IMATH_EXPORT_ENUM IMATH_PUBLIC_TYPE_VISIBILITY_ATTRIBUTE # define IMATH_EXPORT_TEMPLATE_TYPE IMATH_PUBLIC_TYPE_VISIBILITY_ATTRIBUTE # define IMATH_EXPORT_TYPE IMATH_PUBLIC_TYPE_VISIBILITY_ATTRIBUTE # else # define IMATH_EXPORT_ENUM # define IMATH_EXPORT_TEMPLATE_TYPE IMATH_EXPORT # define IMATH_EXPORT_TYPE IMATH_EXPORT # endif #endif // IMATH_DLL /// @} #endif // INCLUDED_IMATHEXPORT_H