Don't create SDK variants for native bridge modules

Native bridge modules never need to build against NDK stubs, so
don't create SDK variants.  Also clear the sdk_version property
for modules that don't have SDK variants so that later code doesn't
use it to trigger SDK behaviors.

Test: m checkbuild
Change-Id: I1920fa82e9fab06235f01a62624382efa16cc6e3
This commit is contained in:
Colin Cross 2021-01-19 14:56:07 -08:00
parent 86cc40a74c
commit 94e347e6a5
5 changed files with 15 additions and 8 deletions

View file

@ -2427,10 +2427,6 @@ func (m *ModuleBase) MakeAsPlatform() {
m.commonProperties.System_ext_specific = boolPtr(false)
}
func (m *ModuleBase) EnableNativeBridgeSupportByDefault() {
m.commonProperties.Native_bridge_supported = boolPtr(true)
}
func (m *ModuleBase) MakeAsSystemExt() {
m.commonProperties.Vendor = boolPtr(false)
m.commonProperties.Proprietary = boolPtr(false)

View file

@ -1046,7 +1046,8 @@ func (c *Module) UseVndk() bool {
}
func (c *Module) canUseSdk() bool {
return c.Os() == android.Android && !c.UseVndk() && !c.InRamdisk() && !c.InRecovery() && !c.InVendorRamdisk()
return c.Os() == android.Android && c.Target().NativeBridge == android.NativeBridgeDisabled &&
!c.UseVndk() && !c.InRamdisk() && !c.InRecovery() && !c.InVendorRamdisk()
}
func (c *Module) UseSdk() bool {

View file

@ -354,6 +354,5 @@ func newStubLibrary() *Module {
func NdkLibraryFactory() android.Module {
module := newStubLibrary()
android.InitAndroidArchModule(module, android.DeviceSupported, android.MultilibBoth)
module.ModuleBase.EnableNativeBridgeSupportByDefault()
return module
}

View file

@ -70,7 +70,6 @@ func (*ndkPrebuiltObjectLinker) linkerDeps(ctx DepsContext, deps Deps) Deps {
// ./prebuilts/ndk/current/platforms/android-<sdk_version>/arch-$(HOST_ARCH)/usr/lib/<NAME>.o.
func NdkPrebuiltObjectFactory() android.Module {
module := newBaseModule(android.DeviceSupported, android.MultilibBoth)
module.ModuleBase.EnableNativeBridgeSupportByDefault()
module.linker = &ndkPrebuiltObjectLinker{
objectLinker: objectLinker{
baseLinker: NewBaseLinker(nil),
@ -150,7 +149,6 @@ func NdkPrebuiltStaticStlFactory() android.Module {
module.Properties.AlwaysSdk = true
module.Properties.Sdk_version = StringPtr("current")
module.stl.Properties.Stl = StringPtr("none")
module.ModuleBase.EnableNativeBridgeSupportByDefault()
return module.Init()
}

View file

@ -38,18 +38,31 @@ func sdkMutator(ctx android.BottomUpMutatorContext) {
ctx.CreateVariations("sdk")
} else if m.UseSdk() || m.SplitPerApiLevel() {
modules := ctx.CreateVariations("", "sdk")
// Clear the sdk_version property for the platform (non-SDK) variant so later code
// doesn't get confused by it.
modules[0].(*Module).Properties.Sdk_version = nil
// Mark the SDK variant.
modules[1].(*Module).Properties.IsSdkVariant = true
if ctx.Config().UnbundledBuildApps() {
// For an unbundled apps build, hide the platform variant from Make.
modules[0].(*Module).Properties.HideFromMake = true
modules[0].(*Module).Properties.PreventInstall = true
} else {
// For a platform build, mark the SDK variant so that it gets a ".sdk" suffix when
// exposed to Make.
modules[1].(*Module).Properties.SdkAndPlatformVariantVisibleToMake = true
modules[1].(*Module).Properties.PreventInstall = true
}
ctx.AliasVariation("")
} else {
if m, ok := ctx.Module().(*Module); ok {
// Clear the sdk_version property for modules that don't have an SDK variant so
// later code doesn't get confused by it.
m.Properties.Sdk_version = nil
}
ctx.CreateVariations("")
ctx.AliasVariation("")
}