| #ifndef Py_EXPORTS_H | |
| #define Py_EXPORTS_H | |
| #if defined(_WIN32) || defined(__CYGWIN__) | |
| #define Py_IMPORTED_SYMBOL __declspec(dllimport) | |
| #define Py_EXPORTED_SYMBOL __declspec(dllexport) | |
| #define Py_LOCAL_SYMBOL | |
| #else | |
| /* | |
| * If we only ever used gcc >= 5, we could use __has_attribute(visibility) | |
| * as a cross-platform way to determine if visibility is supported. However, | |
| * we may still need to support gcc >= 4, as some Ubuntu LTS and Centos versions | |
| * have 4 < gcc < 5. | |
| */ | |
| #ifndef __has_attribute | |
| #define __has_attribute(x) 0 // Compatibility with non-clang compilers. | |
| #endif | |
| #if (defined(__GNUC__) && (__GNUC__ >= 4)) ||\ | |
| (defined(__clang__) && __has_attribute(visibility)) | |
| #define Py_IMPORTED_SYMBOL __attribute__ ((visibility ("default"))) | |
| #define Py_EXPORTED_SYMBOL __attribute__ ((visibility ("default"))) | |
| #define Py_LOCAL_SYMBOL __attribute__ ((visibility ("hidden"))) | |
| #else | |
| #define Py_IMPORTED_SYMBOL | |
| #define Py_EXPORTED_SYMBOL | |
| #define Py_LOCAL_SYMBOL | |
| #endif | |
| #endif | |
| #endif /* Py_EXPORTS_H */ |