mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
bpo-11410: Standardize and use symbol visibility attributes across POSIX and Windows. (GH-16347)
This commit is contained in:
parent
4d202281c1
commit
0b60f64e43
12 changed files with 132 additions and 35 deletions
|
@ -638,16 +638,18 @@ extern char * _getpty(int *, int, mode_t, int);
|
|||
# define HAVE_DECLSPEC_DLL
|
||||
#endif
|
||||
|
||||
#include "exports.h"
|
||||
|
||||
/* only get special linkage if built as shared or platform is Cygwin */
|
||||
#if defined(Py_ENABLE_SHARED) || defined(__CYGWIN__)
|
||||
# if defined(HAVE_DECLSPEC_DLL)
|
||||
# if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
|
||||
# define PyAPI_FUNC(RTYPE) __declspec(dllexport) RTYPE
|
||||
# define PyAPI_DATA(RTYPE) extern __declspec(dllexport) RTYPE
|
||||
# define PyAPI_FUNC(RTYPE) Py_EXPORTED_SYMBOL RTYPE
|
||||
# define PyAPI_DATA(RTYPE) extern Py_EXPORTED_SYMBOL RTYPE
|
||||
/* module init functions inside the core need no external linkage */
|
||||
/* except for Cygwin to handle embedding */
|
||||
# if defined(__CYGWIN__)
|
||||
# define PyMODINIT_FUNC __declspec(dllexport) PyObject*
|
||||
# define PyMODINIT_FUNC Py_EXPORTED_SYMBOL PyObject*
|
||||
# else /* __CYGWIN__ */
|
||||
# define PyMODINIT_FUNC PyObject*
|
||||
# endif /* __CYGWIN__ */
|
||||
|
@ -658,14 +660,14 @@ extern char * _getpty(int *, int, mode_t, int);
|
|||
/* failures similar to those described at the bottom of 4.1: */
|
||||
/* http://docs.python.org/extending/windows.html#a-cookbook-approach */
|
||||
# if !defined(__CYGWIN__)
|
||||
# define PyAPI_FUNC(RTYPE) __declspec(dllimport) RTYPE
|
||||
# define PyAPI_FUNC(RTYPE) Py_IMPORTED_SYMBOL RTYPE
|
||||
# endif /* !__CYGWIN__ */
|
||||
# define PyAPI_DATA(RTYPE) extern __declspec(dllimport) RTYPE
|
||||
# define PyAPI_DATA(RTYPE) extern Py_IMPORTED_SYMBOL RTYPE
|
||||
/* module init functions outside the core must be exported */
|
||||
# if defined(__cplusplus)
|
||||
# define PyMODINIT_FUNC extern "C" __declspec(dllexport) PyObject*
|
||||
# define PyMODINIT_FUNC extern "C" Py_EXPORTED_SYMBOL PyObject*
|
||||
# else /* __cplusplus */
|
||||
# define PyMODINIT_FUNC __declspec(dllexport) PyObject*
|
||||
# define PyMODINIT_FUNC Py_EXPORTED_SYMBOL PyObject*
|
||||
# endif /* __cplusplus */
|
||||
# endif /* Py_BUILD_CORE */
|
||||
# endif /* HAVE_DECLSPEC_DLL */
|
||||
|
@ -673,16 +675,16 @@ extern char * _getpty(int *, int, mode_t, int);
|
|||
|
||||
/* If no external linkage macros defined by now, create defaults */
|
||||
#ifndef PyAPI_FUNC
|
||||
# define PyAPI_FUNC(RTYPE) RTYPE
|
||||
# define PyAPI_FUNC(RTYPE) Py_EXPORTED_SYMBOL RTYPE
|
||||
#endif
|
||||
#ifndef PyAPI_DATA
|
||||
# define PyAPI_DATA(RTYPE) extern RTYPE
|
||||
# define PyAPI_DATA(RTYPE) extern Py_EXPORTED_SYMBOL RTYPE
|
||||
#endif
|
||||
#ifndef PyMODINIT_FUNC
|
||||
# if defined(__cplusplus)
|
||||
# define PyMODINIT_FUNC extern "C" PyObject*
|
||||
# define PyMODINIT_FUNC extern "C" Py_EXPORTED_SYMBOL PyObject*
|
||||
# else /* __cplusplus */
|
||||
# define PyMODINIT_FUNC PyObject*
|
||||
# define PyMODINIT_FUNC Py_EXPORTED_SYMBOL PyObject*
|
||||
# endif /* __cplusplus */
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue