diff options
author | 2024-01-11 16:03:13 +0900 | |
---|---|---|
committer | 2024-01-15 17:31:10 +0900 | |
commit | 8487c0b876032b301552ca8b32c6c384c2bc1e2f (patch) | |
tree | 16df1cab260f2f3bdea3ba0d8ab6f668c062ea92 | |
parent | 1c4cc3d40e0081a065d44b0172e66fb58b1967a1 (diff) |
Soong works with empty VNDK version
This change is to fix more misc issues to enable Soong without VNDK
version. This change contains
* Update properties in generated Android.mk
* Update VNDK APEX build to work without VNDK version
Bug: 316829758
Test: AOSP Cuttlefish build succeeded
Change-Id: I10f3c798299afe2d539ec3426b8e2b6068a158f6
-rw-r--r-- | apex/vndk.go | 44 | ||||
-rw-r--r-- | cc/androidmk.go | 2 | ||||
-rw-r--r-- | cc/cc.go | 2 | ||||
-rw-r--r-- | cc/library.go | 17 |
4 files changed, 40 insertions, 25 deletions
diff --git a/apex/vndk.go b/apex/vndk.go index 26c60edc8..377c1c014 100644 --- a/apex/vndk.go +++ b/apex/vndk.go @@ -65,24 +65,27 @@ func apexVndkMutator(mctx android.TopDownMutatorContext) { } vndkVersion := ab.vndkVersion(mctx.DeviceConfig()) - apiLevel, err := android.ApiLevelFromUser(mctx, vndkVersion) - if err != nil { - mctx.PropertyErrorf("vndk_version", "%s", err.Error()) - return - } - - targets := mctx.MultiTargets() - if len(targets) > 0 && apiLevel.LessThan(cc.MinApiForArch(mctx, targets[0].Arch.ArchType)) && - vndkVersion != mctx.DeviceConfig().PlatformVndkVersion() { - // Disable VNDK APEXes for VNDK versions less than the minimum supported API - // level for the primary architecture. This validation is skipped if the VNDK - // version matches the platform VNDK version, which can occur when the device - // config targets the 'current' VNDK (see `vndkVersion`). - ab.Disable() - } - if proptools.String(ab.vndkProperties.Vndk_version) != "" && - apiLevel.GreaterThanOrEqualTo(android.ApiLevelOrPanic(mctx, mctx.DeviceConfig().PlatformVndkVersion())) { - ab.Disable() + if vndkVersion != "" { + apiLevel, err := android.ApiLevelFromUser(mctx, vndkVersion) + if err != nil { + mctx.PropertyErrorf("vndk_version", "%s", err.Error()) + return + } + + targets := mctx.MultiTargets() + if len(targets) > 0 && apiLevel.LessThan(cc.MinApiForArch(mctx, targets[0].Arch.ArchType)) && + vndkVersion != mctx.DeviceConfig().PlatformVndkVersion() { + // Disable VNDK APEXes for VNDK versions less than the minimum supported API + // level for the primary architecture. This validation is skipped if the VNDK + // version matches the platform VNDK version, which can occur when the device + // config targets the 'current' VNDK (see `vndkVersion`). + ab.Disable() + } + if proptools.String(ab.vndkProperties.Vndk_version) != "" && + mctx.DeviceConfig().PlatformVndkVersion() != "" && + apiLevel.GreaterThanOrEqualTo(android.ApiLevelOrPanic(mctx, mctx.DeviceConfig().PlatformVndkVersion())) { + ab.Disable() + } } } } @@ -94,6 +97,11 @@ func apexVndkDepsMutator(mctx android.BottomUpMutatorContext) { if vndkVersion == "" { vndkVersion = mctx.DeviceConfig().PlatformVndkVersion() } + + if vndkVersion == "" { + return + } + if vndkVersion == mctx.DeviceConfig().PlatformVndkVersion() { vndkVersion = "current" } else { diff --git a/cc/androidmk.go b/cc/androidmk.go index 7723dc38f..fe542b05e 100644 --- a/cc/androidmk.go +++ b/cc/androidmk.go @@ -105,7 +105,7 @@ func (c *Module) AndroidMkEntries() []android.AndroidMkEntries { entries.AddStrings("LOCAL_RUNTIME_LIBRARIES", c.Properties.AndroidMkRuntimeLibs...) } entries.SetString("LOCAL_SOONG_LINK_TYPE", c.makeLinkType) - if c.UseVndk() { + if c.InVendorOrProduct() { entries.SetBool("LOCAL_USE_VNDK", true) if c.IsVndk() && !c.static() { entries.SetString("LOCAL_SOONG_VNDK_VERSION", c.VndkVersion()) @@ -3785,7 +3785,7 @@ func (c *Module) Object() bool { } func GetMakeLinkType(actx android.ModuleContext, c LinkableInterface) string { - if c.UseVndk() { + if c.InVendorOrProduct() { if c.IsLlndk() { if !c.IsLlndkPublic() { return "native:vndk_private" diff --git a/cc/library.go b/cc/library.go index 28eb80bb1..ff30d40b9 100644 --- a/cc/library.go +++ b/cc/library.go @@ -17,6 +17,7 @@ package cc import ( "fmt" "io" + "log" "path/filepath" "regexp" "strconv" @@ -871,12 +872,18 @@ func (library *libraryDecorator) getLibNameHelper(baseModuleName string, inVendo func (library *libraryDecorator) getLibName(ctx BaseModuleContext) string { name := library.getLibNameHelper(ctx.baseModuleName(), ctx.inVendor(), ctx.inProduct()) + // Replace name with VNDK ext as original lib only when VNDK is enabled if ctx.IsVndkExt() { - // vndk-ext lib should have the same name with original lib - ctx.VisitDirectDepsWithTag(vndkExtDepTag, func(module android.Module) { - originalName := module.(*Module).outputFile.Path() - name = strings.TrimSuffix(originalName.Base(), originalName.Ext()) - }) + if ctx.DeviceConfig().VndkVersion() != "" { + // vndk-ext lib should have the same name with original lib + ctx.VisitDirectDepsWithTag(vndkExtDepTag, func(module android.Module) { + originalName := module.(*Module).outputFile.Path() + name = strings.TrimSuffix(originalName.Base(), originalName.Ext()) + }) + } else { + // TODO(b/320208784) : Suggest a solution for former VNDK-ext libraries before VNDK deprecation. + log.Printf("VNDK Extension on module %s will not be available once VNDK is deprecated", ctx.baseModuleName()) + } } if ctx.Host() && Bool(library.Properties.Unique_host_soname) { |