Revert "Also package recursive jni_libs deps of android_apps as well as direct deps."
This reverts commit 6f907ad3dd
.
Reason for revert: Broke FrameworksNetSmokeTests
Bug: 146456945
Change-Id: Ibef7bb80c532e70cfcfb974f51a99ed25437a343
This commit is contained in:
8
cc/cc.go
8
cc/cc.go
@@ -759,7 +759,7 @@ func (c *Module) isNdk() bool {
|
|||||||
return inList(c.Name(), ndkMigratedLibs)
|
return inList(c.Name(), ndkMigratedLibs)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Module) IsLlndk(config android.Config) bool {
|
func (c *Module) isLlndk(config android.Config) bool {
|
||||||
// Returns true for both LLNDK (public) and LLNDK-private libs.
|
// Returns true for both LLNDK (public) and LLNDK-private libs.
|
||||||
return isLlndkLibrary(c.BaseModuleName(), config)
|
return isLlndkLibrary(c.BaseModuleName(), config)
|
||||||
}
|
}
|
||||||
@@ -999,7 +999,7 @@ func (ctx *moduleContextImpl) isNdk() bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (ctx *moduleContextImpl) isLlndk(config android.Config) bool {
|
func (ctx *moduleContextImpl) isLlndk(config android.Config) bool {
|
||||||
return ctx.mod.IsLlndk(config)
|
return ctx.mod.isLlndk(config)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ctx *moduleContextImpl) isLlndkPublic(config android.Config) bool {
|
func (ctx *moduleContextImpl) isLlndkPublic(config android.Config) bool {
|
||||||
@@ -1880,7 +1880,7 @@ func checkDoubleLoadableLibraries(ctx android.TopDownMutatorContext) {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
if to.isVndkSp() || to.IsLlndk(ctx.Config()) || Bool(to.VendorProperties.Double_loadable) {
|
if to.isVndkSp() || to.isLlndk(ctx.Config()) || Bool(to.VendorProperties.Double_loadable) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1895,7 +1895,7 @@ func checkDoubleLoadableLibraries(ctx android.TopDownMutatorContext) {
|
|||||||
}
|
}
|
||||||
if module, ok := ctx.Module().(*Module); ok {
|
if module, ok := ctx.Module().(*Module); ok {
|
||||||
if lib, ok := module.linker.(*libraryDecorator); ok && lib.shared() {
|
if lib, ok := module.linker.(*libraryDecorator); ok && lib.shared() {
|
||||||
if module.IsLlndk(ctx.Config()) || Bool(module.VendorProperties.Double_loadable) {
|
if module.isLlndk(ctx.Config()) || Bool(module.VendorProperties.Double_loadable) {
|
||||||
ctx.WalkDeps(check)
|
ctx.WalkDeps(check)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -80,7 +80,7 @@ func (sabimod *sabi) flags(ctx ModuleContext, flags Flags) Flags {
|
|||||||
|
|
||||||
func sabiDepsMutator(mctx android.TopDownMutatorContext) {
|
func sabiDepsMutator(mctx android.TopDownMutatorContext) {
|
||||||
if c, ok := mctx.Module().(*Module); ok &&
|
if c, ok := mctx.Module().(*Module); ok &&
|
||||||
((c.IsVndk() && c.UseVndk()) || c.IsLlndk(mctx.Config()) ||
|
((c.IsVndk() && c.UseVndk()) || c.isLlndk(mctx.Config()) ||
|
||||||
(c.sabi != nil && c.sabi.Properties.CreateSAbiDumps)) {
|
(c.sabi != nil && c.sabi.Properties.CreateSAbiDumps)) {
|
||||||
mctx.VisitDirectDeps(func(m android.Module) {
|
mctx.VisitDirectDeps(func(m android.Module) {
|
||||||
tag := mctx.OtherModuleDependencyTag(m)
|
tag := mctx.OtherModuleDependencyTag(m)
|
||||||
|
42
java/app.go
42
java/app.go
@@ -167,11 +167,18 @@ func (a *AndroidApp) DepsMutator(ctx android.BottomUpMutatorContext) {
|
|||||||
a.aapt.deps(ctx, sdkDep)
|
a.aapt.deps(ctx, sdkDep)
|
||||||
}
|
}
|
||||||
|
|
||||||
tag := &jniDependencyTag{}
|
|
||||||
for _, jniTarget := range ctx.MultiTargets() {
|
for _, jniTarget := range ctx.MultiTargets() {
|
||||||
variation := append(jniTarget.Variations(),
|
variation := append(jniTarget.Variations(),
|
||||||
blueprint.Variation{Mutator: "link", Variation: "shared"})
|
blueprint.Variation{Mutator: "link", Variation: "shared"})
|
||||||
|
tag := &jniDependencyTag{
|
||||||
|
target: jniTarget,
|
||||||
|
}
|
||||||
ctx.AddFarVariationDependencies(variation, tag, a.appProperties.Jni_libs...)
|
ctx.AddFarVariationDependencies(variation, tag, a.appProperties.Jni_libs...)
|
||||||
|
if String(a.appProperties.Stl) == "c++_shared" {
|
||||||
|
if a.shouldEmbedJnis(ctx) {
|
||||||
|
ctx.AddFarVariationDependencies(variation, tag, "ndk_libc++_shared")
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
a.usesLibrary.deps(ctx, sdkDep.hasFrameworkLibs())
|
a.usesLibrary.deps(ctx, sdkDep.hasFrameworkLibs())
|
||||||
@@ -464,7 +471,7 @@ func (a *AndroidApp) generateAndroidBuildActions(ctx android.ModuleContext) {
|
|||||||
|
|
||||||
dexJarFile := a.dexBuildActions(ctx)
|
dexJarFile := a.dexBuildActions(ctx)
|
||||||
|
|
||||||
jniLibs, certificateDeps := collectAppDeps(ctx, a.shouldEmbedJnis(ctx))
|
jniLibs, certificateDeps := collectAppDeps(ctx)
|
||||||
jniJarFile := a.jniBuildActions(jniLibs, ctx)
|
jniJarFile := a.jniBuildActions(jniLibs, ctx)
|
||||||
|
|
||||||
if ctx.Failed() {
|
if ctx.Failed() {
|
||||||
@@ -500,33 +507,22 @@ func (a *AndroidApp) generateAndroidBuildActions(ctx android.ModuleContext) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func collectAppDeps(ctx android.ModuleContext, shouldCollectRecursiveNativeDeps bool) ([]jniLib, []Certificate) {
|
func collectAppDeps(ctx android.ModuleContext) ([]jniLib, []Certificate) {
|
||||||
var jniLibs []jniLib
|
var jniLibs []jniLib
|
||||||
var certificates []Certificate
|
var certificates []Certificate
|
||||||
seenModulePaths := make(map[string]bool)
|
|
||||||
|
|
||||||
ctx.WalkDeps(func(module android.Module, parent android.Module) bool {
|
ctx.VisitDirectDeps(func(module android.Module) {
|
||||||
otherName := ctx.OtherModuleName(module)
|
otherName := ctx.OtherModuleName(module)
|
||||||
tag := ctx.OtherModuleDependencyTag(module)
|
tag := ctx.OtherModuleDependencyTag(module)
|
||||||
|
|
||||||
if IsJniDepTag(tag) || tag == cc.SharedDepTag {
|
if jniTag, ok := tag.(*jniDependencyTag); ok {
|
||||||
if dep, ok := module.(*cc.Module); ok {
|
if dep, ok := module.(*cc.Module); ok {
|
||||||
if dep.IsLlndk(ctx.Config()) || dep.IsStubs() {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
lib := dep.OutputFile()
|
lib := dep.OutputFile()
|
||||||
path := lib.Path()
|
|
||||||
if seenModulePaths[path.String()] {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
seenModulePaths[path.String()] = true
|
|
||||||
|
|
||||||
if lib.Valid() {
|
if lib.Valid() {
|
||||||
jniLibs = append(jniLibs, jniLib{
|
jniLibs = append(jniLibs, jniLib{
|
||||||
name: ctx.OtherModuleName(module),
|
name: ctx.OtherModuleName(module),
|
||||||
path: path,
|
path: lib.Path(),
|
||||||
target: module.Target(),
|
target: jniTag.target,
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
ctx.ModuleErrorf("dependency %q missing output file", otherName)
|
ctx.ModuleErrorf("dependency %q missing output file", otherName)
|
||||||
@@ -534,19 +530,13 @@ func collectAppDeps(ctx android.ModuleContext, shouldCollectRecursiveNativeDeps
|
|||||||
} else {
|
} else {
|
||||||
ctx.ModuleErrorf("jni_libs dependency %q must be a cc library", otherName)
|
ctx.ModuleErrorf("jni_libs dependency %q must be a cc library", otherName)
|
||||||
}
|
}
|
||||||
|
} else if tag == certificateTag {
|
||||||
return shouldCollectRecursiveNativeDeps
|
|
||||||
}
|
|
||||||
|
|
||||||
if tag == certificateTag {
|
|
||||||
if dep, ok := module.(*AndroidAppCertificate); ok {
|
if dep, ok := module.(*AndroidAppCertificate); ok {
|
||||||
certificates = append(certificates, dep.Certificate)
|
certificates = append(certificates, dep.Certificate)
|
||||||
} else {
|
} else {
|
||||||
ctx.ModuleErrorf("certificate dependency %q must be an android_app_certificate module", otherName)
|
ctx.ModuleErrorf("certificate dependency %q must be an android_app_certificate module", otherName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false
|
|
||||||
})
|
})
|
||||||
|
|
||||||
return jniLibs, certificates
|
return jniLibs, certificates
|
||||||
@@ -978,7 +968,7 @@ func (a *AndroidAppImport) generateAndroidBuildActions(ctx android.ModuleContext
|
|||||||
ctx.ModuleErrorf("One and only one of certficate, presigned, and default_dev_cert properties must be set")
|
ctx.ModuleErrorf("One and only one of certficate, presigned, and default_dev_cert properties must be set")
|
||||||
}
|
}
|
||||||
|
|
||||||
_, certificates := collectAppDeps(ctx, false)
|
_, certificates := collectAppDeps(ctx)
|
||||||
|
|
||||||
// TODO: LOCAL_EXTRACT_APK/LOCAL_EXTRACT_DPI_APK
|
// TODO: LOCAL_EXTRACT_APK/LOCAL_EXTRACT_DPI_APK
|
||||||
// TODO: LOCAL_PACKAGE_SPLITS
|
// TODO: LOCAL_PACKAGE_SPLITS
|
||||||
|
@@ -200,14 +200,14 @@ func TransformJniLibsToJar(ctx android.ModuleContext, outputFile android.Writabl
|
|||||||
}
|
}
|
||||||
|
|
||||||
if uncompressJNI {
|
if uncompressJNI {
|
||||||
jarArgs = append(jarArgs, "-L", "0")
|
jarArgs = append(jarArgs, "-L 0")
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, j := range jniLibs {
|
for _, j := range jniLibs {
|
||||||
deps = append(deps, j.path)
|
deps = append(deps, j.path)
|
||||||
jarArgs = append(jarArgs,
|
jarArgs = append(jarArgs,
|
||||||
"-P", targetToJniDir(j.target),
|
"-P "+targetToJniDir(j.target),
|
||||||
"-f", j.path.String())
|
"-f "+j.path.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx.Build(pctx, android.BuildParams{
|
ctx.Build(pctx, android.BuildParams{
|
||||||
|
@@ -1630,46 +1630,8 @@ func TestAndroidTestImport(t *testing.T) {
|
|||||||
|
|
||||||
func TestStl(t *testing.T) {
|
func TestStl(t *testing.T) {
|
||||||
ctx, _ := testJava(t, cc.GatherRequiredDepsForTest(android.Android)+`
|
ctx, _ := testJava(t, cc.GatherRequiredDepsForTest(android.Android)+`
|
||||||
cc_library {
|
|
||||||
name: "ndk_libunwind",
|
|
||||||
sdk_version: "current",
|
|
||||||
stl: "none",
|
|
||||||
system_shared_libs: [],
|
|
||||||
}
|
|
||||||
|
|
||||||
cc_library {
|
|
||||||
name: "libc.ndk.current",
|
|
||||||
sdk_version: "current",
|
|
||||||
stl: "none",
|
|
||||||
system_shared_libs: [],
|
|
||||||
}
|
|
||||||
|
|
||||||
cc_library {
|
|
||||||
name: "libm.ndk.current",
|
|
||||||
sdk_version: "current",
|
|
||||||
stl: "none",
|
|
||||||
system_shared_libs: [],
|
|
||||||
}
|
|
||||||
|
|
||||||
cc_library {
|
|
||||||
name: "libdl.ndk.current",
|
|
||||||
sdk_version: "current",
|
|
||||||
stl: "none",
|
|
||||||
system_shared_libs: [],
|
|
||||||
}
|
|
||||||
|
|
||||||
cc_object {
|
|
||||||
name: "ndk_crtbegin_so.27",
|
|
||||||
}
|
|
||||||
|
|
||||||
cc_object {
|
|
||||||
name: "ndk_crtend_so.27",
|
|
||||||
}
|
|
||||||
|
|
||||||
cc_library {
|
cc_library {
|
||||||
name: "libjni",
|
name: "libjni",
|
||||||
sdk_version: "current",
|
|
||||||
stl: "c++_shared",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
android_test {
|
android_test {
|
||||||
|
@@ -466,6 +466,7 @@ type dependencyTag struct {
|
|||||||
|
|
||||||
type jniDependencyTag struct {
|
type jniDependencyTag struct {
|
||||||
blueprint.BaseDependencyTag
|
blueprint.BaseDependencyTag
|
||||||
|
target android.Target
|
||||||
}
|
}
|
||||||
|
|
||||||
func IsJniDepTag(depTag blueprint.DependencyTag) bool {
|
func IsJniDepTag(depTag blueprint.DependencyTag) bool {
|
||||||
|
Reference in New Issue
Block a user