Re-land "Make building Rust targets faster in eng builds"

This reverts commit af9fc549ca, reversing
changes made to f617e18741.

Additionally, patch set #2 adds a fix for b/b/325547632.  We should not
pass the `-Z dylib-lto` flag.

Test: m rust
Test: ABTD rialto_test
Bug: https://b.corp.google.com/issues/289094772
Change-Id: I0b7cb62866391968029a23ab2daade28628944ea
This commit is contained in:
Chris Wailes
2024-02-16 11:34:26 -08:00
parent af9fc549ca
commit e3da5ea86b

View File

@@ -122,8 +122,6 @@ func init() {
func TransformSrcToBinary(ctx ModuleContext, mainSrc android.Path, deps PathDeps, flags Flags,
outputFile android.WritablePath) buildOutput {
flags.GlobalRustFlags = append(flags.GlobalRustFlags, "-C lto=thin")
return transformSrctoCrate(ctx, mainSrc, deps, flags, outputFile, "bin")
}
@@ -134,20 +132,16 @@ func TransformSrctoRlib(ctx ModuleContext, mainSrc android.Path, deps PathDeps,
func TransformSrctoDylib(ctx ModuleContext, mainSrc android.Path, deps PathDeps, flags Flags,
outputFile android.WritablePath) buildOutput {
flags.GlobalRustFlags = append(flags.GlobalRustFlags, "-C lto=thin")
return transformSrctoCrate(ctx, mainSrc, deps, flags, outputFile, "dylib")
}
func TransformSrctoStatic(ctx ModuleContext, mainSrc android.Path, deps PathDeps, flags Flags,
outputFile android.WritablePath) buildOutput {
flags.GlobalRustFlags = append(flags.GlobalRustFlags, "-C lto=thin")
return transformSrctoCrate(ctx, mainSrc, deps, flags, outputFile, "staticlib")
}
func TransformSrctoShared(ctx ModuleContext, mainSrc android.Path, deps PathDeps, flags Flags,
outputFile android.WritablePath) buildOutput {
flags.GlobalRustFlags = append(flags.GlobalRustFlags, "-C lto=thin")
return transformSrctoCrate(ctx, mainSrc, deps, flags, outputFile, "cdylib")
}
@@ -263,6 +257,20 @@ func transformSrctoCrate(ctx ModuleContext, main android.Path, deps PathDeps, fl
inputs = append(inputs, main)
if ctx.Config().Eng() {
// Per https://doc.rust-lang.org/rustc/codegen-options/index.html#codegen-units
// incremental building implies codegen-units=256
incrementalPath := android.PathForModuleOut(ctx, "rustc-incremental").String()
flags.GlobalRustFlags = append(flags.GlobalRustFlags, "-C incremental="+incrementalPath)
} else {
flags.GlobalRustFlags = append(flags.GlobalRustFlags, "-C codegen-units=1")
if !(ctx.RustModule().Rlib() || ctx.RustModule().ProcMacro()) {
flags.GlobalRustFlags = append(flags.GlobalRustFlags, "-C lto=thin")
}
}
// Collect rustc flags
rustcFlags = append(rustcFlags, flags.GlobalRustFlags...)
rustcFlags = append(rustcFlags, flags.RustFlags...)
@@ -278,15 +286,6 @@ func transformSrctoCrate(ctx ModuleContext, main android.Path, deps PathDeps, fl
// Suppress an implicit sysroot
rustcFlags = append(rustcFlags, "--sysroot=/dev/null")
// Enable incremental compilation if requested by user
if ctx.Config().IsEnvTrue("SOONG_RUSTC_INCREMENTAL") {
incrementalPath := android.PathForOutput(ctx, "rustc").String()
rustcFlags = append(rustcFlags, "-C incremental="+incrementalPath)
} else {
rustcFlags = append(rustcFlags, "-C codegen-units=1")
}
// Disallow experimental features
modulePath := ctx.ModuleDir()
if !(android.IsThirdPartyPath(modulePath) || strings.HasPrefix(modulePath, "prebuilts")) {