#include "pyctype.h"
#include "pystrtod.h"
#include "pystrcmp.h"
-#include "dtoa.h"
#include "fileutils.h"
#include "pyfpe.h"
#include "tracemalloc.h"
-#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);
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 */
$(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 \
$(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 \
--- /dev/null
+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.
+
# 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
/* 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. */
*/
#include "Python.h"
+#include "pycore_dtoa.h"
#include "_math.h"
#include "clinic/mathmodule.c.h"
for any kind of float exception without losing portability. */
#include "Python.h"
+#include "pycore_dtoa.h"
#include <ctype.h>
#include <float.h>
<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" />
<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" />
<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>
<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>
/* 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 */
/* -*- 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
# 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']))