Commit 63d096dd authored by Martin Panter's avatar Martin Panter

Issue #24421: Compile _math.c separately to avoid race condition

parent bc85e35f
...@@ -586,11 +586,15 @@ pybuilddir.txt: $(BUILDPYTHON) ...@@ -586,11 +586,15 @@ pybuilddir.txt: $(BUILDPYTHON)
exit 1 ; \ exit 1 ; \
fi fi
# This is shared by the math and cmath modules
Modules/_math.o: Modules/_math.c Modules/_math.h
$(CC) -c $(CCSHARED) $(PY_CORE_CFLAGS) -o $@ $<
# Build the shared modules # Build the shared modules
# Under GNU make, MAKEFLAGS are sorted and normalized; the 's' for # Under GNU make, MAKEFLAGS are sorted and normalized; the 's' for
# -s, --silent or --quiet is always the first char. # -s, --silent or --quiet is always the first char.
# Under BSD make, MAKEFLAGS might be " -s -v x=y". # Under BSD make, MAKEFLAGS might be " -s -v x=y".
sharedmods: $(BUILDPYTHON) pybuilddir.txt sharedmods: $(BUILDPYTHON) pybuilddir.txt Modules/_math.o
@case "$$MAKEFLAGS" in \ @case "$$MAKEFLAGS" in \
*\ -s*|s*) quiet="-q";; \ *\ -s*|s*) quiet="-q";; \
*) quiet="";; \ *) quiet="";; \
......
...@@ -261,6 +261,10 @@ Tests ...@@ -261,6 +261,10 @@ Tests
Build Build
----- -----
- Issue #24421: Compile Modules/_math.c once, before building extensions.
Previously it could fail to compile properly if the math and cmath builds
were concurrent.
- Issue #25348: Added ``--pgo`` and ``--pgo-job`` arguments to - Issue #25348: Added ``--pgo`` and ``--pgo-job`` arguments to
``PCbuild\build.bat`` for building with Profile-Guided Optimization. The ``PCbuild\build.bat`` for building with Profile-Guided Optimization. The
old ``PCbuild\build_pgo.bat`` script is now deprecated, and simply calls old ``PCbuild\build_pgo.bat`` script is now deprecated, and simply calls
......
...@@ -598,13 +598,17 @@ class PyBuildExt(build_ext): ...@@ -598,13 +598,17 @@ class PyBuildExt(build_ext):
# array objects # array objects
exts.append( Extension('array', ['arraymodule.c']) ) exts.append( Extension('array', ['arraymodule.c']) )
shared_math = 'Modules/_math.o'
# complex math library functions # complex math library functions
exts.append( Extension('cmath', ['cmathmodule.c', '_math.c'], exts.append( Extension('cmath', ['cmathmodule.c'],
depends=['_math.h'], extra_objects=[shared_math],
depends=['_math.h', shared_math],
libraries=math_libs) ) libraries=math_libs) )
# math library functions, e.g. sin() # math library functions, e.g. sin()
exts.append( Extension('math', ['mathmodule.c', '_math.c'], exts.append( Extension('math', ['mathmodule.c'],
depends=['_math.h'], extra_objects=[shared_math],
depends=['_math.h', shared_math],
libraries=math_libs) ) libraries=math_libs) )
# time libraries: librt may be needed for clock_gettime() # time libraries: librt may be needed for clock_gettime()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment