Install VNDK libs in /system instead of /vendor
If BOARD_VNDK_VERSION is set, and a module is set to `vendor_available: true` it is installed in /system and /vendor. However, if the module is a VNDK library, it must be installed at `/system/${LIB}/vndk` instead of /vendor/${LIB}. For those modules, need following to set. vendor_available: true, vndk: { enabled: true, support_system_process: true, }, `support_system_process` is optional to define. If it is defined to true, the module is regarded as vndk-sp. link-type check for VNDK modules is added to make sure that VNDK modules only link to other VNDK shared libraries or LL-NDKs. move the ABI checks to VNDK from all of vendor_available. Bug: 38304436 Test: attempt to compile with BOARD_VNDK_VERSION:=current Test: Use `vendor_available_vndk: true` for VNDK modules and compile with BOARD_VNDK_VERSION:=current Change-Id: I409268e0b7f05a9d01697bf9f9f4726b5aac631f
This commit is contained in:
@@ -156,7 +156,7 @@ type flagExporter struct {
|
||||
}
|
||||
|
||||
func (f *flagExporter) exportedIncludes(ctx ModuleContext) android.Paths {
|
||||
if ctx.Vendor() && f.Properties.Target.Vendor.Export_include_dirs != nil {
|
||||
if ctx.vndk() && f.Properties.Target.Vendor.Export_include_dirs != nil {
|
||||
return android.PathsForModuleSrc(ctx, f.Properties.Target.Vendor.Export_include_dirs)
|
||||
} else {
|
||||
return android.PathsForModuleSrc(ctx, f.Properties.Export_include_dirs)
|
||||
@@ -351,7 +351,7 @@ func (library *libraryDecorator) compile(ctx ModuleContext, flags Flags, deps Pa
|
||||
}
|
||||
return Objects{}
|
||||
}
|
||||
if (ctx.createVndkSourceAbiDump() || (library.sabi.Properties.CreateSAbiDumps && ctx.Device())) && !ctx.Vendor() {
|
||||
if ctx.createVndkSourceAbiDump() {
|
||||
exportIncludeDirs := android.PathsForModuleSrc(ctx, library.flagExporter.Properties.Export_include_dirs)
|
||||
var SourceAbiFlags []string
|
||||
for _, dir := range exportIncludeDirs.Strings() {
|
||||
@@ -596,7 +596,7 @@ func (library *libraryDecorator) linkShared(ctx ModuleContext,
|
||||
|
||||
func (library *libraryDecorator) linkSAbiDumpFiles(ctx ModuleContext, objs Objects, fileName string, soFile android.Path) {
|
||||
//Also take into account object re-use.
|
||||
if len(objs.sAbiDumpFiles) > 0 && ctx.createVndkSourceAbiDump() && !ctx.Vendor() {
|
||||
if len(objs.sAbiDumpFiles) > 0 && ctx.createVndkSourceAbiDump() {
|
||||
refSourceDumpFile := android.PathForVndkRefAbiDump(ctx, "current", fileName, vndkVsNdk(ctx), true)
|
||||
versionScript := android.OptionalPathForModuleSrc(ctx, library.Properties.Version_script)
|
||||
var symbolFile android.OptionalPath
|
||||
@@ -699,6 +699,15 @@ func (library *libraryDecorator) toc() android.OptionalPath {
|
||||
|
||||
func (library *libraryDecorator) install(ctx ModuleContext, file android.Path) {
|
||||
if library.shared() {
|
||||
if ctx.Device() {
|
||||
if ctx.vndk() {
|
||||
if ctx.isVndkSp() {
|
||||
library.baseInstaller.subDir = "vndk-sp"
|
||||
} else if ctx.isVndk() {
|
||||
library.baseInstaller.subDir = "vndk"
|
||||
}
|
||||
}
|
||||
}
|
||||
library.baseInstaller.install(ctx, file)
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user