bpo-35081: Move dtoa.h header to the internal C API (GH-18489)
Move the dtoa.h header file to the internal C API as pycore_dtoa.h: it only contains private functions (prefixed by "_Py"). The math and cmath modules must now be compiled with the Py_BUILD_CORE macro defined.
This commit is contained in:
parent
45876a90e2
commit
e9e7d284c4
|
@ -152,7 +152,6 @@
|
|||
#include "pyctype.h"
|
||||
#include "pystrtod.h"
|
||||
#include "pystrcmp.h"
|
||||
#include "dtoa.h"
|
||||
#include "fileutils.h"
|
||||
#include "pyfpe.h"
|
||||
#include "tracemalloc.h"
|
||||
|
|
|
@ -1,9 +1,15 @@
|
|||
#ifndef Py_LIMITED_API
|
||||
#ifndef PY_NO_SHORT_FLOAT_REPR
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef Py_BUILD_CORE
|
||||
# error "this header requires Py_BUILD_CORE define"
|
||||
#endif
|
||||
|
||||
/* These functions are used by modules compiled as C extension like math:
|
||||
they must be exported. */
|
||||
|
||||
PyAPI_FUNC(double) _Py_dg_strtod(const char *str, char **ptr);
|
||||
PyAPI_FUNC(char *) _Py_dg_dtoa(double d, int mode, int ndigits,
|
||||
int *decpt, int *sign, char **rve);
|
||||
|
@ -11,9 +17,7 @@ PyAPI_FUNC(void) _Py_dg_freedtoa(char *s);
|
|||
PyAPI_FUNC(double) _Py_dg_stdnan(int sign);
|
||||
PyAPI_FUNC(double) _Py_dg_infinity(int sign);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif /* !PY_NO_SHORT_FLOAT_REPR */
|
|
@ -981,7 +981,6 @@ PYTHON_HEADERS= \
|
|||
$(srcdir)/Include/context.h \
|
||||
$(srcdir)/Include/descrobject.h \
|
||||
$(srcdir)/Include/dictobject.h \
|
||||
$(srcdir)/Include/dtoa.h \
|
||||
$(srcdir)/Include/dynamic_annotations.h \
|
||||
$(srcdir)/Include/enumobject.h \
|
||||
$(srcdir)/Include/errcode.h \
|
||||
|
@ -1082,6 +1081,7 @@ PYTHON_HEADERS= \
|
|||
$(srcdir)/Include/internal/pycore_code.h \
|
||||
$(srcdir)/Include/internal/pycore_condvar.h \
|
||||
$(srcdir)/Include/internal/pycore_context.h \
|
||||
$(srcdir)/Include/internal/pycore_dtoa.h \
|
||||
$(srcdir)/Include/internal/pycore_fileutils.h \
|
||||
$(srcdir)/Include/internal/pycore_getopt.h \
|
||||
$(srcdir)/Include/internal/pycore_gil.h \
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
Move the ``dtoa.h`` header file to the internal C API as ``pycore_dtoa.h``:
|
||||
it only contains private functions (prefixed by ``_Py``). The :mod:`math` and
|
||||
:mod:`cmath` modules must now be compiled with the ``Py_BUILD_CORE`` macro
|
||||
defined.
|
||||
|
|
@ -167,8 +167,8 @@ _symtable symtablemodule.c
|
|||
# Modules that should always be present (non UNIX dependent):
|
||||
|
||||
#array arraymodule.c # array objects
|
||||
#cmath cmathmodule.c _math.c # -lm # complex math library functions
|
||||
#math mathmodule.c _math.c # -lm # math library functions, e.g. sin()
|
||||
#cmath cmathmodule.c _math.c -DPy_BUILD_CORE_MODULE # -lm # complex math library functions
|
||||
#math mathmodule.c _math.c -DPy_BUILD_CORE_MODULE # -lm # math library functions, e.g. sin()
|
||||
#_contextvars _contextvarsmodule.c # Context Variables
|
||||
#_struct _struct.c # binary structure packing/unpacking
|
||||
#_weakref _weakref.c # basic weak reference support
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
/* much code borrowed from mathmodule.c */
|
||||
|
||||
#include "Python.h"
|
||||
#include "pycore_dtoa.h"
|
||||
#include "_math.h"
|
||||
/* we need DBL_MAX, DBL_MIN, DBL_EPSILON, DBL_MANT_DIG and FLT_RADIX from
|
||||
float.h. We assume that FLT_RADIX is either 2 or 16. */
|
||||
|
|
|
@ -53,6 +53,7 @@ raised for division by zero and mod by zero.
|
|||
*/
|
||||
|
||||
#include "Python.h"
|
||||
#include "pycore_dtoa.h"
|
||||
#include "_math.h"
|
||||
|
||||
#include "clinic/mathmodule.c.h"
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
for any kind of float exception without losing portability. */
|
||||
|
||||
#include "Python.h"
|
||||
#include "pycore_dtoa.h"
|
||||
|
||||
#include <ctype.h>
|
||||
#include <float.h>
|
||||
|
|
|
@ -166,6 +166,7 @@
|
|||
<ClInclude Include="..\Include\internal\pycore_code.h" />
|
||||
<ClInclude Include="..\Include\internal\pycore_condvar.h" />
|
||||
<ClInclude Include="..\Include\internal\pycore_context.h" />
|
||||
<ClInclude Include="..\Include\internal\pycore_dtoa.h" />
|
||||
<ClInclude Include="..\Include\internal\pycore_fileutils.h" />
|
||||
<ClInclude Include="..\Include\internal\pycore_getopt.h" />
|
||||
<ClInclude Include="..\Include\internal\pycore_gil.h" />
|
||||
|
@ -223,7 +224,6 @@
|
|||
<ClInclude Include="..\Include\pystrcmp.h" />
|
||||
<ClInclude Include="..\Include\pystrtod.h" />
|
||||
<ClInclude Include="..\Include\pystrhex.h" />
|
||||
<ClInclude Include="..\Include\dtoa.h" />
|
||||
<ClInclude Include="..\Include\Python-ast.h" />
|
||||
<ClInclude Include="..\Include\Python.h" />
|
||||
<ClInclude Include="..\Include\pythonrun.h" />
|
||||
|
|
|
@ -201,6 +201,9 @@
|
|||
<ClInclude Include="..\Include\internal\pycore_context.h">
|
||||
<Filter>Include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Include\internal\pycore_dtoa.h">
|
||||
<Filter>Include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Include\internal\pycore_fileutils.h">
|
||||
<Filter>Include</Filter>
|
||||
</ClInclude>
|
||||
|
@ -360,9 +363,6 @@
|
|||
<ClInclude Include="..\Include\pystrhex.h">
|
||||
<Filter>Include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Include\dtoa.h">
|
||||
<Filter>Include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Include\Python-ast.h">
|
||||
<Filter>Include</Filter>
|
||||
</ClInclude>
|
||||
|
|
|
@ -115,6 +115,7 @@
|
|||
/* Linking of Python's #defines to Gay's #defines starts here. */
|
||||
|
||||
#include "Python.h"
|
||||
#include "pycore_dtoa.h"
|
||||
|
||||
/* if PY_NO_SHORT_FLOAT_REPR is defined, then don't even try to compile
|
||||
the following code */
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* -*- Mode: C; c-file-style: "python" -*- */
|
||||
|
||||
#include <Python.h>
|
||||
#include "pycore_dtoa.h"
|
||||
#include <locale.h>
|
||||
|
||||
/* Case-insensitive string match used for nan and inf detection; t should be
|
||||
|
|
2
setup.py
2
setup.py
|
@ -734,12 +734,14 @@ class PyBuildExt(build_ext):
|
|||
|
||||
# math library functions, e.g. sin()
|
||||
self.add(Extension('math', ['mathmodule.c'],
|
||||
extra_compile_args=['-DPy_BUILD_CORE_MODULE'],
|
||||
extra_objects=[shared_math],
|
||||
depends=['_math.h', shared_math],
|
||||
libraries=['m']))
|
||||
|
||||
# complex math library functions
|
||||
self.add(Extension('cmath', ['cmathmodule.c'],
|
||||
extra_compile_args=['-DPy_BUILD_CORE_MODULE'],
|
||||
extra_objects=[shared_math],
|
||||
depends=['_math.h', shared_math],
|
||||
libraries=['m']))
|
||||
|
|
Loading…
Reference in New Issue