summaryrefslogtreecommitdiffstats
path: root/configure.ac
diff options
context:
space:
mode:
authorBrett Cannon <brett@python.org>2016-09-07 00:12:40 (GMT)
committerBrett Cannon <brett@python.org>2016-09-07 00:12:40 (GMT)
commit63d98bcd4c88eea1c4b50dae95da662284813114 (patch)
tree3d9cd6a47792930a1db8e6e3307f42f7907d02b8 /configure.ac
parent62ec3317d2b7f1be98ff49b2278538a9ae5a7049 (diff)
downloadcpython-63d98bcd4c88eea1c4b50dae95da662284813114.zip
cpython-63d98bcd4c88eea1c4b50dae95da662284813114.tar.gz
cpython-63d98bcd4c88eea1c4b50dae95da662284813114.tar.bz2
Issue #26359: Add the --with-optimizations configure flag.
The flag will activate LTO and PGO build support when available. Thanks to Alecsandur Patrascu of Intel for the original patch.
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac41
1 files changed, 41 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
index 786796a..b511a79 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1282,6 +1282,37 @@ else AC_MSG_RESULT(no); Py_DEBUG='false'
fi],
[AC_MSG_RESULT(no)])
+# Enable optimization flags
+AC_SUBST(DEF_MAKE_ALL_RULE)
+AC_SUBST(DEF_MAKE_RULE)
+Py_OPT='false'
+AC_MSG_CHECKING(for --with-optimizations)
+AC_ARG_WITH(optimizations, AS_HELP_STRING([--with-optimizations], [Enable all optimizations when available (LTO, PGO, etc). Disabled by default.]),
+[
+if test "$withval" != no
+then
+ Py_OPT='true'
+ AC_MSG_RESULT(yes);
+else
+ Py_OPT='false'
+ AC_MSG_RESULT(no);
+fi],
+[AC_MSG_RESULT(no)])
+if test "$Py_OPT" = 'true' ; then
+ Py_LTO='true'
+ case $ac_sys_system in
+ Darwin*)
+ # At least on macOS El Capitan, LTO does not work with PGO.
+ Py_LTO='false'
+ ;;
+ esac
+ DEF_MAKE_ALL_RULE="profile-opt"
+ DEF_MAKE_RULE="build_all"
+else
+ DEF_MAKE_ALL_RULE="build_all"
+ DEF_MAKE_RULE="all"
+fi
+
# Enable LTO flags
AC_SUBST(LTOFLAGS)
AC_MSG_CHECKING(for --with-lto)
@@ -5337,3 +5368,13 @@ $SHELL $srcdir/Modules/makesetup -c $srcdir/Modules/config.c.in \
-s Modules Modules/Setup.config \
Modules/Setup.local Modules/Setup
mv config.c Modules
+
+if test "$Py_OPT" = 'false' -a "$Py_DEBUG" != 'true'; then
+ echo "" >&AS_MESSAGE_FD
+ echo "" >&AS_MESSAGE_FD
+ echo "If you want a release build with all optimizations active (LTO, PGO, etc),"
+ echo "please run ./configure --with-optimizations" >&AS_MESSAGE_FD
+ echo "" >&AS_MESSAGE_FD
+ echo "" >&AS_MESSAGE_FD
+fi
+