Adds a profile-opt target for easy compilation of a python binary using

gcc's profile guided optimization.
This commit is contained in:
Gregory P. Smith 2008-04-13 00:03:25 +00:00
parent e974689038
commit b2693e007b
1 changed files with 29 additions and 1 deletions

View File

@ -176,6 +176,10 @@ UNICODE_OBJS= @UNICODE_OBJS@
PYTHON= python$(EXE)
BUILDPYTHON= python$(BUILDEXE)
# The task to run while instrument when building the profile-opt target
PROFILE_TASK= Tools/pybench/pybench.py -n 2 --with-gc --with-syscheck
#PROFILE_TASK= Lib/test/regrtest.py
# === Definitions added by makesetup ===
@ -349,6 +353,27 @@ LIBRARY_OBJS= \
all: build_all
build_all: $(BUILDPYTHON) oldsharedmods sharedmods
# Compile a binary with gcc profile guided optimization.
profile-opt:
@echo "Building with support for profile generation:"
$(MAKE) clean
$(MAKE) build_all_generate_profile
@echo "Running benchmark to generate profile data:"
$(MAKE) profile-removal
$(MAKE) run_profile_task
@echo "Rebuilding with profile guided optimizations:"
$(MAKE) clean
$(MAKE) build_all_use_profile
build_all_generate_profile:
$(MAKE) all CFLAGS="$(CFLAGS) -fprofile-generate" LIBS="$(LIBS) -lgcov"
run_profile_task:
./$(BUILDPYTHON) $(PROFILE_TASK)
build_all_use_profile:
$(MAKE) all CFLAGS="$(CFLAGS) -fprofile-use"
# Build the interpreter
$(BUILDPYTHON): Modules/python.o $(LIBRARY) $(LDLIBRARY)
$(LINKCC) $(LDFLAGS) $(LINKFORSHARED) -o $@ \
@ -1099,7 +1124,10 @@ clean: pycremoval
find $(srcdir)/build -name 'fficonfig.h' -exec rm -f {} ';' || true
find $(srcdir)/build -name 'fficonfig.py' -exec rm -f {} ';' || true
clobber: clean
profile-removal:
find . -name '*.gc??' -exec rm -f {} ';'
clobber: clean profile-removal
-rm -f $(BUILDPYTHON) $(PGEN) $(LIBRARY) $(LDLIBRARY) $(DLLLIBRARY) \
tags TAGS \
config.cache config.log pyconfig.h Modules/config.c