summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoroctaviansoldea <octavian.soldea@intel.com>2017-09-08 19:14:33 (GMT)
committerGregory P. Smith <greg@krypto.org>2017-09-08 19:14:33 (GMT)
commit4c81401b3a9ffa48fc9e1ffff9963cbad5111e33 (patch)
tree9d55dc5abd1c0d6ae99657ae5dcce9ff1b8f00e9
parentb3ad0e5127bdeb6e506301e0d65403fa23c4177b (diff)
downloadcpython-4c81401b3a9ffa48fc9e1ffff9963cbad5111e33.zip
cpython-4c81401b3a9ffa48fc9e1ffff9963cbad5111e33.tar.gz
cpython-4c81401b3a9ffa48fc9e1ffff9963cbad5111e33.tar.bz2
bpo-31354: Let configure --with-lto work on all builds
Allow configure --with-lto to apply to all builds, not just profile-opt builds. Whether this is actually useful or not must be determined by the person building CPython using their own toolchain. My own quick test on x86_64 Debian 9 (gcc 6.3, binutils 2.28) seemed to suggest that it wasn't, but I expect better toolchains can or will exist at some point. The point is to allow it at all.
-rw-r--r--Makefile.pre.in4
-rw-r--r--Misc/NEWS.d/next/Build/2017-09-08-11-48-11.bpo-31354.4f-VJK.rst1
-rwxr-xr-xconfigure8
-rw-r--r--configure.ac5
4 files changed, 10 insertions, 8 deletions
diff --git a/Makefile.pre.in b/Makefile.pre.in
index 0eb5c4d..1c72100 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -463,7 +463,7 @@ profile-opt:
$(MAKE) profile-removal
build_all_generate_profile:
- $(MAKE) @DEF_MAKE_RULE@ CFLAGS_NODIST="$(CFLAGS) $(PGO_PROF_GEN_FLAG) @LTOFLAGS@" LDFLAGS="$(LDFLAGS) $(PGO_PROF_GEN_FLAG) @LTOFLAGS@" LIBS="$(LIBS)"
+ $(MAKE) @DEF_MAKE_RULE@ CFLAGS_NODIST="$(CFLAGS) $(PGO_PROF_GEN_FLAG)" LDFLAGS="$(LDFLAGS) $(PGO_PROF_GEN_FLAG)" LIBS="$(LIBS)"
run_profile_task:
@ # FIXME: can't run for a cross build
@@ -473,7 +473,7 @@ build_all_merge_profile:
$(LLVM_PROF_MERGER)
build_all_use_profile:
- $(MAKE) @DEF_MAKE_RULE@ CFLAGS_NODIST="$(CFLAGS) $(PGO_PROF_USE_FLAG) @LTOFLAGS@" LDFLAGS="$(LDFLAGS) @LTOFLAGS@"
+ $(MAKE) @DEF_MAKE_RULE@ CFLAGS_NODIST="$(CFLAGS) $(PGO_PROF_USE_FLAG)" LDFLAGS="$(LDFLAGS)"
# Compile and run with gcov
.PHONY=coverage coverage-lcov coverage-report
diff --git a/Misc/NEWS.d/next/Build/2017-09-08-11-48-11.bpo-31354.4f-VJK.rst b/Misc/NEWS.d/next/Build/2017-09-08-11-48-11.bpo-31354.4f-VJK.rst
new file mode 100644
index 0000000..b63c9ea
--- /dev/null
+++ b/Misc/NEWS.d/next/Build/2017-09-08-11-48-11.bpo-31354.4f-VJK.rst
@@ -0,0 +1 @@
+Allow --with-lto to be used on all builds, not just `make profile-opt`.
diff --git a/configure b/configure
index 12afe5e..00dd1f0 100755
--- a/configure
+++ b/configure
@@ -679,7 +679,6 @@ LLVM_PROF_FILE
LLVM_PROF_MERGER
PGO_PROF_USE_FLAG
PGO_PROF_GEN_FLAG
-LTOFLAGS
DEF_MAKE_RULE
DEF_MAKE_ALL_RULE
ABIFLAGS
@@ -1511,8 +1510,8 @@ Optional Packages:
--with-suffix=.exe set executable suffix
--with-pydebug build with Py_DEBUG defined
--with-assertions build with C assertions enabled
- --with-lto Enable Link Time Optimization in PGO builds.
- Disabled by default.
+ --with-lto Enable Link Time Optimization in any build. Disabled
+ by default.
--with-hash-algorithm=[fnv|siphash24]
select hash algorithm
--with-address-sanitizer
@@ -6511,7 +6510,6 @@ else
fi
# Enable LTO flags
-
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-lto" >&5
$as_echo_n "checking for --with-lto... " >&6; }
@@ -6557,6 +6555,8 @@ if test "$Py_LTO" = 'true' ; then
esac
;;
esac
+ CFLAGS="$CFLAGS $LTOFLAGS"
+ LDFLAGS="$LDFLAGS $LTOFLAGS"
fi
# Enable PGO flags.
diff --git a/configure.ac b/configure.ac
index 9cded9f..88ab6a1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1282,9 +1282,8 @@ else
fi
# Enable LTO flags
-AC_SUBST(LTOFLAGS)
AC_MSG_CHECKING(for --with-lto)
-AC_ARG_WITH(lto, AS_HELP_STRING([--with-lto], [Enable Link Time Optimization in PGO builds. Disabled by default.]),
+AC_ARG_WITH(lto, AS_HELP_STRING([--with-lto], [Enable Link Time Optimization in any build. Disabled by default.]),
[
if test "$withval" != no
then
@@ -1319,6 +1318,8 @@ if test "$Py_LTO" = 'true' ; then
esac
;;
esac
+ CFLAGS="$CFLAGS $LTOFLAGS"
+ LDFLAGS="$LDFLAGS $LTOFLAGS"
fi
# Enable PGO flags.