# Profile generation build must start from a clean tree.
profile-clean-stamp:
- $(MAKE) clean
+ $(MAKE) clean-profile
touch $@
# Compile with profile generation enabled.
-rm -rf Python/deepfreeze
-rm -f Python/frozen_modules/*.h
-rm -f Python/frozen_modules/MANIFEST
- -rm -f jit_stencils*.h
-find build -type f -a ! -name '*.gc??' -exec rm -f {} ';'
-rm -f Include/pydtrace_probes.h
-rm -f profile-gen-stamp
rm -f profile-run-stamp
rm -f profile-bolt-stamp
-.PHONY: clean
-clean: clean-retain-profile clean-bolt
+.PHONY: clean-profile
+clean-profile: clean-retain-profile clean-bolt
@if test @DEF_MAKE_ALL_RULE@ = profile-opt -o @DEF_MAKE_ALL_RULE@ = bolt-opt; then \
rm -f profile-gen-stamp profile-clean-stamp; \
$(MAKE) profile-removal; \
fi
+# gh-141808: The JIT stencils are deliberately kept in clean-profile
+.PHONY: clean-jit-stencils
+clean-jit-stencils:
+ -rm -f jit_stencils*.h
+
+.PHONY: clean
+clean: clean-profile clean-jit-stencils
+
.PHONY: clobber
clobber: clean
-rm -f $(BUILDPYTHON) $(LIBRARY) $(LDLIBRARY) $(DLLLIBRARY) \
--- /dev/null
+When running ``make clean-retain-profile``, keep the
+generated JIT stencils. That way, the stencils are not generated twice when
+Profile-guided optimization (PGO) is used. It also allows distributors to
+supply their own pre-built JIT stencils.