Add new compat_configs property to the apex

Bug: 182816033
Test: m nothing
Change-Id: I485d7b178c0ed17e336a6ac2a13e8313426f374b
diff --git a/apex/apex.go b/apex/apex.go
index e5b5c92..f66da1d 100644
--- a/apex/apex.go
+++ b/apex/apex.go
@@ -102,6 +102,9 @@
 	// List of prebuilt files that are embedded inside this APEX bundle.
 	Prebuilts []string
 
+	// List of platform_compat_config files that are embedded inside this APEX bundle.
+	Compat_configs []string
+
 	// List of BPF programs inside this APEX bundle.
 	Bpfs []string
 
@@ -549,20 +552,21 @@
 }
 
 var (
-	androidAppTag  = dependencyTag{name: "androidApp", payload: true}
-	bpfTag         = dependencyTag{name: "bpf", payload: true}
-	certificateTag = dependencyTag{name: "certificate"}
-	executableTag  = dependencyTag{name: "executable", payload: true}
-	fsTag          = dependencyTag{name: "filesystem", payload: true}
-	bootImageTag   = dependencyTag{name: "bootImage", payload: true}
-	javaLibTag     = dependencyTag{name: "javaLib", payload: true}
-	jniLibTag      = dependencyTag{name: "jniLib", payload: true}
-	keyTag         = dependencyTag{name: "key"}
-	prebuiltTag    = dependencyTag{name: "prebuilt", payload: true}
-	rroTag         = dependencyTag{name: "rro", payload: true}
-	sharedLibTag   = dependencyTag{name: "sharedLib", payload: true}
-	testForTag     = dependencyTag{name: "test for"}
-	testTag        = dependencyTag{name: "test", payload: true}
+	androidAppTag    = dependencyTag{name: "androidApp", payload: true}
+	bpfTag           = dependencyTag{name: "bpf", payload: true}
+	certificateTag   = dependencyTag{name: "certificate"}
+	executableTag    = dependencyTag{name: "executable", payload: true}
+	fsTag            = dependencyTag{name: "filesystem", payload: true}
+	bootImageTag     = dependencyTag{name: "bootImage", payload: true}
+	compatConfigsTag = dependencyTag{name: "compatConfig", payload: true}
+	javaLibTag       = dependencyTag{name: "javaLib", payload: true}
+	jniLibTag        = dependencyTag{name: "jniLib", payload: true}
+	keyTag           = dependencyTag{name: "key"}
+	prebuiltTag      = dependencyTag{name: "prebuilt", payload: true}
+	rroTag           = dependencyTag{name: "rro", payload: true}
+	sharedLibTag     = dependencyTag{name: "sharedLib", payload: true}
+	testForTag       = dependencyTag{name: "test for"}
+	testTag          = dependencyTag{name: "test", payload: true}
 )
 
 // TODO(jiyong): shorten this function signature
@@ -731,6 +735,13 @@
 		{Mutator: "arch", Variation: archForPrebuiltEtc.String()},
 	}, prebuiltTag, a.properties.Prebuilts...)
 
+	// Add dependency on platform_compat_configs.
+	// TODO(b/182816033) - make this common-arch once all usages have been migrated.
+	ctx.AddFarVariationDependencies([]blueprint.Variation{
+		{Mutator: "os", Variation: ctx.Os().String()},
+		{Mutator: "arch", Variation: archForPrebuiltEtc.String()},
+	}, compatConfigsTag, a.properties.Compat_configs...)
+
 	// Common-arch dependencies come next
 	commonVariation := ctx.Config().AndroidCommonTarget.Variations()
 	ctx.AddFarVariationDependencies(commonVariation, bootImageTag, a.properties.Boot_images...)
@@ -1740,6 +1751,12 @@
 				} else {
 					ctx.PropertyErrorf("prebuilts", "%q is not a prebuilt_etc and not a platform_compat_config module", depName)
 				}
+			case compatConfigsTag:
+				if compatConfig, ok := child.(java.PlatformCompatConfigIntf); ok {
+					filesInfo = append(filesInfo, apexFileForCompatConfig(ctx, compatConfig, depName))
+				} else {
+					ctx.PropertyErrorf("compat_configs", "%q is not a platform_compat_config module", depName)
+				}
 			case testTag:
 				if ccTest, ok := child.(*cc.Module); ok {
 					if ccTest.IsTestPerSrcAllTestsVariation() {