summaryrefslogtreecommitdiff
path: root/setup.py
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@redhat.com>2018-12-20 16:03:01 +0100
committerGitHub <noreply@github.com>2018-12-20 16:03:01 +0100
commit0198f52ea2328fd932622ad2299381f617a041f2 (patch)
tree4a9f2733570b0f7349a04a209866d95a5f573d54 /setup.py
parent5d0498a6967d45042b7a9345f6d871047edbaa25 (diff)
downloadcpython-git-0198f52ea2328fd932622ad2299381f617a041f2.tar.gz
bpo-35257: Avoid leaking LTO linker flags into distutils (GH-10900) (GH-11264)
When compiling 3rd party C extensions, the linker flags used by the compiler for the interpreter and the stdlib modules, will get leaked into distutils. In order to avoid that, the PY_CORE_LDFLAGS and PY_LDFLAGS_NODIST are introduced to keep those flags separated. (cherry picked from commit cf10a750f4b50b6775719cfb17bee00bc3a9c60b)
Diffstat (limited to 'setup.py')
-rw-r--r--setup.py15
1 files changed, 10 insertions, 5 deletions
diff --git a/setup.py b/setup.py
index a97a7559ca..b4357e39cf 100644
--- a/setup.py
+++ b/setup.py
@@ -18,11 +18,16 @@ from distutils.spawn import find_executable
cross_compiling = "_PYTHON_HOST_PLATFORM" in os.environ
-# Add special CFLAGS reserved for building the interpreter and the stdlib
-# modules (Issue #21121).
-cflags = sysconfig.get_config_var('CFLAGS')
-py_cflags_nodist = sysconfig.get_config_var('PY_CFLAGS_NODIST')
-sysconfig.get_config_vars()['CFLAGS'] = cflags + ' ' + py_cflags_nodist
+# Set common compiler and linker flags derived from the Makefile,
+# reserved for building the interpreter and the stdlib modules.
+# See bpo-21121 and bpo-35257
+def set_compiler_flags(compiler_flags, compiler_py_flags_nodist):
+ flags = sysconfig.get_config_var(compiler_flags)
+ py_flags_nodist = sysconfig.get_config_var(compiler_py_flags_nodist)
+ sysconfig.get_config_vars()[compiler_flags] = flags + ' ' + py_flags_nodist
+
+set_compiler_flags('CFLAGS', 'PY_CFLAGS_NODIST')
+set_compiler_flags('LDFLAGS', 'PY_LDFLAGS_NODIST')
class Dummy:
"""Hack for parallel build"""