All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
export.h
Go to the documentation of this file.
1//
2// Copyright 2016 Pixar
3//
4// Licensed under the terms set forth in the LICENSE.txt file available at
5// https://openusd.org/license.
6//
7#ifndef PXR_BASE_ARCH_EXPORT_H
8#define PXR_BASE_ARCH_EXPORT_H
9
139
140#include "pxr/base/arch/defines.h"
141
142#if defined(ARCH_OS_WINDOWS)
143# if defined(ARCH_COMPILER_GCC) && ARCH_COMPILER_GCC_MAJOR >= 4 || defined(ARCH_COMPILER_CLANG)
144# define ARCH_EXPORT __attribute__((dllexport))
145# define ARCH_IMPORT __attribute__((dllimport))
146# define ARCH_HIDDEN
147# define ARCH_EXPORT_TYPE
148# else
149# define ARCH_EXPORT __declspec(dllexport)
150# define ARCH_IMPORT __declspec(dllimport)
151# define ARCH_HIDDEN
152# define ARCH_EXPORT_TYPE
153# endif
154#elif defined(ARCH_COMPILER_GCC) && ARCH_COMPILER_GCC_MAJOR >= 4 || defined(ARCH_COMPILER_CLANG)
155# define ARCH_EXPORT __attribute__((visibility("default")))
156# define ARCH_IMPORT
157# define ARCH_HIDDEN __attribute__((visibility("hidden")))
158# if defined(ARCH_COMPILER_CLANG)
159# define ARCH_EXPORT_TYPE __attribute__((type_visibility("default")))
160# else
161# define ARCH_EXPORT_TYPE __attribute__((visibility("default")))
162# endif
163#else
164# define ARCH_EXPORT
165# define ARCH_IMPORT
166# define ARCH_HIDDEN
167# define ARCH_EXPORT_TYPE
168#endif
169#define ARCH_EXPORT_TEMPLATE(type, ...)
170#define ARCH_IMPORT_TEMPLATE(type, ...) extern template type ARCH_IMPORT __VA_ARGS__
171
172#endif // PXR_BASE_ARCH_EXPORT_H