[Python-checkins] r62304 - python/trunk/Makefile.pre.in
gregory.p.smith
python-checkins at python.org
Sun Apr 13 02:03:26 CEST 2008
Author: gregory.p.smith
Date: Sun Apr 13 02:03:25 2008
New Revision: 62304
Log:
Adds a profile-opt target for easy compilation of a python binary using
gcc's profile guided optimization.
Modified:
python/trunk/Makefile.pre.in
Modified: python/trunk/Makefile.pre.in
==============================================================================
--- python/trunk/Makefile.pre.in (original)
+++ python/trunk/Makefile.pre.in Sun Apr 13 02:03:25 2008
@@ -176,6 +176,10 @@
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 @@
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 @@
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
More information about the Python-checkins
mailing list