mirror of
git://git.yoctoproject.org/poky
synced 2026-04-27 11:41:57 +00:00
Enable profile guided optimization (pgo) for python3. Enabling pgo in python is generally as simple as invoking the target profile-opt which: - builds python binaries with profile instrumentation enabled, - runs a specific profile task using that python to get the profile data and, - feeds the compiler with this profile data and rebuilds python. This change invokes qemu-user for the second step of running a profile task using target python. Depending on how long profile task takes to run, this might add a significant time to compilation (which would be true for native builds too). The default profile task can be changed by the users depending on what makes sense for their use case (or can be left empty). In case qemu-user isn't supported, profile task won't be run. (From OE-Core rev: 05a2a53f9cc7e75b4a3838ab9368cadf0f15ba1b) Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
57 lines
2.3 KiB
Diff
57 lines
2.3 KiB
Diff
From 7fd121bb7d6c25c2e0a1c31cf76fb9bd4a9794de Mon Sep 17 00:00:00 2001
|
|
From: Markus Lehtonen <markus.lehtonen@linux.intel.com>
|
|
Date: Tue, 14 Aug 2018 14:11:35 +0800
|
|
Subject: [PATCH 1/2] Use correct CFLAGS for extensions when cross-compiling
|
|
|
|
Take PY_CFLAGS_NODIST into account, like in native build. This is needed
|
|
in order to to profile-optimized build. Also, pass EXTRA_CFLAGS to
|
|
profile-optimized build.
|
|
|
|
Upstream-Status: Pending
|
|
|
|
Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
|
|
---
|
|
Makefile.pre.in | 4 ++--
|
|
setup.py | 3 ++-
|
|
2 files changed, 4 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/Makefile.pre.in b/Makefile.pre.in
|
|
index e2d5d3d..84bc3ff 100644
|
|
--- a/Makefile.pre.in
|
|
+++ b/Makefile.pre.in
|
|
@@ -478,7 +478,7 @@ profile-opt:
|
|
$(MAKE) profile-removal
|
|
|
|
build_all_generate_profile:
|
|
- $(MAKE) @DEF_MAKE_RULE@ CFLAGS_NODIST="$(CFLAGS) $(PGO_PROF_GEN_FLAG) @LTOFLAGS@" LDFLAGS="$(LDFLAGS) $(PGO_PROF_GEN_FLAG) @LTOFLAGS@" LIBS="$(LIBS)"
|
|
+ $(MAKE) @DEF_MAKE_RULE@ CFLAGS_NODIST="$(CFLAGS) $(EXTRA_CFLAGS) $(PGO_PROF_GEN_FLAG) @LTOFLAGS@" LDFLAGS="$(LDFLAGS) $(PGO_PROF_GEN_FLAG) @LTOFLAGS@" LIBS="$(LIBS)"
|
|
|
|
run_profile_task:
|
|
: # FIXME: can't run for a cross build
|
|
@@ -488,7 +488,7 @@ build_all_merge_profile:
|
|
$(LLVM_PROF_MERGER)
|
|
|
|
build_all_use_profile:
|
|
- $(MAKE) @DEF_MAKE_RULE@ CFLAGS_NODIST="$(CFLAGS) $(PGO_PROF_USE_FLAG) @LTOFLAGS@" LDFLAGS="$(LDFLAGS) @LTOFLAGS@"
|
|
+ $(MAKE) @DEF_MAKE_RULE@ CFLAGS_NODIST="$(CFLAGS) $(EXTRA_CFLAGS) $(PGO_PROF_USE_FLAG) @LTOFLAGS@" LDFLAGS="$(LDFLAGS) @LTOFLAGS@"
|
|
|
|
# Compile and run with gcov
|
|
.PHONY=coverage coverage-lcov coverage-report
|
|
diff --git a/setup.py b/setup.py
|
|
index add3346..65e83b1 100644
|
|
--- a/setup.py
|
|
+++ b/setup.py
|
|
@@ -263,7 +263,8 @@ class PyBuildExt(build_ext):
|
|
# compilers
|
|
if compiler is not None:
|
|
if cross_compiling:
|
|
- (ccshared,cflags) = (os.environ.get('CCSHARED') or '', os.environ.get('CFLAGS') or '')
|
|
+ (ccshared,cflags) = (os.environ.get('CCSHARED') or '',
|
|
+ (os.environ.get('CFLAGS') or '') + ' ' + sysconfig.get_config_var('PY_CFLAGS_NODIST'))
|
|
else:
|
|
(ccshared,cflags) = sysconfig.get_config_vars('CCSHARED','CFLAGS')
|
|
args['compiler_so'] = compiler + ' ' + ccshared + ' ' + cflags
|
|
--
|
|
2.17.1
|
|
|