diff options
author | 2025-03-11 07:03:14 -0700 | |
---|---|---|
committer | 2025-03-11 07:03:14 -0700 | |
commit | b5a093736da0e1b045165c05f26e7d9195f2abaa (patch) | |
tree | b75f67823f2c0d952dfabc3ea84ec5d510948e48 /aconfig | |
parent | d98a99722186fbd0500c0dae8e7fe49364987fc6 (diff) | |
parent | a59e2641d73eb54da7d7f309a75be945f9505c4c (diff) |
Merge "check exported flags when building all_aconfig_declarations" into main
Diffstat (limited to 'aconfig')
-rw-r--r-- | aconfig/all_aconfig_declarations.go | 35 | ||||
-rw-r--r-- | aconfig/init.go | 8 |
2 files changed, 42 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, diff --git a/aconfig/init.go b/aconfig/init.go index b2fe5a309..d8d547022 100644 --- a/aconfig/init.go +++ b/aconfig/init.go @@ -77,6 +77,13 @@ var ( "${record-finalized-flags}", }, }, "api_signature_files", "finalized_flags_file", "parsed_flags_file") + ExportedFlagCheckRule = pctx.AndroidStaticRule("ExportedFlagCheckRule", + blueprint.RuleParams{ + Command: `${exported-flag-check} ${parsed_flags_file} ${finalized_flags_file} ${api_signature_files} > ${out}`, + CommandDeps: []string{ + "${exported-flag-check}", + }, + }, "api_signature_files", "finalized_flags_file", "parsed_flags_file") CreateStorageRule = pctx.AndroidStaticRule("aconfig_create_storage", blueprint.RuleParams{ @@ -124,6 +131,7 @@ func init() { pctx.HostBinToolVariable("aconfig", "aconfig") pctx.HostBinToolVariable("soong_zip", "soong_zip") pctx.HostBinToolVariable("record-finalized-flags", "record-finalized-flags") + pctx.HostBinToolVariable("exported-flag-check", "exported-flag-check") } func RegisterBuildComponents(ctx android.RegistrationContext) { |