value to be able to build extension modules using the
directories specified in the environment variables.
+ Please consider using ``EXE_LDFLAGS`` if the supplied linker flags are
+ executable specific, e.g. GCC's ``-pie`` flag.
+
.. envvar:: LIBS
Linker flags to pass libraries to the linker when linking the Python
.. versionadded:: 3.8
+.. envvar:: EXE_LDFLAGS
+
+ Linker flags used for building executable targets such as the
+ interpreter. If supplied, :envvar:`PY_CORE_EXE_LDFLAGS`
+ will be used in replacement of :envvar:`PY_CORE_LDFLAGS`.
+
+ .. versionadded:: 3.15
+
+.. envvar:: CONFIGURE_EXE_LDFLAGS
+
+ Value of :envvar:`EXE_LDFLAGS` variable passed to the ``./configure``
+ script.
+
+ .. versionadded:: 3.15
+
+.. envvar:: PY_CORE_EXE_LDFLAGS
+
+ Linker flags used for building the interpreter and
+ executable targets.
+
+ Default: ``$(PY_CORE_LDFLAGS)``
+
+ .. versionadded:: 3.15
+
.. rubric:: Footnotes
_UNIVERSAL_CONFIG_VARS = ('CFLAGS', 'LDFLAGS', 'CPPFLAGS', 'BASECFLAGS',
'BLDSHARED', 'LDSHARED', 'CC', 'CXX',
'PY_CFLAGS', 'PY_LDFLAGS', 'PY_CPPFLAGS',
- 'PY_CORE_CFLAGS', 'PY_CORE_LDFLAGS')
+ 'PY_CORE_CFLAGS', 'PY_CORE_LDFLAGS',
+ 'PY_CORE_EXE_LDFLAGS')
# configuration variables that may contain compiler calls
_COMPILER_CONFIG_VARS = ('BLDSHARED', 'LDSHARED', 'CC', 'CXX')
'PY_CFLAGS',
'PY_CFLAGS_NODIST',
'PY_CORE_LDFLAGS',
+ 'PY_CORE_EXE_LDFLAGS',
'PY_LDFLAGS',
'PY_LDFLAGS_NODIST',
'PY_STDMODULE_CFLAGS',
'CFLAGS', 'LDFLAGS', 'CPPFLAGS',
'BASECFLAGS', 'BLDSHARED', 'LDSHARED', 'CC',
'CXX', 'PY_CFLAGS', 'PY_LDFLAGS', 'PY_CPPFLAGS',
- 'PY_CORE_CFLAGS', 'PY_CORE_LDFLAGS'
+ 'PY_CORE_CFLAGS', 'PY_CORE_LDFLAGS', 'PY_CORE_EXE_LDFLAGS'
)
def add_expected_saved_initial_values(self, config_vars, expected_vars):
PY_BUILTIN_MODULE_CFLAGS= $(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN
PY_CORE_CFLAGS= $(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE
# Linker flags used for building the interpreter object files
+# In particular, EXE_LDFLAGS is an extra flag to provide fine grain distinction between
+# LDFLAGS used to build executables and shared targets.
PY_CORE_LDFLAGS=$(PY_LDFLAGS) $(PY_LDFLAGS_NODIST)
+CONFIGURE_EXE_LDFLAGS=@EXE_LDFLAGS@
+PY_CORE_EXE_LDFLAGS:= $(if $(CONFIGURE_EXE_LDFLAGS), $(CONFIGURE_EXE_LDFLAGS) $(PY_LDFLAGS_NODIST), $(PY_CORE_LDFLAGS))
# Strict or non-strict aliasing flags used to compile dtoa.c, see above
CFLAGS_ALIASING=@CFLAGS_ALIASING@
# Build the interpreter
$(BUILDPYTHON): Programs/python.o $(LINK_PYTHON_DEPS)
- $(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/python.o $(LINK_PYTHON_OBJS) $(LIBS) $(MODLIBS) $(SYSLIBS)
+ $(LINKCC) $(PY_CORE_EXE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/python.o $(LINK_PYTHON_OBJS) $(LIBS) $(MODLIBS) $(SYSLIBS)
platform: $(PYTHON_FOR_BUILD_DEPS) pybuilddir.txt
$(RUNSHARED) $(PYTHON_FOR_BUILD) -c 'import sys ; from sysconfig import get_platform ; print("%s-%d.%d" % (get_platform(), *sys.version_info[:2]))' >platform
$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/build/generate_re_casefix.py $(srcdir)/Lib/re/_casefix.py
Programs/_testembed: Programs/_testembed.o $(LINK_PYTHON_DEPS)
- $(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/_testembed.o $(LINK_PYTHON_OBJS) $(LIBS) $(MODLIBS) $(SYSLIBS)
+ $(LINKCC) $(PY_CORE_EXE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/_testembed.o $(LINK_PYTHON_OBJS) $(LIBS) $(MODLIBS) $(SYSLIBS)
############################################################################
# "Bootstrap Python" used to run Programs/_freeze_module.py
Mikhail Terekhov
Victor Terrón
Pablo Galindo
+Rue Ching Teh
Richard M. Tew
Srinivas Reddy Thatiparthy
Tobias Thelen
--- /dev/null
+Introduce executable specific linker flags to ``./configure``.
WASM_STDLIB
WASM_ASSETS_DIR
LDFLAGS_NOLTO
+EXE_LDFLAGS
LDFLAGS_NODIST
CFLAGS_NODIST
BASECFLAGS
+
# The -arch flags for universal builds on macOS
UNIVERSAL_ARCH_FLAGS=
AC_SUBST([BASECFLAGS])
AC_SUBST([CFLAGS_NODIST])
AC_SUBST([LDFLAGS_NODIST])
+AC_SUBST([EXE_LDFLAGS])
AC_SUBST([LDFLAGS_NOLTO])
AC_SUBST([WASM_ASSETS_DIR])
AC_SUBST([WASM_STDLIB])