mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
setup.py: add missing libm dependency
Issue #21668: Link audioop, _datetime, _ctypes_test modules to libm, except on Mac OS X. Patch written by Xavier de Gaye.
This commit is contained in:
parent
ddd9917ac3
commit
def8072c34
2 changed files with 25 additions and 9 deletions
|
@ -400,12 +400,15 @@ Tests
|
||||||
Build
|
Build
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
- Issue #21668: Link audioop, _datetime, _ctypes_test modules to libm,
|
||||||
|
except on Mac OS X. Patch written by Xavier de Gaye.
|
||||||
|
|
||||||
- Issue #25702: A --with-lto configure option has been added that will
|
- Issue #25702: A --with-lto configure option has been added that will
|
||||||
enable link time optimizations at build time during a make profile-opt.
|
enable link time optimizations at build time during a make profile-opt.
|
||||||
Some compilers and toolchains are known to not produce stable code when
|
Some compilers and toolchains are known to not produce stable code when
|
||||||
using LTO, be sure to test things thoroughly before relying on it.
|
using LTO, be sure to test things thoroughly before relying on it.
|
||||||
It can provide a few % speed up over profile-opt alone.
|
It can provide a few % speed up over profile-opt alone.
|
||||||
|
|
||||||
- Issue #26624: Adds validation of ucrtbase[d].dll version with warning
|
- Issue #26624: Adds validation of ucrtbase[d].dll version with warning
|
||||||
for old versions.
|
for old versions.
|
||||||
|
|
||||||
|
|
29
setup.py
29
setup.py
|
@ -480,6 +480,13 @@ class PyBuildExt(build_ext):
|
||||||
finally:
|
finally:
|
||||||
os.unlink(tmpfile)
|
os.unlink(tmpfile)
|
||||||
|
|
||||||
|
def detect_math_libs(self):
|
||||||
|
# Check for MacOS X, which doesn't need libm.a at all
|
||||||
|
if host_platform == 'darwin':
|
||||||
|
return []
|
||||||
|
else:
|
||||||
|
return ['m']
|
||||||
|
|
||||||
def detect_modules(self):
|
def detect_modules(self):
|
||||||
# Ensure that /usr/local is always used, but the local build
|
# Ensure that /usr/local is always used, but the local build
|
||||||
# directories (i.e. '.' and 'Include') must be first. See issue
|
# directories (i.e. '.' and 'Include') must be first. See issue
|
||||||
|
@ -584,10 +591,7 @@ class PyBuildExt(build_ext):
|
||||||
if item.startswith('-L'):
|
if item.startswith('-L'):
|
||||||
lib_dirs.append(item[2:])
|
lib_dirs.append(item[2:])
|
||||||
|
|
||||||
# Check for MacOS X, which doesn't need libm.a at all
|
math_libs = self.detect_math_libs()
|
||||||
math_libs = ['m']
|
|
||||||
if host_platform == 'darwin':
|
|
||||||
math_libs = []
|
|
||||||
|
|
||||||
# XXX Omitted modules: gl, pure, dl, SGI-specific modules
|
# XXX Omitted modules: gl, pure, dl, SGI-specific modules
|
||||||
|
|
||||||
|
@ -620,7 +624,10 @@ class PyBuildExt(build_ext):
|
||||||
# time operations and variables
|
# time operations and variables
|
||||||
exts.append( Extension('time', ['timemodule.c'],
|
exts.append( Extension('time', ['timemodule.c'],
|
||||||
libraries=time_libs) )
|
libraries=time_libs) )
|
||||||
exts.append( Extension('_datetime', ['_datetimemodule.c']) )
|
# math_libs is needed by delta_new() that uses round() and by accum()
|
||||||
|
# that uses modf().
|
||||||
|
exts.append( Extension('_datetime', ['_datetimemodule.c'],
|
||||||
|
libraries=math_libs) )
|
||||||
# random number generator implemented in C
|
# random number generator implemented in C
|
||||||
exts.append( Extension("_random", ["_randommodule.c"]) )
|
exts.append( Extension("_random", ["_randommodule.c"]) )
|
||||||
# bisect
|
# bisect
|
||||||
|
@ -691,11 +698,14 @@ class PyBuildExt(build_ext):
|
||||||
# Multimedia modules
|
# Multimedia modules
|
||||||
# These don't work for 64-bit platforms!!!
|
# These don't work for 64-bit platforms!!!
|
||||||
# These represent audio samples or images as strings:
|
# These represent audio samples or images as strings:
|
||||||
|
#
|
||||||
# Operations on audio samples
|
# Operations on audio samples
|
||||||
# According to #993173, this one should actually work fine on
|
# According to #993173, this one should actually work fine on
|
||||||
# 64-bit platforms.
|
# 64-bit platforms.
|
||||||
exts.append( Extension('audioop', ['audioop.c']) )
|
#
|
||||||
|
# audioop needs math_libs for floor() in multiple functions.
|
||||||
|
exts.append( Extension('audioop', ['audioop.c'],
|
||||||
|
libraries=math_libs) )
|
||||||
|
|
||||||
# readline
|
# readline
|
||||||
do_readline = self.compiler.find_library_file(lib_dirs, 'readline')
|
do_readline = self.compiler.find_library_file(lib_dirs, 'readline')
|
||||||
|
@ -1937,6 +1947,7 @@ class PyBuildExt(build_ext):
|
||||||
'_ctypes/stgdict.c',
|
'_ctypes/stgdict.c',
|
||||||
'_ctypes/cfield.c']
|
'_ctypes/cfield.c']
|
||||||
depends = ['_ctypes/ctypes.h']
|
depends = ['_ctypes/ctypes.h']
|
||||||
|
math_libs = self.detect_math_libs()
|
||||||
|
|
||||||
if host_platform == 'darwin':
|
if host_platform == 'darwin':
|
||||||
sources.append('_ctypes/malloc_closure.c')
|
sources.append('_ctypes/malloc_closure.c')
|
||||||
|
@ -1967,8 +1978,10 @@ class PyBuildExt(build_ext):
|
||||||
libraries=[],
|
libraries=[],
|
||||||
sources=sources,
|
sources=sources,
|
||||||
depends=depends)
|
depends=depends)
|
||||||
|
# function my_sqrt() needs math library for sqrt()
|
||||||
ext_test = Extension('_ctypes_test',
|
ext_test = Extension('_ctypes_test',
|
||||||
sources=['_ctypes/_ctypes_test.c'])
|
sources=['_ctypes/_ctypes_test.c'],
|
||||||
|
libraries=math_libs)
|
||||||
self.extensions.extend([ext, ext_test])
|
self.extensions.extend([ext, ext_test])
|
||||||
|
|
||||||
if not '--with-system-ffi' in sysconfig.get_config_var("CONFIG_ARGS"):
|
if not '--with-system-ffi' in sysconfig.get_config_var("CONFIG_ARGS"):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue