From e3da5ea86b96d2c489e2ae925975925ecf4f7022 Mon Sep 17 00:00:00 2001 From: Chris Wailes Date: Fri, 16 Feb 2024 11:34:26 -0800 Subject: [PATCH] Re-land "Make building Rust targets faster in eng builds" This reverts commit af9fc549ca6ba53b80813bd16aac4924e716dbe7, reversing changes made to f617e18741a070ed1ff2bed2074ff98ccd30cb94. 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 --- rust/builder.go | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/rust/builder.go b/rust/builder.go index c855cfbd2..e3b4bee10 100644 --- a/rust/builder.go +++ b/rust/builder.go @@ -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")) {