Loading rust/builder.go +29 −19 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import ( "github.com/google/blueprint" "android/soong/android" cc_config "android/soong/cc/config" "android/soong/rust/config" ) Loading Loading @@ -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") Loading Loading @@ -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") Loading @@ -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). Loading Loading @@ -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"). Loading @@ -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). Loading @@ -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). Loading @@ -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). Loading @@ -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)). Loading @@ -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() Loading Loading @@ -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()). Loading rust/config/global.go +1 −1 Original line number Diff line number Diff line Loading @@ -147,6 +147,6 @@ func rustPath(ctx android.PathContext) android.SourcePath { if override := ctx.Config().Getenv("RUST_DEFAULT_VERSION"); override != "" { rustVersion = override } return android.PathForSource(ctx, rustBase, ctx.Config().PrebuiltOS(), rustVersion) return android.PathForSource(ctx, rustBase, HostPrebuiltTag(ctx.Config()), rustVersion) }) } rust/rust.go +0 −23 Original line number Diff line number Diff line Loading @@ -472,13 +472,6 @@ type PathDeps struct { // Paths to generated source files SrcDeps android.Paths srcProviderFiles android.Paths // Paths to specific build tools Rustc android.Path Clang android.Path Llvm_ar android.Path Clippy_driver android.Path Rustdoc android.Path } type RustLibraries []RustLibrary Loading Loading @@ -1480,18 +1473,9 @@ func (mod *Module) depsToPaths(ctx android.ModuleContext) PathDeps { depPaths.BuildToolDeps = append(depPaths.BuildToolDeps, buildTool.Deps...) switch android.RemoveOptionalPrebuiltPrefix(dep.Name()) { case "rustc": depPaths.Rustc = buildTool.Src // rustc expects the standard cc toolchain libraries (libdl, libm, libc, etc.) // not to be under the __SBOX_SANDBOX_DIR__/ directory depPaths.BuildToolSrcDeps = append(depPaths.BuildToolSrcDeps, buildTool.Deps...) case "clang++": depPaths.Clang = buildTool.Src case "llvm-ar": depPaths.Llvm_ar = buildTool.Src case "clippy-driver": depPaths.Clippy_driver = buildTool.Src case "rustdoc": depPaths.Rustdoc = buildTool.Src } case depTag == cc.CrtBeginDepTag: depPaths.CrtBegin = append(depPaths.CrtBegin, android.OutputFileForModule(ctx, dep, "")) Loading Loading @@ -1612,13 +1596,6 @@ func (mod *Module) DepsMutator(actx android.BottomUpMutatorContext) { } ctx.AddFarVariationDependencies([]blueprint.Variation{}, buildToolDepTag, "rustc") ctx.AddFarVariationDependencies([]blueprint.Variation{}, buildToolDepTag, "clippy-driver") ctx.AddFarVariationDependencies([]blueprint.Variation{}, buildToolDepTag, "rustdoc") ctx.AddFarVariationDependencies([]blueprint.Variation{}, buildToolDepTag, "clang++") ctx.AddFarVariationDependencies([]blueprint.Variation{}, buildToolDepTag, "clang++.real") ctx.AddFarVariationDependencies([]blueprint.Variation{}, buildToolDepTag, "lld") ctx.AddFarVariationDependencies([]blueprint.Variation{}, buildToolDepTag, "ld.lld") ctx.AddFarVariationDependencies([]blueprint.Variation{}, buildToolDepTag, "llvm-ar") // rlibs rlibDepVariations = append(rlibDepVariations, blueprint.Variation{Mutator: "rust_libraries", Variation: rlibVariation}) Loading rust/toolchain_library.go +1 −1 Original line number Diff line number Diff line Loading @@ -89,7 +89,7 @@ func initToolchainLibrary(module *Module, library *libraryDecorator) android.Mod func rustSetToolchainSource(ctx android.LoadHookContext) { if toolchainLib, ok := ctx.Module().(*Module).compiler.(*toolchainLibraryDecorator); ok { prefix := filepath.Join(config.HostPrebuiltTag(ctx.Config()), GetRustPrebuiltVersion(ctx)) prefix := filepath.Join("linux-x86", GetRustPrebuiltVersion(ctx)) versionedCrateRoot := path.Join(prefix, android.String(toolchainLib.Properties.Toolchain_crate_root)) versionedSrcs := make([]string, len(toolchainLib.Properties.Toolchain_srcs)) for i, src := range toolchainLib.Properties.Toolchain_srcs { Loading Loading
rust/builder.go +29 −19 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import ( "github.com/google/blueprint" "android/soong/android" cc_config "android/soong/cc/config" "android/soong/rust/config" ) Loading Loading @@ -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") Loading Loading @@ -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") Loading @@ -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). Loading Loading @@ -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"). Loading @@ -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). Loading @@ -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). Loading @@ -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). Loading @@ -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)). Loading @@ -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() Loading Loading @@ -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()). Loading
rust/config/global.go +1 −1 Original line number Diff line number Diff line Loading @@ -147,6 +147,6 @@ func rustPath(ctx android.PathContext) android.SourcePath { if override := ctx.Config().Getenv("RUST_DEFAULT_VERSION"); override != "" { rustVersion = override } return android.PathForSource(ctx, rustBase, ctx.Config().PrebuiltOS(), rustVersion) return android.PathForSource(ctx, rustBase, HostPrebuiltTag(ctx.Config()), rustVersion) }) }
rust/rust.go +0 −23 Original line number Diff line number Diff line Loading @@ -472,13 +472,6 @@ type PathDeps struct { // Paths to generated source files SrcDeps android.Paths srcProviderFiles android.Paths // Paths to specific build tools Rustc android.Path Clang android.Path Llvm_ar android.Path Clippy_driver android.Path Rustdoc android.Path } type RustLibraries []RustLibrary Loading Loading @@ -1480,18 +1473,9 @@ func (mod *Module) depsToPaths(ctx android.ModuleContext) PathDeps { depPaths.BuildToolDeps = append(depPaths.BuildToolDeps, buildTool.Deps...) switch android.RemoveOptionalPrebuiltPrefix(dep.Name()) { case "rustc": depPaths.Rustc = buildTool.Src // rustc expects the standard cc toolchain libraries (libdl, libm, libc, etc.) // not to be under the __SBOX_SANDBOX_DIR__/ directory depPaths.BuildToolSrcDeps = append(depPaths.BuildToolSrcDeps, buildTool.Deps...) case "clang++": depPaths.Clang = buildTool.Src case "llvm-ar": depPaths.Llvm_ar = buildTool.Src case "clippy-driver": depPaths.Clippy_driver = buildTool.Src case "rustdoc": depPaths.Rustdoc = buildTool.Src } case depTag == cc.CrtBeginDepTag: depPaths.CrtBegin = append(depPaths.CrtBegin, android.OutputFileForModule(ctx, dep, "")) Loading Loading @@ -1612,13 +1596,6 @@ func (mod *Module) DepsMutator(actx android.BottomUpMutatorContext) { } ctx.AddFarVariationDependencies([]blueprint.Variation{}, buildToolDepTag, "rustc") ctx.AddFarVariationDependencies([]blueprint.Variation{}, buildToolDepTag, "clippy-driver") ctx.AddFarVariationDependencies([]blueprint.Variation{}, buildToolDepTag, "rustdoc") ctx.AddFarVariationDependencies([]blueprint.Variation{}, buildToolDepTag, "clang++") ctx.AddFarVariationDependencies([]blueprint.Variation{}, buildToolDepTag, "clang++.real") ctx.AddFarVariationDependencies([]blueprint.Variation{}, buildToolDepTag, "lld") ctx.AddFarVariationDependencies([]blueprint.Variation{}, buildToolDepTag, "ld.lld") ctx.AddFarVariationDependencies([]blueprint.Variation{}, buildToolDepTag, "llvm-ar") // rlibs rlibDepVariations = append(rlibDepVariations, blueprint.Variation{Mutator: "rust_libraries", Variation: rlibVariation}) Loading
rust/toolchain_library.go +1 −1 Original line number Diff line number Diff line Loading @@ -89,7 +89,7 @@ func initToolchainLibrary(module *Module, library *libraryDecorator) android.Mod func rustSetToolchainSource(ctx android.LoadHookContext) { if toolchainLib, ok := ctx.Module().(*Module).compiler.(*toolchainLibraryDecorator); ok { prefix := filepath.Join(config.HostPrebuiltTag(ctx.Config()), GetRustPrebuiltVersion(ctx)) prefix := filepath.Join("linux-x86", GetRustPrebuiltVersion(ctx)) versionedCrateRoot := path.Join(prefix, android.String(toolchainLib.Properties.Toolchain_crate_root)) versionedSrcs := make([]string, len(toolchainLib.Properties.Toolchain_srcs)) for i, src := range toolchainLib.Properties.Toolchain_srcs { Loading