Add PGO support to soong
Bug: http://b/63768402 Bug: http://b/65598278 Add support for the 'pgo' property to specify how a module is processed under PGO. A sample property is below: pgo: { instrumentation: true, // could be "sampling: true" when supported profile_file: "pgo_simple.profdata", benchmarks: ["pgo_simple"], } 1. Runtime profiles can be gathered using "sampling" or "instrumentation". Sampling is not supported initially. 2. If 'toolchain/pgo-profiles' project is found, 'toolchain/pgo-profiles/${profile_file}' is passed to the compiler and linker when building this module. 3. If ANDROID_PGO_INSTRUMENT environment variable is set, and includes a benchmark in the 'benchmarks' list, appropriate flags (for e.g. -fprofile-generate for instrumentation) are passed to the compiler and linker when building this module. Test: Add example modules that specify the pgo property and verify appropriate flags and dependencies in the Ninja file. Some tests/examples are in https://android-review.googlesource.com/474805 Change-Id: I6242e0c904497a115e367dea6927ba1c4b906355
This commit is contained in:
@@ -484,6 +484,7 @@ func (library *libraryDecorator) linkShared(ctx ModuleContext,
|
||||
flags Flags, deps PathDeps, objs Objects) android.Path {
|
||||
|
||||
var linkerDeps android.Paths
|
||||
linkerDeps = append(linkerDeps, flags.LdFlagsDeps...)
|
||||
|
||||
versionScript := android.OptionalPathForModuleSrc(ctx, library.Properties.Version_script)
|
||||
unexportedSymbols := android.OptionalPathForModuleSrc(ctx, library.Properties.Unexported_symbols_list)
|
||||
@@ -628,7 +629,6 @@ func (library *libraryDecorator) link(ctx ModuleContext,
|
||||
flags Flags, deps PathDeps, objs Objects) android.Path {
|
||||
|
||||
objs = objs.Append(deps.Objs)
|
||||
|
||||
var out android.Path
|
||||
if library.static() || library.header() {
|
||||
out = library.linkStatic(ctx, flags, deps, objs)
|
||||
|
Reference in New Issue
Block a user