|  | 
| 1 | 1 | #ifndef C10_MACROS_EXPORT_H_ | 
| 2 | 2 | #define C10_MACROS_EXPORT_H_ | 
| 3 | 3 | 
 | 
| 4 |  | -/* Header file to define the common scaffolding for exported symbols. | 
| 5 |  | - * | 
| 6 |  | - * Export is by itself a quite tricky situation to deal with, and if you are | 
| 7 |  | - * hitting this file, make sure you start with the background here: | 
| 8 |  | - * - Linux: https://gcc.gnu.org/wiki/Visibility | 
| 9 |  | - * - Windows: | 
| 10 |  | - * https://docs.microsoft.com/en-us/cpp/cpp/dllexport-dllimport?view=vs-2017 | 
| 11 |  | - * | 
| 12 |  | - * Do NOT include this file directly. Instead, use c10/macros/Macros.h | 
| 13 |  | - */ | 
| 14 |  | - | 
| 15 |  | -// You do not need to edit this part of file unless you are changing the core | 
| 16 |  | -// pytorch export abstractions. | 
| 17 |  | -// | 
| 18 |  | -// This part defines the C10 core export and import macros. This is controlled | 
| 19 |  | -// by whether we are building shared libraries or not, which is determined | 
| 20 |  | -// during build time and codified in c10/core/cmake_macros.h. | 
| 21 |  | -// When the library is built as a shared lib, EXPORT and IMPORT will contain | 
| 22 |  | -// visibility attributes. If it is being built as a static lib, then EXPORT | 
| 23 |  | -// and IMPORT basically have no effect. | 
| 24 |  | - | 
| 25 |  | -// As a rule of thumb, you should almost NEVER mix static and shared builds for | 
| 26 |  | -// libraries that depend on c10. AKA, if c10 is built as a static library, we | 
| 27 |  | -// recommend everything dependent on c10 to be built statically. If c10 is built | 
| 28 |  | -// as a shared library, everything dependent on it should be built as shared. In | 
| 29 |  | -// the PyTorch project, all native libraries shall use the macro | 
| 30 |  | -// C10_BUILD_SHARED_LIB to check whether pytorch is building shared or static | 
| 31 |  | -// libraries. | 
| 32 |  | - | 
| 33 |  | -// For build systems that do not directly depend on CMake and directly build | 
| 34 |  | -// from the source directory (such as Buck), one may not have a cmake_macros.h | 
| 35 |  | -// file at all. In this case, the build system is responsible for providing | 
| 36 |  | -// correct macro definitions corresponding to the cmake_macros.h.in file. | 
| 37 |  | -// | 
| 38 |  | -// In such scenarios, one should define the macro | 
| 39 |  | -//     C10_USING_CUSTOM_GENERATED_MACROS | 
| 40 |  | -// to inform this header that it does not need to include the cmake_macros.h | 
| 41 |  | -// file. | 
| 42 |  | - | 
| 43 | 4 | #ifndef C10_USING_CUSTOM_GENERATED_MACROS | 
| 44 | 5 | #include <c10/macros/cmake_macros.h> | 
| 45 | 6 | #endif // C10_USING_CUSTOM_GENERATED_MACROS | 
| 46 | 7 | 
 | 
| 47 |  | -#ifdef _WIN32 | 
| 48 |  | -#define C10_HIDDEN | 
| 49 |  | -#if defined(C10_BUILD_SHARED_LIBS) | 
| 50 |  | -#define C10_EXPORT __declspec(dllexport) | 
| 51 |  | -#define C10_IMPORT __declspec(dllimport) | 
| 52 |  | -#else | 
| 53 |  | -#define C10_EXPORT | 
| 54 |  | -#define C10_IMPORT | 
| 55 |  | -#endif | 
| 56 |  | -#else // _WIN32 | 
| 57 |  | -#if defined(__GNUC__) | 
| 58 |  | -#define C10_EXPORT __attribute__((__visibility__("default"))) | 
| 59 |  | -#define C10_HIDDEN __attribute__((__visibility__("hidden"))) | 
| 60 |  | -#else // defined(__GNUC__) | 
| 61 |  | -#define C10_EXPORT | 
| 62 |  | -#define C10_HIDDEN | 
| 63 |  | -#endif // defined(__GNUC__) | 
| 64 |  | -#define C10_IMPORT C10_EXPORT | 
| 65 |  | -#endif // _WIN32 | 
| 66 |  | - | 
| 67 |  | -#ifdef NO_EXPORT | 
| 68 |  | -#undef C10_EXPORT | 
| 69 |  | -#define C10_EXPORT | 
| 70 |  | -#endif | 
| 71 |  | - | 
| 72 |  | -// Definition of an adaptive XX_API macro, that depends on whether you are | 
| 73 |  | -// building the library itself or not, routes to XX_EXPORT and XX_IMPORT. | 
| 74 |  | -// Basically, you will need to do this for each shared library that you are | 
| 75 |  | -// building, and the instruction is as follows: assuming that you are building | 
| 76 |  | -// a library called libawesome.so. You should: | 
| 77 |  | -// (1) for your cmake target (usually done by "add_library(awesome, ...)"), | 
| 78 |  | -//     define a macro called AWESOME_BUILD_MAIN_LIB using | 
| 79 |  | -//     target_compile_options. | 
| 80 |  | -// (2) define the AWESOME_API macro similar to the one below. | 
| 81 |  | -// And in the source file of your awesome library, use AWESOME_API to | 
| 82 |  | -// annotate public symbols. | 
| 83 |  | - | 
| 84 |  | -// Here, for the C10 library, we will define the macro C10_API for both import | 
| 85 |  | -// and export. | 
| 86 |  | - | 
| 87 |  | -// This one is being used by libc10.so | 
| 88 |  | -#ifdef C10_BUILD_MAIN_LIB | 
| 89 |  | -#define C10_API C10_EXPORT | 
| 90 |  | -#else | 
| 91 |  | -#define C10_API C10_IMPORT | 
| 92 |  | -#endif | 
|  | 8 | +#include <torch/standalone/macros/Export.h> | 
| 93 | 9 | 
 | 
| 94 | 10 | // This one is being used by libtorch.so | 
| 95 | 11 | #ifdef CAFFE2_BUILD_MAIN_LIB | 
|  | 
| 159 | 75 | #define C10_API_ENUM | 
| 160 | 76 | #endif | 
| 161 | 77 | 
 | 
| 162 |  | -#endif // C10_MACROS_MACROS_H_ | 
|  | 78 | +#endif // C10_MACROS_EXPORT_H_ | 
0 commit comments