Merge changes from topic "rust_vendor_support"
* changes: Add more Rust vendor image support. rust: Use new common image mutator interface.
This commit is contained in:
31
rust/rust.go
31
rust/rust.go
@@ -73,6 +73,11 @@ type BaseProperties struct {
|
||||
VndkVersion string `blueprint:"mutated"`
|
||||
SubName string `blueprint:"mutated"`
|
||||
|
||||
// SubName is used by CC for tracking image variants / SDK versions. RustSubName is used for Rust-specific
|
||||
// subnaming which shouldn't be visible to CC modules (such as the rlib stdlinkage subname). This should be
|
||||
// appended before SubName.
|
||||
RustSubName string `blueprint:"mutated"`
|
||||
|
||||
// Set by imageMutator
|
||||
CoreVariantNeeded bool `blueprint:"mutated"`
|
||||
VendorRamdiskVariantNeeded bool `blueprint:"mutated"`
|
||||
@@ -131,11 +136,6 @@ func (mod *Module) SetPreventInstall() {
|
||||
mod.Properties.PreventInstall = true
|
||||
}
|
||||
|
||||
// Returns true if the module is "vendor" variant. Usually these modules are installed in /vendor
|
||||
func (mod *Module) InVendor() bool {
|
||||
return mod.Properties.ImageVariationPrefix == cc.VendorVariationPrefix
|
||||
}
|
||||
|
||||
func (mod *Module) SetHideFromMake() {
|
||||
mod.Properties.HideFromMake = true
|
||||
}
|
||||
@@ -231,7 +231,11 @@ func (mod *Module) UseVndk() bool {
|
||||
}
|
||||
|
||||
func (mod *Module) MustUseVendorVariant() bool {
|
||||
return false
|
||||
return true
|
||||
}
|
||||
|
||||
func (mod *Module) SubName() string {
|
||||
return mod.Properties.SubName
|
||||
}
|
||||
|
||||
func (mod *Module) IsVndk() bool {
|
||||
@@ -859,8 +863,10 @@ func (mod *Module) depsToPaths(ctx android.ModuleContext) PathDeps {
|
||||
ctx.VisitDirectDeps(func(dep android.Module) {
|
||||
depName := ctx.OtherModuleName(dep)
|
||||
depTag := ctx.OtherModuleDependencyTag(dep)
|
||||
|
||||
if rustDep, ok := dep.(*Module); ok && !rustDep.CcLibraryInterface() {
|
||||
//Handle Rust Modules
|
||||
makeLibName := cc.MakeLibName(ctx, mod, rustDep, depName+rustDep.Properties.RustSubName)
|
||||
|
||||
switch depTag {
|
||||
case dylibDepTag:
|
||||
@@ -870,19 +876,19 @@ func (mod *Module) depsToPaths(ctx android.ModuleContext) PathDeps {
|
||||
return
|
||||
}
|
||||
directDylibDeps = append(directDylibDeps, rustDep)
|
||||
mod.Properties.AndroidMkDylibs = append(mod.Properties.AndroidMkDylibs, depName)
|
||||
mod.Properties.AndroidMkDylibs = append(mod.Properties.AndroidMkDylibs, makeLibName)
|
||||
case rlibDepTag:
|
||||
|
||||
rlib, ok := rustDep.compiler.(libraryInterface)
|
||||
if !ok || !rlib.rlib() {
|
||||
ctx.ModuleErrorf("mod %q not an rlib library", depName+rustDep.Properties.SubName)
|
||||
ctx.ModuleErrorf("mod %q not an rlib library", makeLibName)
|
||||
return
|
||||
}
|
||||
directRlibDeps = append(directRlibDeps, rustDep)
|
||||
mod.Properties.AndroidMkRlibs = append(mod.Properties.AndroidMkRlibs, depName+rustDep.Properties.SubName)
|
||||
mod.Properties.AndroidMkRlibs = append(mod.Properties.AndroidMkRlibs, makeLibName)
|
||||
case procMacroDepTag:
|
||||
directProcMacroDeps = append(directProcMacroDeps, rustDep)
|
||||
mod.Properties.AndroidMkProcMacroLibs = append(mod.Properties.AndroidMkProcMacroLibs, depName)
|
||||
mod.Properties.AndroidMkProcMacroLibs = append(mod.Properties.AndroidMkProcMacroLibs, makeLibName)
|
||||
case android.SourceDepTag:
|
||||
// Since these deps are added in path_properties.go via AddDependencies, we need to ensure the correct
|
||||
// OS/Arch variant is used.
|
||||
@@ -926,6 +932,7 @@ func (mod *Module) depsToPaths(ctx android.ModuleContext) PathDeps {
|
||||
|
||||
} else if ccDep, ok := dep.(cc.LinkableInterface); ok {
|
||||
//Handle C dependencies
|
||||
makeLibName := cc.MakeLibName(ctx, mod, ccDep, depName)
|
||||
if _, ok := ccDep.(*Module); !ok {
|
||||
if ccDep.Module().Target().Os != ctx.Os() {
|
||||
ctx.ModuleErrorf("OS mismatch between %q and %q", ctx.ModuleName(), depName)
|
||||
@@ -967,7 +974,7 @@ func (mod *Module) depsToPaths(ctx android.ModuleContext) PathDeps {
|
||||
depPaths.depClangFlags = append(depPaths.depClangFlags, exportedInfo.Flags...)
|
||||
depPaths.depGeneratedHeaders = append(depPaths.depGeneratedHeaders, exportedInfo.GeneratedHeaders...)
|
||||
directStaticLibDeps = append(directStaticLibDeps, ccDep)
|
||||
mod.Properties.AndroidMkStaticLibs = append(mod.Properties.AndroidMkStaticLibs, depName)
|
||||
mod.Properties.AndroidMkStaticLibs = append(mod.Properties.AndroidMkStaticLibs, makeLibName)
|
||||
case cc.IsSharedDepTag(depTag):
|
||||
depPaths.linkDirs = append(depPaths.linkDirs, linkPath)
|
||||
depPaths.linkObjects = append(depPaths.linkObjects, linkObject.String())
|
||||
@@ -977,7 +984,7 @@ func (mod *Module) depsToPaths(ctx android.ModuleContext) PathDeps {
|
||||
depPaths.depClangFlags = append(depPaths.depClangFlags, exportedInfo.Flags...)
|
||||
depPaths.depGeneratedHeaders = append(depPaths.depGeneratedHeaders, exportedInfo.GeneratedHeaders...)
|
||||
directSharedLibDeps = append(directSharedLibDeps, ccDep)
|
||||
mod.Properties.AndroidMkSharedLibs = append(mod.Properties.AndroidMkSharedLibs, depName)
|
||||
mod.Properties.AndroidMkSharedLibs = append(mod.Properties.AndroidMkSharedLibs, makeLibName)
|
||||
exportDep = true
|
||||
case cc.IsHeaderDepTag(depTag):
|
||||
exportedInfo := ctx.OtherModuleProvider(dep, cc.FlagExporterInfoProvider).(cc.FlagExporterInfo)
|
||||
|
Reference in New Issue
Block a user