Revert^4 "add rust_toolchain_rustc_prebuilt module type"
930fd8bfb1
Change-Id: Id3f3a66022a496aab7db93670a7bdf8507384875
This commit is contained in:
parent
40c7bae1df
commit
f2b16069bb
4 changed files with 61 additions and 13 deletions
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue