69 lines
2.1 KiB
C
69 lines
2.1 KiB
C
|
//
|
||
|
// 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
|