AFDO for Rust
Bug: 195134194
Bug: 165018530
Test: build
Change-Id: I30932a22dc0b22716cdc925a3fcc5f9a169fcec4
diff --git a/rust/rust.go b/rust/rust.go
index cba92c3..0f7b768 100644
--- a/rust/rust.go
+++ b/rust/rust.go
@@ -148,6 +148,7 @@
makeLinkType string
+ afdo *afdo
compiler compiler
coverage *coverage
clippy *clippy
@@ -403,6 +404,7 @@
SharedLibDeps android.Paths
StaticLibs android.Paths
ProcMacros RustLibraries
+ AfdoProfiles android.Paths
// depFlags and depLinkFlags are rustc and linker (clang) flags.
depFlags []string
@@ -551,6 +553,7 @@
module.AddProperties(props...)
module.AddProperties(
&BaseProperties{},
+ &cc.AfdoProperties{},
&cc.VendorProperties{},
&BenchmarkProperties{},
&BindgenProperties{},
@@ -688,6 +691,9 @@
mod.AddProperties(&mod.Properties)
mod.AddProperties(&mod.VendorProperties)
+ if mod.afdo != nil {
+ mod.AddProperties(mod.afdo.props()...)
+ }
if mod.compiler != nil {
mod.AddProperties(mod.compiler.compilerProps()...)
}
@@ -719,6 +725,7 @@
}
func newModule(hod android.HostOrDeviceSupported, multilib android.Multilib) *Module {
module := newBaseModule(hod, multilib)
+ module.afdo = &afdo{}
module.coverage = &coverage{}
module.clippy = &clippy{}
module.sanitize = &sanitize{}
@@ -856,6 +863,9 @@
}
// Calculate rustc flags
+ if mod.afdo != nil {
+ flags, deps = mod.afdo.flags(ctx, flags, deps)
+ }
if mod.compiler != nil {
flags = mod.compiler.compilerFlags(ctx, flags)
flags = mod.compiler.cfgFlags(ctx, flags)