Merge "Store missing profile files into a Make variable"
am: 407c2434c8
Change-Id: Iacb15d1bdb64e3a10d97fbeace8572308488ed5a
This commit is contained in:
commit
db22f2a700
3 changed files with 15 additions and 5 deletions
|
@ -226,7 +226,7 @@ func warningsAreAllowed(subdir string) bool {
|
|||
}
|
||||
|
||||
func addToModuleList(ctx ModuleContext, list string, module string) {
|
||||
getWallWerrorMap(ctx.Config(), list).Store(module, true)
|
||||
getNamedMapForConfig(ctx.Config(), list).Store(module, true)
|
||||
}
|
||||
|
||||
// Create a Flags struct that collects the compile flags from global values,
|
||||
|
|
|
@ -25,22 +25,23 @@ import (
|
|||
)
|
||||
|
||||
const (
|
||||
modulesAddedWall = "ModulesAddedWall"
|
||||
modulesUsingWnoError = "ModulesUsingWnoError"
|
||||
modulesAddedWall = "ModulesAddedWall"
|
||||
modulesUsingWnoError = "ModulesUsingWnoError"
|
||||
modulesMissingProfileFile = "ModulesMissingProfileFile"
|
||||
)
|
||||
|
||||
func init() {
|
||||
android.RegisterMakeVarsProvider(pctx, makeVarsProvider)
|
||||
}
|
||||
|
||||
func getWallWerrorMap(config android.Config, name string) *sync.Map {
|
||||
func getNamedMapForConfig(config android.Config, name string) *sync.Map {
|
||||
return config.Once(name, func() interface{} {
|
||||
return &sync.Map{}
|
||||
}).(*sync.Map)
|
||||
}
|
||||
|
||||
func makeStringOfKeys(ctx android.MakeVarsContext, setName string) string {
|
||||
set := getWallWerrorMap(ctx.Config(), setName)
|
||||
set := getNamedMapForConfig(ctx.Config(), setName)
|
||||
keys := []string{}
|
||||
set.Range(func(key interface{}, value interface{}) bool {
|
||||
keys = append(keys, key.(string))
|
||||
|
@ -102,6 +103,7 @@ func makeVarsProvider(ctx android.MakeVarsContext) {
|
|||
ctx.Strict("ANDROID_WARNING_ALLOWED_PROJECTS", makeStringOfWarningAllowedProjects())
|
||||
ctx.Strict("SOONG_MODULES_ADDED_WALL", makeStringOfKeys(ctx, modulesAddedWall))
|
||||
ctx.Strict("SOONG_MODULES_USING_WNO_ERROR", makeStringOfKeys(ctx, modulesUsingWnoError))
|
||||
ctx.Strict("SOONG_MODULES_MISSING_PGO_PROFILE_FILE", makeStringOfKeys(ctx, modulesMissingProfileFile))
|
||||
|
||||
ctx.Strict("ADDRESS_SANITIZER_CONFIG_EXTRA_CFLAGS", strings.Join(asanCflags, " "))
|
||||
ctx.Strict("ADDRESS_SANITIZER_CONFIG_EXTRA_LDFLAGS", strings.Join(asanLdflags, " "))
|
||||
|
|
|
@ -38,6 +38,10 @@ const profileSamplingFlag = "-gline-tables-only"
|
|||
const profileUseInstrumentFormat = "-fprofile-use=%s"
|
||||
const profileUseSamplingFormat = "-fprofile-sample-use=%s"
|
||||
|
||||
func recordMissingProfileFile(ctx ModuleContext, missing string) {
|
||||
getNamedMapForConfig(ctx.Config(), modulesMissingProfileFile).Store(missing, true)
|
||||
}
|
||||
|
||||
type PgoProperties struct {
|
||||
Pgo struct {
|
||||
Instrumentation *bool
|
||||
|
@ -96,6 +100,10 @@ func (props *PgoProperties) getPgoProfileFile(ctx ModuleContext) android.Optiona
|
|||
}
|
||||
}
|
||||
|
||||
// Record that this module's profile file is absent
|
||||
missing := *props.Pgo.Profile_file + ":" + ctx.ModuleDir() + "/Android.bp:" + ctx.ModuleName()
|
||||
recordMissingProfileFile(ctx, missing)
|
||||
|
||||
return android.OptionalPathForPath(nil)
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue