From 0641004a3f1e42316fc682b943345eeb6d36974a Mon Sep 17 00:00:00 2001 From: Inseob Kim Date: Mon, 18 Jan 2021 15:23:28 +0900 Subject: [PATCH] Refine sysprop_library header rules Instead of unreliable giant if clause, it's enough to check dependency between platform (system, system-ext), product, and vendor. Test: sysprop_test soong test Test: link against host_supported sysprop_library and use internal props Change-Id: I7bd5df00b302fa261eff5120106aacc3df93c1b2 --- cc/library.go | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/cc/library.go b/cc/library.go index bc6ff69e1..af9aaca51 100644 --- a/cc/library.go +++ b/cc/library.go @@ -1318,17 +1318,13 @@ func (library *libraryDecorator) link(ctx ModuleContext, if library.baseCompiler.hasSrcExt(".sysprop") { dir := android.PathForModuleGen(ctx, "sysprop", "include") if library.Properties.Sysprop.Platform != nil { - isClientProduct := ctx.ProductSpecific() && !ctx.useVndk() - isClientVendor := ctx.useVndk() isOwnerPlatform := Bool(library.Properties.Sysprop.Platform) // If the owner is different from the user, expose public header. That is, // 1) if the user is product (as owner can only be platform / vendor) - // 2) if one is platform and the other is vendor - // Exceptions are ramdisk and recovery. They are not enforced at all. So - // they always use internal header. - if !ctx.inRamdisk() && !ctx.inVendorRamdisk() && !ctx.inRecovery() && - (isClientProduct || (isOwnerPlatform == isClientVendor)) { + // 2) if the owner is platform and the client is vendor + // We don't care Platform -> Vendor dependency as it's already forbidden. + if ctx.Device() && (ctx.ProductSpecific() || (isOwnerPlatform && ctx.inVendor())) { dir = android.PathForModuleGen(ctx, "sysprop/public", "include") } }