mirror of https://github.com/python/cpython
31 lines
1.1 KiB
C
31 lines
1.1 KiB
C
|
#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 */
|