summaryrefslogtreecommitdiffstats
path: root/configure.ac
diff options
context:
space:
mode:
authorChristian Heimes <christian@python.org>2021-12-03 15:01:11 (GMT)
committerGitHub <noreply@github.com>2021-12-03 15:01:11 (GMT)
commit84ca1232b0f1e4be368e89550a9ceb46f64a0eff (patch)
tree917838767e45e47c72931d4d2b370c4f0b2eaf0e /configure.ac
parentccb73a0d50dd03bc8455fe210cb83e41a6dc91d8 (diff)
downloadcpython-84ca1232b0f1e4be368e89550a9ceb46f64a0eff.zip
cpython-84ca1232b0f1e4be368e89550a9ceb46f64a0eff.tar.gz
cpython-84ca1232b0f1e4be368e89550a9ceb46f64a0eff.tar.bz2
bpo-45950: Introduce Bootstrap Python again (#29859)
The build system now uses a :program:`_bootstrap_python` interpreter for freezing and deepfreezing again. To speed up build process the build tools :program:`_bootstrap_python` and :program:`_freeze_module` are no longer build with LTO. Cross building depends on a build Python interpreter, which must have same version and bytecode as target host Python.
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac15
1 files changed, 13 insertions, 2 deletions
diff --git a/configure.ac b/configure.ac
index 99fa94d..b35c92a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -143,8 +143,9 @@ AC_ARG_WITH(
if test "$build_python_ver" != "$PACKAGE_VERSION"; then
AC_MSG_ERROR(["$with_build_python" has incompatible version $build_python_ver (expected: $PACKAGE_VERSION)])
fi
- dnl use build Python for regeneration, too
+ dnl Build Python interpreter is used for regeneration and freezing.
ac_cv_prog_PYTHON_FOR_REGEN=$with_build_python
+ PYTHON_FOR_FREEZE="$with_build_python"
PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH) '$with_build_python
AC_MSG_RESULT([$with_build_python])
], [
@@ -152,17 +153,22 @@ AC_ARG_WITH(
[AC_MSG_ERROR([Cross compiling requires --with-build-python])]
)
PYTHON_FOR_BUILD='./$(BUILDPYTHON) -E'
+ PYTHON_FOR_FREEZE="./_bootstrap_python"
]
)
AC_SUBST([PYTHON_FOR_BUILD])
+AC_MSG_CHECKING([for Python interpreter freezing])
+AC_MSG_RESULT([$PYTHON_FOR_FREEZE])
+AC_SUBST([PYTHON_FOR_FREEZE])
+
AC_CHECK_PROGS([PYTHON_FOR_REGEN],
[python$PACKAGE_VERSION python3.10 python3.9 python3.8 python3.7 python3.6 python3 python],
[python3])
AC_SUBST(PYTHON_FOR_REGEN)
AC_MSG_CHECKING([Python for regen version])
-if command -v $PYTHON_FOR_REGEN >/dev/null 2>&1; then
+if command -v "$PYTHON_FOR_REGEN" >/dev/null 2>&1; then
AC_MSG_RESULT([$($PYTHON_FOR_REGEN -V 2>/dev/null)])
else
AC_MSG_RESULT([missing])
@@ -1510,6 +1516,8 @@ esac
if test "$Py_LTO" = 'true' ; then
case $CC in
*clang*)
+ dnl flag to disable lto during linking
+ LDFLAGS_NOLTO="-fno-lto"
AC_SUBST(LLVM_AR)
AC_PATH_TOOL(LLVM_AR, llvm-ar, '', ${llvm_path})
AC_SUBST(LLVM_AR_FOUND)
@@ -1565,6 +1573,8 @@ if test "$Py_LTO" = 'true' ; then
then
AC_MSG_ERROR([thin lto is not supported under gcc compiler.])
fi
+ dnl flag to disable lto during linking
+ LDFLAGS_NOLTO="-fno-lto"
case $ac_sys_system in
Darwin*)
LTOFLAGS="-flto -Wl,-export_dynamic"
@@ -1746,6 +1756,7 @@ fi
AC_SUBST(BASECFLAGS)
AC_SUBST(CFLAGS_NODIST)
AC_SUBST(LDFLAGS_NODIST)
+AC_SUBST(LDFLAGS_NOLTO)
# The -arch flags for universal builds on macOS
UNIVERSAL_ARCH_FLAGS=