Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0641004a authored by Inseob Kim's avatar Inseob Kim
Browse files

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
parent 4d31a041
Loading
Loading
Loading
Loading
+3 −7
Original line number Diff line number Diff line
@@ -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")
			}
		}