diff options
author | 2024-01-08 12:55:45 +0900 | |
---|---|---|
committer | 2024-01-09 11:37:14 +0900 | |
commit | aa39480d2107fff4c42e321616436b0b0b718cde (patch) | |
tree | d2a4c1dfc7bcc25ed434ac4b273789dead359eaa | |
parent | 208444ce5d9bd9ca013dc81438ef62d6ac4a461f (diff) |
Split usage of UseVndk
UseVndk is a function to check if the module can use VNDK libraries, but
this function was also used to check if the module is installed in the
treblelized partition (vendor or product). As of VNDK deprecation,
UseVndk funtion will return false even when the module is installed in
vendor / product partition, so we need a separated function to check
this. This change introduces a new function 'InVendorOrProduct' which
replaces UseVndk based on its usage.
Bug: 316829758
Test: m nothing --no-skip-soong-tests passed
Change-Id: Ic61fcd16c4554c355f6005894a4519b044b27fe5
-rw-r--r-- | apex/apex.go | 2 | ||||
-rw-r--r-- | cc/androidmk.go | 4 | ||||
-rw-r--r-- | cc/cc.go | 19 | ||||
-rw-r--r-- | cc/compiler.go | 4 | ||||
-rw-r--r-- | cc/image.go | 6 | ||||
-rw-r--r-- | cc/installer.go | 2 | ||||
-rw-r--r-- | cc/library.go | 5 | ||||
-rw-r--r-- | cc/library_stub.go | 6 | ||||
-rw-r--r-- | cc/linkable.go | 1 | ||||
-rw-r--r-- | cc/test.go | 3 | ||||
-rw-r--r-- | cc/testing.go | 1 | ||||
-rw-r--r-- | cc/vndk.go | 4 | ||||
-rw-r--r-- | rust/bindgen.go | 2 | ||||
-rw-r--r-- | rust/compiler.go | 4 | ||||
-rw-r--r-- | rust/image.go | 5 | ||||
-rw-r--r-- | rust/test.go | 2 |
16 files changed, 45 insertions, 25 deletions
diff --git a/apex/apex.go b/apex/apex.go index 42a7d73e7..b7ba5b6d1 100644 --- a/apex/apex.go +++ b/apex/apex.go @@ -2146,7 +2146,7 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, } //TODO: b/296491928 Vendor APEX should use libbinder.ndk instead of libbinder once VNDK is fully deprecated. - if ch.UseVndk() && ctx.Config().IsVndkDeprecated() && child.Name() == "libbinder" { + if ch.InVendorOrProduct() && ctx.Config().IsVndkDeprecated() && child.Name() == "libbinder" { return false } af := apexFileForNativeLibrary(ctx, ch, vctx.handleSpecialLibs) diff --git a/cc/androidmk.go b/cc/androidmk.go index bde096b78..786d2bca2 100644 --- a/cc/androidmk.go +++ b/cc/androidmk.go @@ -16,6 +16,7 @@ package cc import ( "android/soong/aconfig" + "github.com/google/blueprint/proptools" "fmt" @@ -51,6 +52,7 @@ type AndroidMkContext interface { InVendorRamdisk() bool InRecovery() bool NotInPlatform() bool + InVendorOrProduct() bool } type subAndroidMkProvider interface { @@ -294,7 +296,7 @@ func (library *libraryDecorator) AndroidMkEntries(ctx AndroidMkContext, entries // they can be exceptionally used directly when APEXes are not available (e.g. during the // very early stage in the boot process). if len(library.Properties.Stubs.Versions) > 0 && !ctx.Host() && ctx.NotInPlatform() && - !ctx.InRamdisk() && !ctx.InVendorRamdisk() && !ctx.InRecovery() && !ctx.UseVndk() && !ctx.static() { + !ctx.InRamdisk() && !ctx.InVendorRamdisk() && !ctx.InRecovery() && !ctx.InVendorOrProduct() && !ctx.static() { if library.buildStubs() && library.isLatestStubVersion() { entries.SubName = "" } @@ -525,6 +525,7 @@ type ModuleContextIntf interface { inRamdisk() bool inVendorRamdisk() bool inRecovery() bool + InVendorOrProduct() bool selectedStl() string baseModuleName() string getVndkExtendsModuleName() string @@ -1285,7 +1286,7 @@ func (c *Module) UseVndk() bool { func (c *Module) canUseSdk() bool { return c.Os() == android.Android && c.Target().NativeBridge == android.NativeBridgeDisabled && - !c.UseVndk() && !c.InRamdisk() && !c.InRecovery() && !c.InVendorRamdisk() + !c.InVendorOrProduct() && !c.InRamdisk() && !c.InRecovery() && !c.InVendorRamdisk() } func (c *Module) UseSdk() bool { @@ -1667,6 +1668,10 @@ func (ctx *moduleContextImpl) useVndk() bool { return ctx.mod.UseVndk() } +func (ctx *moduleContextImpl) InVendorOrProduct() bool { + return ctx.mod.InVendorOrProduct() +} + func (ctx *moduleContextImpl) isNdk(config android.Config) bool { return ctx.mod.IsNdk(config) } @@ -1896,7 +1901,7 @@ func GetSubnameProperty(actx android.ModuleContext, c LinkableInterface) string } llndk := c.IsLlndk() - if llndk || (c.UseVndk() && c.HasNonSystemVariants()) { + if llndk || (c.InVendorOrProduct() && c.HasNonSystemVariants()) { // .vendor.{version} suffix is added for vendor variant or .product.{version} suffix is // added for product variant only when we have vendor and product variants with core // variant. The suffix is not added for vendor-only or product-only module. @@ -2192,7 +2197,7 @@ func (c *Module) maybeUnhideFromMake() { // is explicitly referenced via .bootstrap suffix or the module is marked with // 'bootstrap: true'). if c.HasStubsVariants() && c.NotInPlatform() && !c.InRamdisk() && - !c.InRecovery() && !c.UseVndk() && !c.static() && !c.isCoverageVariant() && + !c.InRecovery() && !c.InVendorOrProduct() && !c.static() && !c.isCoverageVariant() && c.IsStubs() && !c.InVendorRamdisk() { c.Properties.HideFromMake = false // unhide // Note: this is still non-installable @@ -3434,12 +3439,12 @@ func ShouldUseStubForApex(ctx android.ModuleContext, dep android.Module) bool { panic(fmt.Errorf("Not an APEX module: %q", ctx.ModuleName())) } - useVndk := false + inVendorOrProduct := false bootstrap := false if linkable, ok := ctx.Module().(LinkableInterface); !ok { panic(fmt.Errorf("Not a Linkable module: %q", ctx.ModuleName())) } else { - useVndk = linkable.UseVndk() + inVendorOrProduct = linkable.InVendorOrProduct() bootstrap = linkable.Bootstrap() } @@ -3447,7 +3452,7 @@ func ShouldUseStubForApex(ctx android.ModuleContext, dep android.Module) bool { useStubs := false - if lib := moduleLibraryInterface(dep); lib.buildStubs() && useVndk { // LLNDK + if lib := moduleLibraryInterface(dep); lib.buildStubs() && inVendorOrProduct { // LLNDK if !apexInfo.IsForPlatform() { // For platform libraries, use current version of LLNDK // If this is for use_vendor apex we will apply the same rules @@ -3599,7 +3604,7 @@ func MakeLibName(ctx android.ModuleContext, c LinkableInterface, ccDep LinkableI // The vendor module is a no-vendor-variant VNDK library. Depend on the // core module instead. return libName - } else if ccDep.UseVndk() && nonSystemVariantsExist { + } else if ccDep.InVendorOrProduct() && nonSystemVariantsExist { // The vendor and product modules in Make will have been renamed to not conflict with the // core module, so update the dependency name here accordingly. return libName + ccDep.SubName() diff --git a/cc/compiler.go b/cc/compiler.go index c9de1b053..d7c4d4f4e 100644 --- a/cc/compiler.go +++ b/cc/compiler.go @@ -385,7 +385,7 @@ func (compiler *baseCompiler) compilerFlags(ctx ModuleContext, flags Flags, deps flags.Local.YasmFlags = append(flags.Local.YasmFlags, "-I"+modulePath) } - if !(ctx.useSdk() || ctx.useVndk()) || ctx.Host() { + if !(ctx.useSdk() || ctx.InVendorOrProduct()) || ctx.Host() { flags.SystemIncludeFlags = append(flags.SystemIncludeFlags, "${config.CommonGlobalIncludes}", tc.IncludeFlags()) @@ -402,7 +402,7 @@ func (compiler *baseCompiler) compilerFlags(ctx ModuleContext, flags Flags, deps "-isystem "+getCurrentIncludePath(ctx).Join(ctx, config.NDKTriple(tc)).String()) } - if ctx.useVndk() { + if ctx.InVendorOrProduct() { flags.Global.CommonFlags = append(flags.Global.CommonFlags, "-D__ANDROID_VNDK__") if ctx.inVendor() { flags.Global.CommonFlags = append(flags.Global.CommonFlags, "-D__ANDROID_VENDOR__") diff --git a/cc/image.go b/cc/image.go index 9eec25588..d02a2f3d2 100644 --- a/cc/image.go +++ b/cc/image.go @@ -128,6 +128,12 @@ func (c *Module) InVendor() bool { return c.Properties.ImageVariation == VendorVariation } +// Returns true if the module is "vendor" or "product" variant. This replaces previous UseVndk usages +// which were misused to check if the module variant is vendor or product. +func (c *Module) InVendorOrProduct() bool { + return c.InVendor() || c.InProduct() +} + func (c *Module) InRamdisk() bool { return c.ModuleBase.InRamdisk() || c.ModuleBase.InstallInRamdisk() } diff --git a/cc/installer.go b/cc/installer.go index a0b62959e..30f9612d3 100644 --- a/cc/installer.go +++ b/cc/installer.go @@ -87,7 +87,7 @@ func (installer *baseInstaller) installDir(ctx ModuleContext) android.InstallPat } else if !ctx.Host() && ctx.Config().HasMultilibConflict(ctx.Arch().ArchType) { dir = filepath.Join(dir, ctx.Arch().ArchType.String()) } - if installer.location == InstallInData && ctx.useVndk() { + if installer.location == InstallInData && ctx.InVendorOrProduct() { if ctx.inProduct() { dir = filepath.Join(dir, "product") } else { diff --git a/cc/library.go b/cc/library.go index 592f70f47..c4f12516c 100644 --- a/cc/library.go +++ b/cc/library.go @@ -24,6 +24,7 @@ import ( "sync" "android/soong/android" + "github.com/google/blueprint" "github.com/google/blueprint/pathtools" "github.com/google/blueprint/proptools" @@ -1777,7 +1778,7 @@ func (library *libraryDecorator) install(ctx ModuleContext, file android.Path) { } if Bool(library.Properties.Static_ndk_lib) && library.static() && - !ctx.useVndk() && !ctx.inRamdisk() && !ctx.inVendorRamdisk() && !ctx.inRecovery() && ctx.Device() && + !ctx.InVendorOrProduct() && !ctx.inRamdisk() && !ctx.inVendorRamdisk() && !ctx.inRecovery() && ctx.Device() && library.baseLinker.sanitize.isUnsanitizedVariant() && ctx.isForPlatform() && !ctx.isPreventInstall() { installPath := getUnversionedLibraryInstallPath(ctx).Join(ctx, file.Base()) @@ -1897,7 +1898,7 @@ func (library *libraryDecorator) stubsVersions(ctx android.BaseMutatorContext) [ return nil } - if library.hasLLNDKStubs() && ctx.Module().(*Module).UseVndk() { + if library.hasLLNDKStubs() && ctx.Module().(*Module).InVendorOrProduct() { // LLNDK libraries only need a single stubs variant. return []string{android.FutureApiLevel.String()} } diff --git a/cc/library_stub.go b/cc/library_stub.go index 1183b29cf..aab666408 100644 --- a/cc/library_stub.go +++ b/cc/library_stub.go @@ -48,7 +48,7 @@ func updateImportedLibraryDependency(ctx android.BottomUpMutatorContext) { return } - if m.UseVndk() && apiLibrary.hasLLNDKStubs() { + if m.InVendorOrProduct() && apiLibrary.hasLLNDKStubs() { // Add LLNDK variant dependency if inList("llndk", apiLibrary.properties.Variants) { variantName := BuildApiVariantName(m.BaseModuleName(), "llndk", "") @@ -193,7 +193,7 @@ func (d *apiLibraryDecorator) link(ctx ModuleContext, flags Flags, deps PathDeps } } - if m.UseVndk() && d.hasLLNDKStubs() { + if m.InVendorOrProduct() && d.hasLLNDKStubs() { // LLNDK variant load_cc_variant(BuildApiVariantName(m.BaseModuleName(), "llndk", "")) } else if m.IsSdkVariant() { @@ -312,7 +312,7 @@ func (d *apiLibraryDecorator) stubsVersions(ctx android.BaseMutatorContext) []st } } - if d.hasLLNDKStubs() && m.UseVndk() { + if d.hasLLNDKStubs() && m.InVendorOrProduct() { // LLNDK libraries only need a single stubs variant. return []string{android.FutureApiLevel.String()} } diff --git a/cc/linkable.go b/cc/linkable.go index a009c6c7c..6f2209173 100644 --- a/cc/linkable.go +++ b/cc/linkable.go @@ -218,6 +218,7 @@ type LinkableInterface interface { ProductSpecific() bool InProduct() bool SdkAndPlatformVariantVisibleToMake() bool + InVendorOrProduct() bool // SubName returns the modules SubName, used for image and NDK/SDK variations. SubName() string diff --git a/cc/test.go b/cc/test.go index 347d7c96f..3a1a3af44 100644 --- a/cc/test.go +++ b/cc/test.go @@ -430,8 +430,7 @@ func (test *testBinary) install(ctx ModuleContext, file android.Path) { } }) - useVendor := ctx.inVendor() || ctx.useVndk() - testInstallBase := getTestInstallBase(useVendor) + testInstallBase := getTestInstallBase(ctx.InVendorOrProduct()) configs := getTradefedConfigOptions(ctx, &test.Properties, test.isolated(ctx), ctx.Device()) test.testConfig = tradefed.AutoGenTestConfig(ctx, tradefed.AutoGenTestConfigOptions{ diff --git a/cc/testing.go b/cc/testing.go index b1583f169..bac41e7e2 100644 --- a/cc/testing.go +++ b/cc/testing.go @@ -571,6 +571,7 @@ var PrepareForTestWithCcDefaultModules = android.GroupFixturePreparers( android.MockFS{ "defaults/cc/common/libc.map.txt": nil, "defaults/cc/common/libdl.map.txt": nil, + "defaults/cc/common/libft2.map.txt": nil, "defaults/cc/common/libm.map.txt": nil, "defaults/cc/common/ndk_libc++_shared": nil, "defaults/cc/common/crtbegin_so.c": nil, diff --git a/cc/vndk.go b/cc/vndk.go index b2c6e0d1e..0e0dba934 100644 --- a/cc/vndk.go +++ b/cc/vndk.go @@ -418,11 +418,11 @@ func VndkMutator(mctx android.BottomUpMutatorContext) { lib, isLib := m.linker.(*libraryDecorator) prebuiltLib, isPrebuiltLib := m.linker.(*prebuiltLibraryLinker) - if m.UseVndk() && isLib && lib.hasLLNDKStubs() { + if m.InVendorOrProduct() && isLib && lib.hasLLNDKStubs() { m.VendorProperties.IsLLNDK = true m.VendorProperties.IsVNDKPrivate = Bool(lib.Properties.Llndk.Private) } - if m.UseVndk() && isPrebuiltLib && prebuiltLib.hasLLNDKStubs() { + if m.InVendorOrProduct() && isPrebuiltLib && prebuiltLib.hasLLNDKStubs() { m.VendorProperties.IsLLNDK = true m.VendorProperties.IsVNDKPrivate = Bool(prebuiltLib.Properties.Llndk.Private) } diff --git a/rust/bindgen.go b/rust/bindgen.go index 1cc1574ac..77ba2777f 100644 --- a/rust/bindgen.go +++ b/rust/bindgen.go @@ -170,7 +170,7 @@ func (b *bindgenDecorator) GenerateSource(ctx ModuleContext, deps PathDeps) andr cflags = append(cflags, strings.ReplaceAll(ccToolchain.Cflags(), "${config.", "${cc_config.")) cflags = append(cflags, strings.ReplaceAll(ccToolchain.ToolchainCflags(), "${config.", "${cc_config.")) - if ctx.RustModule().UseVndk() { + if ctx.RustModule().InVendorOrProduct() { cflags = append(cflags, "-D__ANDROID_VNDK__") if ctx.RustModule().InVendor() { cflags = append(cflags, "-D__ANDROID_VENDOR__") diff --git a/rust/compiler.go b/rust/compiler.go index a8c547333..c1bdbeb91 100644 --- a/rust/compiler.go +++ b/rust/compiler.go @@ -332,7 +332,7 @@ func (compiler *baseCompiler) featureFlags(ctx ModuleContext, flags Flags) Flags } func (compiler *baseCompiler) cfgFlags(ctx ModuleContext, flags Flags) Flags { - if ctx.RustModule().UseVndk() { + if ctx.RustModule().InVendorOrProduct() { compiler.Properties.Cfgs = append(compiler.Properties.Cfgs, "android_vndk") if ctx.RustModule().InVendor() { compiler.Properties.Cfgs = append(compiler.Properties.Cfgs, "android_vendor") @@ -520,7 +520,7 @@ func (compiler *baseCompiler) installDir(ctx ModuleContext) android.InstallPath dir = filepath.Join(dir, ctx.Arch().ArchType.String()) } - if compiler.location == InstallInData && ctx.RustModule().UseVndk() { + if compiler.location == InstallInData && ctx.RustModule().InVendorOrProduct() { if ctx.RustModule().InProduct() { dir = filepath.Join(dir, "product") } else if ctx.RustModule().InVendor() { diff --git a/rust/image.go b/rust/image.go index 7adf23460..530c56edd 100644 --- a/rust/image.go +++ b/rust/image.go @@ -192,6 +192,11 @@ func (mod *Module) InVendor() bool { return mod.Properties.ImageVariation == cc.VendorVariation } +// Returns true if the module is "vendor" or "product" variant. +func (mod *Module) InVendorOrProduct() bool { + return mod.InVendor() || mod.InProduct() +} + func (mod *Module) SetImageVariation(ctx android.BaseModuleContext, variant string, module android.Module) { m := module.(*Module) if variant == android.VendorRamdiskVariation { diff --git a/rust/test.go b/rust/test.go index 6619af6a5..258389343 100644 --- a/rust/test.go +++ b/rust/test.go @@ -117,7 +117,7 @@ func (test *testDecorator) compilerProps() []interface{} { func (test *testDecorator) install(ctx ModuleContext) { testInstallBase := "/data/local/tests/unrestricted" - if ctx.RustModule().InVendor() || ctx.RustModule().UseVndk() { + if ctx.RustModule().InVendorOrProduct() { testInstallBase = "/data/local/tests/vendor" } |