summaryrefslogtreecommitdiff
path: root/rust/builder.go
diff options
context:
space:
mode:
author Sam Delmerico <delmerico@google.com> 2023-09-21 06:21:21 +0000
committer Sam Delmerico <delmerico@google.com> 2023-09-21 08:15:36 +0000
commit476e87611960f81f11c7cb051c9009109a410e8b (patch)
tree565ed4c600e7daae1ea555c3accbebfbcc2f8070 /rust/builder.go
parentfbec3a5f5c10fc7376665d7bf8e6bb1c2467fae0 (diff)
remove rust deps on clang prebuilts
Prebuilt modules for some clang tools were created in aosp/2746469, but they do not exist for darwin builds. Adding the same modules in prebuilts/clang/host/darwin-x86/Android.bp results in duplicate module names. Instead we can just get a path to these files directly in Soong. Test: CI Test: https://android-build.googleplex.com/builds/abtd/run/L90700000963131594 Change-Id: I620cfd7b1ab34bd0959feea562d599b963717198
Diffstat (limited to 'rust/builder.go')
-rw-r--r--rust/builder.go48
1 files changed, 29 insertions, 19 deletions
diff --git a/rust/builder.go b/rust/builder.go
index 07405183e..09933d3f1 100644
--- a/rust/builder.go
+++ b/rust/builder.go
@@ -22,6 +22,7 @@ import (
"github.com/google/blueprint"
"android/soong/android"
+ cc_config "android/soong/cc/config"
"android/soong/rust/config"
)
@@ -204,7 +205,9 @@ func rustEnvVars(ctx ModuleContext, deps PathDeps, cmd *android.RuleBuilderComma
}
}
- envVars = append(envVars, "AR="+cmd.PathForTool(deps.Llvm_ar))
+ envVars = append(envVars, "AR="+cmd.PathForInput(
+ cc_config.ClangPath(ctx, "bin/llvm-ar")),
+ )
if ctx.Darwin() {
envVars = append(envVars, "ANDROID_RUST_DARWIN=true")
@@ -292,11 +295,6 @@ func transformSrctoCrate(ctx ModuleContext, comp compiler, main android.Path, de
}
if flags.Clippy {
- // TODO(b/298461712) remove this hack to let slim manifest branches build
- if deps.Clippy_driver == nil {
- deps.Clippy_driver = config.RustPath(ctx, "bin/clippy-driver")
- }
-
clippyRule := getRuleBuilder(ctx, pctx, false, "clippy")
clippyCmd := clippyRule.Command()
clippyFile := android.PathForModuleOut(ctx, outputFile.Base()+".clippy")
@@ -305,7 +303,7 @@ func transformSrctoCrate(ctx ModuleContext, comp compiler, main android.Path, de
clippyCmd.
Flags(rustEnvVars(ctx, deps, clippyCmd)).
- Tool(deps.Clippy_driver).
+ Tool(config.RustPath(ctx, "bin/clippy-driver")).
Flag("--emit metadata").
FlagWithOutput("-o ", clippyFile).
FlagWithOutput("--emit dep-info=", clippyDepInfoFile).
@@ -365,14 +363,18 @@ func transformSrctoCrate(ctx ModuleContext, comp compiler, main android.Path, de
}
}
- // TODO(b/298461712) remove this hack to let slim manifest branches build
- if deps.Rustc == nil {
- deps.Rustc = config.RustPath(ctx, "bin/rustc")
+ clangTools := android.Paths{
+ cc_config.ClangPath(ctx, "bin/llvm-ar"),
+ }
+ if ctx.Config().BuildOS != android.Darwin {
+ clangTools = append(clangTools,
+ cc_config.ClangPath(ctx, "lib/libc++.so"),
+ )
}
rustcCmd.
Flags(rustEnvVars(ctx, deps, rustcCmd)).
- Tool(deps.Rustc).
+ Tool(config.RustPath(ctx, "bin/rustc")).
FlagWithInput("-C linker=", android.PathForSource(ctx, "build", "soong", "scripts", "mkcratersp.py")).
Flag("--emit link").
Flag("-o").
@@ -380,6 +382,7 @@ func transformSrctoCrate(ctx ModuleContext, comp compiler, main android.Path, de
FlagWithOutput("--emit dep-info=", depInfoFile).
Inputs(inputs).
Flags(libFlags).
+ Implicits(clangTools).
ImplicitTools(toolImplicits).
Implicits(implicits).
Flags(rustcFlags).
@@ -406,9 +409,20 @@ func transformSrctoCrate(ctx ModuleContext, comp compiler, main android.Path, de
// those need to be renamed/symlinked to something in the rustLink sandbox
// if we want to separate the rules
linkerSboxOutputFile := android.PathForModuleOut(ctx, sboxDirectory, outputFile.Base())
+ clangTools := android.Paths{
+ cc_config.ClangPath(ctx, "bin/clang++"),
+ cc_config.ClangPath(ctx, "bin/lld"),
+ cc_config.ClangPath(ctx, "bin/ld.lld"),
+ }
+ if ctx.Config().BuildOS != android.Darwin {
+ clangTools = append(clangTools,
+ cc_config.ClangPath(ctx, "bin/clang++.real"),
+ cc_config.ClangPath(ctx, "lib/libc++.so"),
+ )
+ }
rustLinkCmd := rustcRule.Command()
rustLinkCmd.
- Tool(deps.Clang).
+ Tool(cc_config.ClangPath(ctx, "bin/clang++")).
Flag("-o").
Output(linkerSboxOutputFile).
Inputs(deps.CrtBegin).
@@ -416,6 +430,7 @@ func transformSrctoCrate(ctx ModuleContext, comp compiler, main android.Path, de
FlagWithInput("@", rustSboxOutputFile).
Flags(linkFlags).
Inputs(deps.CrtEnd).
+ ImplicitTools(clangTools).
ImplicitTools(toolImplicits).
Implicits(rustcImplicitOutputs.Paths()).
Implicits(implicits).
@@ -441,7 +456,7 @@ func transformSrctoCrate(ctx ModuleContext, comp compiler, main android.Path, de
Flag("KYTHE_CANONICALIZE_VNAME_PATHS=prefer-relative").
Tool(ctx.Config().PrebuiltBuildTool(ctx, "rust_extractor")).
Flags(rustEnvVars(ctx, deps, kytheCmd)).
- Tool(deps.Rustc).
+ Tool(config.RustPath(ctx, "bin/rustc")).
Flag("-C linker=true").
Inputs(inputs).
Flags(makeLibFlags(deps, kytheCmd)).
@@ -455,11 +470,6 @@ func transformSrctoCrate(ctx ModuleContext, comp compiler, main android.Path, de
}
func Rustdoc(ctx ModuleContext, main android.Path, deps PathDeps, flags Flags) android.ModuleOutPath {
- // TODO(b/298461712) remove this hack to let slim manifest branches build
- if deps.Rustdoc == nil {
- deps.Rustdoc = config.RustPath(ctx, "bin/rustdoc")
- }
-
rustdocRule := getRuleBuilder(ctx, pctx, false, "rustdoc")
rustdocCmd := rustdocRule.Command()
@@ -498,7 +508,7 @@ func Rustdoc(ctx ModuleContext, main android.Path, deps PathDeps, flags Flags) a
rustdocCmd.
Flags(rustEnvVars(ctx, deps, rustdocCmd)).
- Tool(deps.Rustdoc).
+ Tool(config.RustPath(ctx, "bin/rustdoc")).
Flags(rustdocFlags).
Input(main).
Flag("-o "+docDir.String()).