summaryrefslogtreecommitdiff
path: root/aconfig/all_aconfig_declarations.go
diff options
context:
space:
mode:
author Zhi Dou <zhidou@google.com> 2025-03-11 07:03:14 -0700
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2025-03-11 07:03:14 -0700
commitb5a093736da0e1b045165c05f26e7d9195f2abaa (patch)
treeb75f67823f2c0d952dfabc3ea84ec5d510948e48 /aconfig/all_aconfig_declarations.go
parentd98a99722186fbd0500c0dae8e7fe49364987fc6 (diff)
parenta59e2641d73eb54da7d7f309a75be945f9505c4c (diff)
Merge "check exported flags when building all_aconfig_declarations" into main
Diffstat (limited to 'aconfig/all_aconfig_declarations.go')
-rw-r--r--aconfig/all_aconfig_declarations.go35
1 files changed, 34 insertions, 1 deletions
diff --git a/aconfig/all_aconfig_declarations.go b/aconfig/all_aconfig_declarations.go
index e3ef7ddcc..f3c68c37a 100644
--- a/aconfig/all_aconfig_declarations.go
+++ b/aconfig/all_aconfig_declarations.go
@@ -95,11 +95,44 @@ func GenerateFinalizedFlagsForApiSurface(ctx android.ModuleContext, outputPath a
})
}
+func GenerateExportedFlagCheck(ctx android.ModuleContext, outputPath android.WritablePath,
+ parsedFlagsFile android.Path, apiSurface ApiSurfaceContributorProperties) {
+
+ apiSignatureFiles := android.Paths{}
+ for _, apiSignatureFile := range apiSurface.Api_signature_files.GetOrDefault(ctx, nil) {
+ if path := android.PathForModuleSrc(ctx, apiSignatureFile); path != nil {
+ apiSignatureFiles = append(apiSignatureFiles, path)
+ }
+ }
+ finalizedFlagsFile := android.PathForModuleSrc(ctx, apiSurface.Finalized_flags_file)
+
+ ctx.Build(pctx, android.BuildParams{
+ Rule: ExportedFlagCheckRule,
+ Inputs: append(apiSignatureFiles, finalizedFlagsFile, parsedFlagsFile),
+ Output: outputPath,
+ Args: map[string]string{
+ "api_signature_files": android.JoinPathsWithPrefix(apiSignatureFiles, "--api-signature-file "),
+ "finalized_flags_file": "--finalized-flags-file " + finalizedFlagsFile.String(),
+ "parsed_flags_file": "--parsed-flags-file " + parsedFlagsFile.String(),
+ },
+ })
+}
+
func (this *allAconfigDeclarationsSingleton) GenerateAndroidBuildActions(ctx android.ModuleContext) {
parsedFlagsFile := android.PathForIntermediates(ctx, "all_aconfig_declarations.pb")
this.finalizedFlags = android.PathForIntermediates(ctx, "finalized-flags.txt")
GenerateFinalizedFlagsForApiSurface(ctx, this.finalizedFlags, parsedFlagsFile, this.properties)
- ctx.Phony("all_aconfig_declarations", this.finalizedFlags)
+
+ depsFiles := android.Paths{this.finalizedFlags}
+ if checkExportedFlag, ok := ctx.Config().GetBuildFlag("RELEASE_EXPORTED_FLAG_CHECK"); ok {
+ if checkExportedFlag == "true" {
+ invalidExportedFlags := android.PathForIntermediates(ctx, "invalid_exported_flags.txt")
+ GenerateExportedFlagCheck(ctx, invalidExportedFlags, parsedFlagsFile, this.properties)
+ depsFiles = append(depsFiles, invalidExportedFlags)
+ }
+ }
+
+ ctx.Phony("all_aconfig_declarations", depsFiles...)
android.SetProvider(ctx, allAconfigDeclarationsInfoProvider, allAconfigDeclarationsInfo{
parsedFlagsFile: parsedFlagsFile,