Convert wall_werror.txt and pgo_profile_file_missing.txt to soong
Fixes: 398038160
Fixes: 398026077
Test: Manually
Change-Id: I4b52d67b6db94a9a8dfdc3bfb50c6342e4410913
diff --git a/cc/Android.bp b/cc/Android.bp
index 3b29ae8..1ac5a4a 100644
--- a/cc/Android.bp
+++ b/cc/Android.bp
@@ -36,6 +36,7 @@
"linkable.go",
"lto.go",
"makevars.go",
+ "misc_disted_files.go",
"orderfile.go",
"prebuilt.go",
"proto.go",
diff --git a/cc/makevars.go b/cc/makevars.go
index c945102..9358755 100644
--- a/cc/makevars.go
+++ b/cc/makevars.go
@@ -100,15 +100,7 @@
// Filter vendor_public_library that are exported to make
var exportedVendorPublicLibraries []string
- var warningsAllowed []string
- var usingWnoErrors []string
- var missingProfiles []string
ctx.VisitAllModules(func(module android.Module) {
- if v, ok := android.OtherModuleProvider(ctx, module, CcMakeVarsInfoProvider); ok {
- warningsAllowed = android.AppendIfNotZero(warningsAllowed, v.WarningsAllowed)
- usingWnoErrors = android.AppendIfNotZero(usingWnoErrors, v.UsingWnoError)
- missingProfiles = android.AppendIfNotZero(missingProfiles, v.MissingProfile)
- }
if ccModule, ok := module.(*Module); ok {
baseName := ccModule.BaseModuleName()
if ccModule.IsVendorPublicLibrary() && module.ExportedToMake() {
@@ -123,9 +115,6 @@
ctx.Strict("LSDUMP_PATHS", strings.Join(lsdumpPaths, " "))
ctx.Strict("ANDROID_WARNING_ALLOWED_PROJECTS", makeStringOfWarningAllowedProjects())
- ctx.Strict("SOONG_MODULES_WARNINGS_ALLOWED", makeVarsString(warningsAllowed))
- ctx.Strict("SOONG_MODULES_USING_WNO_ERROR", makeVarsString(usingWnoErrors))
- ctx.Strict("SOONG_MODULES_MISSING_PGO_PROFILE_FILE", makeVarsString(missingProfiles))
ctx.Strict("CLANG_COVERAGE_CONFIG_CFLAGS", strings.Join(clangCoverageCFlags, " "))
ctx.Strict("CLANG_COVERAGE_CONFIG_COMMFLAGS", strings.Join(clangCoverageCommonFlags, " "))
diff --git a/cc/misc_disted_files.go b/cc/misc_disted_files.go
new file mode 100644
index 0000000..4bdffaa
--- /dev/null
+++ b/cc/misc_disted_files.go
@@ -0,0 +1,89 @@
+// Copyright 2025 Google Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package cc
+
+import (
+ "android/soong/android"
+ "strings"
+)
+
+func init() {
+ android.InitRegistrationContext.RegisterSingletonType("cc_misc_disted_files", ccMiscDistedFilesSingletonFactory)
+}
+
+func ccMiscDistedFilesSingletonFactory() android.Singleton {
+ return &ccMiscDistedFilesSingleton{}
+}
+
+type ccMiscDistedFilesSingleton struct {
+ warningsAllowed []string
+ usingWnoErrors []string
+}
+
+func (s *ccMiscDistedFilesSingleton) GenerateBuildActions(ctx android.SingletonContext) {
+ var warningsAllowed []string
+ var usingWnoErrors []string
+ var missingProfiles []string
+ ctx.VisitAllModules(func(module android.Module) {
+ if v, ok := android.OtherModuleProvider(ctx, module, CcMakeVarsInfoProvider); ok {
+ warningsAllowed = android.AppendIfNotZero(warningsAllowed, v.WarningsAllowed)
+ usingWnoErrors = android.AppendIfNotZero(usingWnoErrors, v.UsingWnoError)
+ missingProfiles = android.AppendIfNotZero(missingProfiles, v.MissingProfile)
+ }
+ })
+
+ warningsAllowed = android.SortedUniqueStrings(warningsAllowed)
+ usingWnoErrors = android.SortedUniqueStrings(usingWnoErrors)
+ missingProfiles = android.SortedUniqueStrings(missingProfiles)
+
+ s.warningsAllowed = warningsAllowed
+ s.usingWnoErrors = usingWnoErrors
+
+ var sb strings.Builder
+ sb.WriteString("# Modules using -Wno-error\n")
+ for _, nwe := range usingWnoErrors {
+ sb.WriteString(nwe)
+ sb.WriteString("\n")
+ }
+ sb.WriteString("# Modules that allow warnings\n")
+ for _, wa := range warningsAllowed {
+ sb.WriteString(wa)
+ sb.WriteString("\n")
+ }
+ wallWerrFile := android.PathForOutput(ctx, "wall_werror.txt")
+ android.WriteFileRuleVerbatim(ctx, wallWerrFile, sb.String())
+
+ // Only dist this file in soong-only builds. In soong+make builds, it contains information
+ // from make modules, so we'll still rely on make to build and dist it.
+ if !ctx.Config().KatiEnabled() {
+ ctx.DistForGoal("droidcore-unbundled", wallWerrFile)
+ }
+
+ var sb2 strings.Builder
+ sb2.WriteString("# Modules missing PGO profile files\n")
+ for _, mp := range missingProfiles {
+ sb2.WriteString(mp)
+ sb2.WriteString("\n")
+ }
+ profileMissingFile := android.PathForOutput(ctx, "pgo_profile_file_missing.txt")
+ android.WriteFileRuleVerbatim(ctx, profileMissingFile, sb2.String())
+
+ ctx.DistForGoal("droidcore-unbundled", profileMissingFile)
+}
+
+func (s *ccMiscDistedFilesSingleton) MakeVars(ctx android.MakeVarsContext) {
+ ctx.Strict("SOONG_MODULES_WARNINGS_ALLOWED", strings.Join(s.warningsAllowed, " "))
+ ctx.Strict("SOONG_MODULES_USING_WNO_ERROR", strings.Join(s.usingWnoErrors, " "))
+}