Add cc_library.target.vendor.no_stubs

This is to handle libz special case. libz has stubs but not an LLNDK.
So, libz.vendor should be treated as non-stub-providing libraries and
Vendor APEX should bundle it if it's used by its contents.

libz will set no_stubs for vendor/product variants.

Bug: 313806237
Test: go tests ./apex/...
Change-Id: I10759d7073838909126f8bfe87654f11aa02fd32
This commit is contained in:
Jooyung Han
2023-12-01 14:21:13 +09:00
parent 198583ed20
commit 85707de8c1
3 changed files with 83 additions and 0 deletions

View File

@@ -23,6 +23,8 @@ import (
"android/soong/android"
"android/soong/snapshot"
"github.com/google/blueprint/proptools"
)
var _ android.ImageInterface = (*Module)(nil)
@@ -622,6 +624,10 @@ func squashVendorSrcs(m *Module) {
lib.baseCompiler.Properties.Exclude_generated_sources = append(lib.baseCompiler.Properties.Exclude_generated_sources,
lib.baseCompiler.Properties.Target.Vendor.Exclude_generated_sources...)
if lib.Properties.Target.Vendor.No_stubs {
proptools.Clear(&lib.Properties.Stubs)
}
}
}
@@ -635,6 +641,10 @@ func squashProductSrcs(m *Module) {
lib.baseCompiler.Properties.Exclude_generated_sources = append(lib.baseCompiler.Properties.Exclude_generated_sources,
lib.baseCompiler.Properties.Target.Product.Exclude_generated_sources...)
if lib.Properties.Target.Product.No_stubs {
proptools.Clear(&lib.Properties.Stubs)
}
}
}

View File

@@ -107,6 +107,13 @@ type LibraryProperties struct {
Suffix *string `android:"arch_variant"`
Header_abi_checker headerAbiCheckerProperties
// Disable stubs for vendor/product variants
// This is a workaround to keep `stubs` only for "core" variant (not product/vendor).
// It would be nice if we could put `stubs` into a `target: { core: {} }`
// block but it's not supported in soong yet. This could be removed/simplified once we have
// a better syntax.
No_stubs bool
}
Platform struct {