summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeil Schemenauer <nas-github@arctrix.com>2019-09-10 09:44:20 (GMT)
committerDino Viehland <dinoviehland@gmail.com>2019-09-10 09:44:20 (GMT)
commitc6bbcd258302b4b9b3d4f3c39bb5f7ff0120ec67 (patch)
tree650f2464303357d5f8dd2427df2997085b9745cc
parent1ad0c776cb640be9f19c8019bbf34bb4aba312ad (diff)
downloadcpython-c6bbcd258302b4b9b3d4f3c39bb5f7ff0120ec67.zip
cpython-c6bbcd258302b4b9b3d4f3c39bb5f7ff0120ec67.tar.gz
cpython-c6bbcd258302b4b9b3d4f3c39bb5f7ff0120ec67.tar.bz2
bpo-37725: have "make clean" remove PGO task data (#15033)
Change "clean" makefile target to also clean the program guided optimization (PGO) data. Previously you would have to use "make clean" and "make profile-removal", or "make clobber".
-rw-r--r--Makefile.pre.in21
-rw-r--r--Misc/NEWS.d/next/Build/2019-07-30-16-26-11.bpo-37725.MkG1TT.rst3
2 files changed, 18 insertions, 6 deletions
diff --git a/Makefile.pre.in b/Makefile.pre.in
index dbf95fd..4f4f096 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -461,7 +461,7 @@ check-clean-src:
# Profile generation build must start from a clean tree.
profile-clean-stamp:
- $(MAKE) clean profile-removal
+ $(MAKE) clean
touch $@
# Compile with profile generation enabled.
@@ -485,7 +485,7 @@ profile-run-stamp:
$(MAKE) run_profile_task
$(MAKE) build_all_merge_profile
# Remove profile generation binary since we are done with it.
- $(MAKE) clean
+ $(MAKE) clean-retain-profile
# This is an expensive target to build and it does not have proper
# makefile dependency information. So, we create a "stamp" file
# to record its completion and avoid re-running it.
@@ -512,7 +512,7 @@ profile-opt: profile-run-stamp
.PHONY=coverage coverage-lcov coverage-report
coverage:
@echo "Building with support for coverage checking:"
- $(MAKE) clean profile-removal
+ $(MAKE) clean
$(MAKE) @DEF_MAKE_RULE@ CFLAGS="$(CFLAGS) -O0 -pg -fprofile-arcs -ftest-coverage" LIBS="$(LIBS) -lgcov"
coverage-lcov:
@@ -1752,7 +1752,9 @@ docclean:
-rm -rf Doc/build
-rm -rf Doc/tools/sphinx Doc/tools/pygments Doc/tools/docutils
-clean: pycremoval
+# like the 'clean' target but retain the profile guided optimization (PGO)
+# data. The PGO data is only valid if source code remains unchanged.
+clean-retain-profile: pycremoval
find . -name '*.[oa]' -exec rm -f {} ';'
find . -name '*.s[ol]' -exec rm -f {} ';'
find . -name '*.so.[0-9]*.[0-9]*' -exec rm -f {} ';'
@@ -1774,14 +1776,19 @@ profile-removal:
rm -rf $(COVERAGE_REPORT)
rm -f profile-run-stamp
-clobber: clean profile-removal
+clean: clean-retain-profile
+ @if test @DEF_MAKE_ALL_RULE@ = profile-opt; then \
+ rm -f profile-gen-stamp profile-clean-stamp; \
+ $(MAKE) profile-removal; \
+ fi
+
+clobber: clean
-rm -f $(BUILDPYTHON) $(LIBRARY) $(LDLIBRARY) $(DLLLIBRARY) \
tags TAGS \
config.cache config.log pyconfig.h Modules/config.c
-rm -rf build platform
-rm -rf $(PYTHONFRAMEWORKDIR)
-rm -f python-config.py python-config
- -rm -f profile-gen-stamp profile-clean-stamp
# Make things extra clean, before making a distribution:
# remove all generated files, even Makefile[.pre]
@@ -1855,6 +1862,8 @@ Python/thread.o: @THREADHEADERS@ $(srcdir)/Python/condvar.h
.PHONY: frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools
.PHONY: frameworkaltinstallunixtools recheck clean clobber distclean
.PHONY: smelly funny patchcheck touch altmaninstall commoninstall
+.PHONY: clean-retain-profile profile-removal run_profile_task
+.PHONY: build_all_generate_profile build_all_merge_profile
.PHONY: gdbhooks
# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
diff --git a/Misc/NEWS.d/next/Build/2019-07-30-16-26-11.bpo-37725.MkG1TT.rst b/Misc/NEWS.d/next/Build/2019-07-30-16-26-11.bpo-37725.MkG1TT.rst
new file mode 100644
index 0000000..1687cf2
--- /dev/null
+++ b/Misc/NEWS.d/next/Build/2019-07-30-16-26-11.bpo-37725.MkG1TT.rst
@@ -0,0 +1,3 @@
+Change "clean" makefile target to also clean the program guided optimization
+(PGO) data. Previously you would have to use "make clean" and "make
+profile-removal", or "make clobber".