diff options
author | Gregory P. Smith <greg@mad-scientist.com> | 2008-04-13 00:03:25 (GMT) |
---|---|---|
committer | Gregory P. Smith <greg@mad-scientist.com> | 2008-04-13 00:03:25 (GMT) |
commit | b2693e007b4f0f85b24ec0ebefd75df73dbbd2be (patch) | |
tree | cce74c0ce73cf8b8139c797f9218f655206c13d7 /Makefile.pre.in | |
parent | e9746890388178bb1e4cdad3c0586bf1862c3727 (diff) | |
download | cpython-b2693e007b4f0f85b24ec0ebefd75df73dbbd2be.zip cpython-b2693e007b4f0f85b24ec0ebefd75df73dbbd2be.tar.gz cpython-b2693e007b4f0f85b24ec0ebefd75df73dbbd2be.tar.bz2 |
Adds a profile-opt target for easy compilation of a python binary using
gcc's profile guided optimization.
Diffstat (limited to 'Makefile.pre.in')
-rw-r--r-- | Makefile.pre.in | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/Makefile.pre.in b/Makefile.pre.in index bb70301..02cc59c 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -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 |