diff options
author | 2020-08-21 16:15:23 -0700 | |
---|---|---|
committer | 2020-08-26 11:51:51 -0700 | |
commit | 42507337e52b14dc3fd50b20b61af32248273d73 (patch) | |
tree | d271bff8f8084a63b1b7049d0ccda6b5668f3269 | |
parent | 1ec1255476c46623a6973780793a2497b163ab1a (diff) |
Only request image and version variations for device SDK dependencies
AddFarVariationDependencies was broken, which allowed sdk modules to
request dependencies using image and version variations, even for
host modules that do not have image or version variations. Make
the image and version variations conditional on device sdk modules.
Test: go test ./sdk
Change-Id: I59b7a32a3782254fd5feb828a5258ee13d4db812
-rw-r--r-- | apex/apex.go | 44 | ||||
-rw-r--r-- | cc/binary_sdk_member.go | 10 | ||||
-rw-r--r-- | cc/library_sdk_member.go | 19 | ||||
-rw-r--r-- | cc/sanitize.go | 20 |
4 files changed, 53 insertions, 40 deletions
diff --git a/apex/apex.go b/apex/apex.go index 84a1e7526..3c4ad1958 100644 --- a/apex/apex.go +++ b/apex/apex.go @@ -1321,26 +1321,30 @@ func addDependenciesForNativeModules(ctx android.BottomUpMutatorContext, // conflicting variations with this module. This is required since // arch variant of an APEX bundle is 'common' but it is 'arm' or 'arm64' // for native shared libs. - ctx.AddFarVariationDependencies(append(target.Variations(), []blueprint.Variation{ - {Mutator: "image", Variation: imageVariation}, - {Mutator: "link", Variation: "shared"}, - {Mutator: "version", Variation: ""}, // "" is the non-stub variant - }...), sharedLibTag, nativeModules.Native_shared_libs...) - - ctx.AddFarVariationDependencies(append(target.Variations(), []blueprint.Variation{ - {Mutator: "image", Variation: imageVariation}, - {Mutator: "link", Variation: "shared"}, - {Mutator: "version", Variation: ""}, // "" is the non-stub variant - }...), jniLibTag, nativeModules.Jni_libs...) - - ctx.AddFarVariationDependencies(append(target.Variations(), - blueprint.Variation{Mutator: "image", Variation: imageVariation}), - executableTag, nativeModules.Binaries...) - - ctx.AddFarVariationDependencies(append(target.Variations(), []blueprint.Variation{ - {Mutator: "image", Variation: imageVariation}, - {Mutator: "test_per_src", Variation: ""}, // "" is the all-tests variant - }...), testTag, nativeModules.Tests...) + + binVariations := target.Variations() + libVariations := append(target.Variations(), + blueprint.Variation{Mutator: "link", Variation: "shared"}) + testVariations := append(target.Variations(), + blueprint.Variation{Mutator: "test_per_src", Variation: ""}) // "" is the all-tests variant + + if ctx.Device() { + binVariations = append(binVariations, + blueprint.Variation{Mutator: "image", Variation: imageVariation}) + libVariations = append(libVariations, + blueprint.Variation{Mutator: "image", Variation: imageVariation}, + blueprint.Variation{Mutator: "version", Variation: ""}) // "" is the non-stub variant + testVariations = append(testVariations, + blueprint.Variation{Mutator: "image", Variation: imageVariation}) + } + + ctx.AddFarVariationDependencies(libVariations, sharedLibTag, nativeModules.Native_shared_libs...) + + ctx.AddFarVariationDependencies(libVariations, jniLibTag, nativeModules.Jni_libs...) + + ctx.AddFarVariationDependencies(binVariations, executableTag, nativeModules.Binaries...) + + ctx.AddFarVariationDependencies(testVariations, testTag, nativeModules.Tests...) } func (a *apexBundle) combineProperties(ctx android.BottomUpMutatorContext) { diff --git a/cc/binary_sdk_member.go b/cc/binary_sdk_member.go index 337de55b3..a1abc728a 100644 --- a/cc/binary_sdk_member.go +++ b/cc/binary_sdk_member.go @@ -46,9 +46,13 @@ func (mt *binarySdkMemberType) AddDependencies(mctx android.BottomUpMutatorConte if version == "" { version = LatestStubsVersionFor(mctx.Config(), name) } - mctx.AddFarVariationDependencies(append(target.Variations(), []blueprint.Variation{ - {Mutator: "version", Variation: version}, - }...), dependencyTag, name) + variations := target.Variations() + if mctx.Device() { + variations = append(variations, + blueprint.Variation{Mutator: "image", Variation: android.CoreVariation}, + blueprint.Variation{Mutator: "version", Variation: version}) + } + mctx.AddFarVariationDependencies(variations, dependencyTag, name) } } } diff --git a/cc/library_sdk_member.go b/cc/library_sdk_member.go index cff00b668..c975dd1e2 100644 --- a/cc/library_sdk_member.go +++ b/cc/library_sdk_member.go @@ -82,18 +82,19 @@ func (mt *librarySdkMemberType) AddDependencies(mctx android.BottomUpMutatorCont if version == "" { version = LatestStubsVersionFor(mctx.Config(), name) } + variations := target.Variations() + if mctx.Device() { + variations = append(variations, + blueprint.Variation{Mutator: "image", Variation: android.CoreVariation}, + blueprint.Variation{Mutator: "version", Variation: version}) + } if mt.linkTypes == nil { - mctx.AddFarVariationDependencies(append(target.Variations(), []blueprint.Variation{ - {Mutator: "image", Variation: android.CoreVariation}, - {Mutator: "version", Variation: version}, - }...), dependencyTag, name) + mctx.AddFarVariationDependencies(variations, dependencyTag, name) } else { for _, linkType := range mt.linkTypes { - mctx.AddFarVariationDependencies(append(target.Variations(), []blueprint.Variation{ - {Mutator: "image", Variation: android.CoreVariation}, - {Mutator: "link", Variation: linkType}, - {Mutator: "version", Variation: version}, - }...), dependencyTag, name) + libVariations := append(variations, + blueprint.Variation{Mutator: "link", Variation: linkType}) + mctx.AddFarVariationDependencies(libVariations, dependencyTag, name) } } } diff --git a/cc/sanitize.go b/cc/sanitize.go index 2243082ad..9bd416fb7 100644 --- a/cc/sanitize.go +++ b/cc/sanitize.go @@ -1011,10 +1011,12 @@ func sanitizerRuntimeMutator(mctx android.BottomUpMutatorContext) { // static executable gets static runtime libs depTag := libraryDependencyTag{Kind: staticLibraryDependency} - mctx.AddFarVariationDependencies(append(mctx.Target().Variations(), []blueprint.Variation{ - {Mutator: "link", Variation: "static"}, - c.ImageVariation(), - }...), depTag, deps...) + variations := append(mctx.Target().Variations(), + blueprint.Variation{Mutator: "link", Variation: "static"}) + if c.Device() { + variations = append(variations, c.ImageVariation()) + } + mctx.AddFarVariationDependencies(variations, depTag, deps...) } else if !c.static() && !c.header() { // If we're using snapshots and in vendor, redirect to snapshot whenever possible if c.VndkVersion() == mctx.DeviceConfig().VndkVersion() { @@ -1026,10 +1028,12 @@ func sanitizerRuntimeMutator(mctx android.BottomUpMutatorContext) { // dynamic executable and shared libs get shared runtime libs depTag := libraryDependencyTag{Kind: sharedLibraryDependency, Order: earlyLibraryDependency} - mctx.AddFarVariationDependencies(append(mctx.Target().Variations(), []blueprint.Variation{ - {Mutator: "link", Variation: "shared"}, - c.ImageVariation(), - }...), depTag, runtimeLibrary) + variations := append(mctx.Target().Variations(), + blueprint.Variation{Mutator: "link", Variation: "shared"}) + if c.Device() { + variations = append(variations, c.ImageVariation()) + } + mctx.AddFarVariationDependencies(variations, depTag, runtimeLibrary) } // static lib does not have dependency to the runtime library. The // dependency will be added to the executables or shared libs using |