]> granicus.if.org Git - python/commitdiff
bpo-37725: have "make clean" remove PGO task data (#15033)
authorNeil Schemenauer <nas-github@arctrix.com>
Tue, 10 Sep 2019 09:44:20 +0000 (02:44 -0700)
committerDino Viehland <dinoviehland@gmail.com>
Tue, 10 Sep 2019 09:44:20 +0000 (10:44 +0100)
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".

Makefile.pre.in
Misc/NEWS.d/next/Build/2019-07-30-16-26-11.bpo-37725.MkG1TT.rst [new file with mode: 0644]

index dbf95fdcd181a7759339cd3b05af2dd8f0cded39..4f4f096e728338d8587d6122d7635eea9294a967 100644 (file)
@@ -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 (file)
index 0000000..1687cf2
--- /dev/null
@@ -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".