diff --git a/apex/apex.go b/apex/apex.go index e5b5c9272..f66da1d07 100644 --- a/apex/apex.go +++ b/apex/apex.go @@ -102,6 +102,9 @@ type apexBundleProperties struct { // 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 @@ type dependencyTag struct { } 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 @@ func (a *apexBundle) DepsMutator(ctx android.BottomUpMutatorContext) { {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 @@ func (a *apexBundle) GenerateAndroidBuildActions(ctx android.ModuleContext) { } 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() { diff --git a/apex/apex_test.go b/apex/apex_test.go index c5b87aa7b..21cf5dfab 100644 --- a/apex/apex_test.go +++ b/apex/apex_test.go @@ -5995,7 +5995,7 @@ func TestCompatConfig(t *testing.T) { apex { name: "myapex", key: "myapex.key", - prebuilts: ["myjar-platform-compat-config"], + compat_configs: ["myjar-platform-compat-config"], java_libs: ["myjar"], updatable: false, }