| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- //
- // 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
|