This changes Python's standard profile-guided build target to work with
|
Studio instead of gcc. The unfortunate repetition of options seen below
|
is a workaround for build peculiarities and to meet Studio's requirement
|
that the profiling options be used at all steps of the build -- not just
|
compilation. As it is Solaris-specific, it is not suitable for upstream.
|
|
--- Python-3.4.0/Makefile.pre.in.~2~ 2014-03-19 10:42:20.230354945 -0700
|
+++ Python-3.4.0/Makefile.pre.in 2014-03-19 10:42:20.412767814 -0700
|
@@ -472,30 +472,39 @@
|
profile-opt:
|
@echo "Building with support for profile generation:"
|
$(MAKE) clean
|
+ $(MAKE) profile-removal
|
$(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"
|
+ $(MAKE) all CC="$(CC) -xprofile=collect:$(XPROFILE_DIR)" \
|
+ CFLAGS="$(CFLAGS) -xprofile=collect:$(XPROFILE_DIR)" \
|
+ LDFLAGS="$(LDFLAGS) -xprofile=collect:$(XPROFILE_DIR)" \
|
+ BLDSHARED="$(BLDSHARED) -xprofile=collect:$(XPROFILE_DIR)"
|
|
run_profile_task:
|
: # FIXME: can't run for a cross build
|
- $(RUNSHARED) ./$(BUILDPYTHON) $(PROFILE_TASK)
|
+ LD_LIBRARY_PATH=. $(RUNSHARED) ./$(BUILDPYTHON) $(PROFILE_TASK)
|
|
build_all_use_profile:
|
- $(MAKE) all CFLAGS="$(CFLAGS) -fprofile-use -fprofile-correction"
|
+ $(MAKE) all CC="$(CC) -xprofile=use:$(XPROFILE_DIR)" \
|
+ CFLAGS="$(CFLAGS) -xprofile=use:$(XPROFILE_DIR)" \
|
+ LDFLAGS="$(LDFLAGS) -xprofile=use:$(XPROFILE_DIR)" \
|
+ BLDSHARED="$(BLDSHARED) -xprofile=use:$(XPROFILE_DIR)"
|
|
# Compile and run with gcov
|
.PHONY=coverage coverage-lcov coverage-report
|
coverage:
|
@echo "Building with support for coverage checking:"
|
$(MAKE) clean profile-removal
|
- $(MAKE) all CFLAGS="$(CFLAGS) -O0 -pg -fprofile-arcs -ftest-coverage" LIBS="$(LIBS) -lgcov"
|
+ $(MAKE) all CC="$(CC) -xprofile=tcov" \
|
+ CFLAGS="$(CFLAGS) -xO1 -xprofile=tcov" \
|
+ LDFLAGS="$(LDFLAGS) -xprofile=tcov" \
|
+ BLDSHARED="$(BLDSHARED) -xprofile=tcov"
|
|
coverage-lcov:
|
@echo "Creating Coverage HTML report with LCOV:"
|
@@ -556,13 +565,9 @@
|
# -s, --silent or --quiet is always the first char.
|
# Under BSD make, MAKEFLAGS might be " -s -v x=y".
|
sharedmods: $(BUILDPYTHON) pybuilddir.txt
|
- @case "$$MAKEFLAGS" in \
|
- *\ -s*|s*) quiet="-q";; \
|
- *) quiet="";; \
|
- esac; \
|
$(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' \
|
_TCLTK_INCLUDES='$(TCLTK_INCLUDES)' _TCLTK_LIBS='$(TCLTK_LIBS)' \
|
- $(PYTHON_FOR_BUILD) $(srcdir)/setup.py $$quiet build
|
+ $(PYTHON_FOR_BUILD) $(srcdir)/setup.py build
|
|
# Build static library
|
# avoid long command lines, same as LIBRARY_OBJS
|
@@ -1575,7 +1580,7 @@
|
-rm -f Modules/_testembed Modules/_freeze_importlib
|
|
profile-removal:
|
- find . -name '*.gc??' -exec rm -f {} ';'
|
+ find . -name '*profile' -exec rm -f {} ';'
|
rm -f $(COVERAGE_INFO)
|
rm -rf $(COVERAGE_REPORT)
|
|