Revert^4 "add rust_toolchain_rustc_prebuilt module type"

930fd8bfb1

Change-Id: Id3f3a66022a496aab7db93670a7bdf8507384875
This commit is contained in:
Sam Delmerico 2023-09-25 12:13:17 +00:00
parent 40c7bae1df
commit f2b16069bb
4 changed files with 61 additions and 13 deletions

View file

@ -17,7 +17,7 @@ package android
import "path/filepath" import "path/filepath"
func init() { func init() {
RegisterModuleType("prebuilt_build_tool", prebuiltBuildToolFactory) RegisterModuleType("prebuilt_build_tool", NewPrebuiltBuildTool)
} }
type prebuiltBuildToolProperties struct { type prebuiltBuildToolProperties struct {
@ -101,10 +101,6 @@ var _ HostToolProvider = &prebuiltBuildTool{}
// prebuilt_build_tool is to declare prebuilts to be used during the build, particularly for use // prebuilt_build_tool is to declare prebuilts to be used during the build, particularly for use
// in genrules with the "tools" property. // in genrules with the "tools" property.
func prebuiltBuildToolFactory() Module {
return NewPrebuiltBuildTool()
}
func NewPrebuiltBuildTool() Module { func NewPrebuiltBuildTool() Module {
module := &prebuiltBuildTool{} module := &prebuiltBuildTool{}
module.AddProperties(&module.properties) module.AddProperties(&module.properties)

View file

@ -35,6 +35,7 @@ func RegisterRequiredBuildComponentsForTest(ctx android.RegistrationContext) {
multitree.RegisterApiImportsModule(ctx) multitree.RegisterApiImportsModule(ctx)
ctx.RegisterModuleType("prebuilt_build_tool", android.NewPrebuiltBuildTool)
ctx.RegisterModuleType("cc_benchmark", BenchmarkFactory) ctx.RegisterModuleType("cc_benchmark", BenchmarkFactory)
ctx.RegisterModuleType("cc_object", ObjectFactory) ctx.RegisterModuleType("cc_object", ObjectFactory)
ctx.RegisterModuleType("cc_genrule", GenRuleFactory) ctx.RegisterModuleType("cc_genrule", GenRuleFactory)

View file

@ -81,13 +81,7 @@ var (
func init() { func init() {
pctx.SourcePathVariable("RustDefaultBase", RustDefaultBase) pctx.SourcePathVariable("RustDefaultBase", RustDefaultBase)
pctx.VariableConfigMethod("HostPrebuiltTag", func(config android.Config) string { pctx.VariableConfigMethod("HostPrebuiltTag", HostPrebuiltTag)
if config.UseHostMusl() {
return "linux-musl-x86"
} else {
return config.PrebuiltOS()
}
})
pctx.VariableFunc("RustBase", func(ctx android.PackageVarContext) string { pctx.VariableFunc("RustBase", func(ctx android.PackageVarContext) string {
if override := ctx.Config().Getenv("RUST_PREBUILTS_BASE"); override != "" { if override := ctx.Config().Getenv("RUST_PREBUILTS_BASE"); override != "" {
@ -109,6 +103,14 @@ func init() {
exportedVars.ExportStringStaticVariable("RUST_DEFAULT_VERSION", RustDefaultVersion) exportedVars.ExportStringStaticVariable("RUST_DEFAULT_VERSION", RustDefaultVersion)
} }
func HostPrebuiltTag(config android.Config) string {
if config.UseHostMusl() {
return "linux-musl-x86"
} else {
return config.PrebuiltOS()
}
}
func getRustVersionPctx(ctx android.PackageVarContext) string { func getRustVersionPctx(ctx android.PackageVarContext) string {
return GetRustVersion(ctx) return GetRustVersion(ctx)
} }

View file

@ -18,9 +18,12 @@ package rust
import ( import (
"path" "path"
"path/filepath"
"android/soong/android" "android/soong/android"
"android/soong/rust/config" "android/soong/rust/config"
"github.com/google/blueprint/proptools"
) )
// This module is used to compile the rust toolchain libraries // This module is used to compile the rust toolchain libraries
@ -33,6 +36,8 @@ func init() {
rustToolchainLibraryRlibFactory) rustToolchainLibraryRlibFactory)
android.RegisterModuleType("rust_toolchain_library_dylib", android.RegisterModuleType("rust_toolchain_library_dylib",
rustToolchainLibraryDylibFactory) rustToolchainLibraryDylibFactory)
android.RegisterModuleType("rust_toolchain_rustc_prebuilt",
rustToolchainRustcPrebuiltFactory)
} }
type toolchainLibraryProperties struct { type toolchainLibraryProperties struct {
@ -82,7 +87,7 @@ func initToolchainLibrary(module *Module, library *libraryDecorator) android.Mod
func rustSetToolchainSource(ctx android.LoadHookContext) { func rustSetToolchainSource(ctx android.LoadHookContext) {
if toolchainLib, ok := ctx.Module().(*Module).compiler.(*toolchainLibraryDecorator); ok { if toolchainLib, ok := ctx.Module().(*Module).compiler.(*toolchainLibraryDecorator); ok {
prefix := "linux-x86/" + GetRustPrebuiltVersion(ctx) prefix := filepath.Join(config.HostPrebuiltTag(ctx.Config()), GetRustPrebuiltVersion(ctx))
newSrcs := []string{path.Join(prefix, android.String(toolchainLib.Properties.Toolchain_src))} newSrcs := []string{path.Join(prefix, android.String(toolchainLib.Properties.Toolchain_src))}
type props struct { type props struct {
@ -101,3 +106,47 @@ func rustSetToolchainSource(ctx android.LoadHookContext) {
func GetRustPrebuiltVersion(ctx android.LoadHookContext) string { func GetRustPrebuiltVersion(ctx android.LoadHookContext) string {
return ctx.AConfig().GetenvWithDefault("RUST_PREBUILTS_VERSION", config.RustDefaultVersion) return ctx.AConfig().GetenvWithDefault("RUST_PREBUILTS_VERSION", config.RustDefaultVersion)
} }
type toolchainRustcPrebuiltProperties struct {
// path to rustc prebuilt, relative to the top of the toolchain source
Toolchain_prebuilt_src *string
// path to deps, relative to the top of the toolchain source
Toolchain_deps []string
// path to deps, relative to module directory
Deps []string
}
func rustToolchainRustcPrebuiltFactory() android.Module {
module := android.NewPrebuiltBuildTool()
module.AddProperties(&toolchainRustcPrebuiltProperties{})
android.AddLoadHook(module, func(ctx android.LoadHookContext) {
var toolchainProps *toolchainRustcPrebuiltProperties
for _, p := range ctx.Module().GetProperties() {
toolchainProperties, ok := p.(*toolchainRustcPrebuiltProperties)
if ok {
toolchainProps = toolchainProperties
}
}
if toolchainProps.Toolchain_prebuilt_src == nil {
ctx.PropertyErrorf("toolchain_prebuilt_src", "must set path to rustc prebuilt")
}
prefix := filepath.Join(config.HostPrebuiltTag(ctx.Config()), GetRustPrebuiltVersion(ctx))
deps := make([]string, 0, len(toolchainProps.Toolchain_deps)+len(toolchainProps.Deps))
for _, d := range toolchainProps.Toolchain_deps {
deps = append(deps, path.Join(prefix, d))
}
deps = append(deps, toolchainProps.Deps...)
props := struct {
Src *string
Deps []string
}{
Src: proptools.StringPtr(path.Join(prefix, *toolchainProps.Toolchain_prebuilt_src)),
Deps: deps,
}
ctx.AppendProperties(&props)
})
return module
}