mirror of https://github.com/python/cpython
Adds a profile-opt target for easy compilation of a python binary using
gcc's profile guided optimization.
This commit is contained in:
parent
e974689038
commit
b2693e007b
|
@ -176,6 +176,10 @@ UNICODE_OBJS= @UNICODE_OBJS@
|
||||||
PYTHON= python$(EXE)
|
PYTHON= python$(EXE)
|
||||||
BUILDPYTHON= python$(BUILDEXE)
|
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 ===
|
# === Definitions added by makesetup ===
|
||||||
|
|
||||||
|
|
||||||
|
@ -349,6 +353,27 @@ LIBRARY_OBJS= \
|
||||||
all: build_all
|
all: build_all
|
||||||
build_all: $(BUILDPYTHON) oldsharedmods sharedmods
|
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
|
# Build the interpreter
|
||||||
$(BUILDPYTHON): Modules/python.o $(LIBRARY) $(LDLIBRARY)
|
$(BUILDPYTHON): Modules/python.o $(LIBRARY) $(LDLIBRARY)
|
||||||
$(LINKCC) $(LDFLAGS) $(LINKFORSHARED) -o $@ \
|
$(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.h' -exec rm -f {} ';' || true
|
||||||
find $(srcdir)/build -name 'fficonfig.py' -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) \
|
-rm -f $(BUILDPYTHON) $(PGEN) $(LIBRARY) $(LDLIBRARY) $(DLLLIBRARY) \
|
||||||
tags TAGS \
|
tags TAGS \
|
||||||
config.cache config.log pyconfig.h Modules/config.c
|
config.cache config.log pyconfig.h Modules/config.c
|
||||||
|
|
Loading…
Reference in New Issue