Collect info on non-cc sources in a cc module.

Cc modules in Soong can contain non-cc srcs, collect information on
whether they exist in a module. This is not entirely precise as globs
are not evaluated and srcs from other modules (e.g. filegroups,
generated sources) are not handled; however, it should give a decent
lower bound on how often each type occurs.

Bug: 194938896
Test: SOONG_DUMP_JSON_MODULE_GRAPH=/tmp/json_srcs m nothing and verify
      outputs
Change-Id: I7ad52e863727cf5fa4e8d41cf04d27c86e395c6d
This commit is contained in:
Liz Kammer
2021-08-17 17:29:51 -04:00
parent 0dd067d309
commit 74ec1686aa

View File

@@ -822,6 +822,16 @@ type Module struct {
}
func (c *Module) AddJSONData(d *map[string]interface{}) {
var hasAidl, hasLex, hasProto, hasRenderscript, hasSysprop, hasWinMsg, hasYacc bool
if b, ok := c.compiler.(*baseCompiler); ok {
hasAidl = b.hasSrcExt(".aidl")
hasLex = b.hasSrcExt(".l") || b.hasSrcExt(".ll")
hasProto = b.hasSrcExt(".proto")
hasRenderscript = b.hasSrcExt(".rscript") || b.hasSrcExt(".fs")
hasSysprop = b.hasSrcExt(".sysprop")
hasWinMsg = b.hasSrcExt(".mc")
hasYacc = b.hasSrcExt(".y") || b.hasSrcExt(".yy")
}
c.AndroidModuleBase().AddJSONData(d)
(*d)["Cc"] = map[string]interface{}{
"SdkVersion": c.SdkVersion(),
@@ -858,6 +868,14 @@ func (c *Module) AddJSONData(d *map[string]interface{}) {
"IsVendorPublicLibrary": c.IsVendorPublicLibrary(),
"ApexSdkVersion": c.apexSdkVersion,
"TestFor": c.TestFor(),
"AidlSrcs": hasAidl,
"LexSrcs": hasLex,
"ProtoSrcs": hasProto,
"RenderscriptSrcs": hasRenderscript,
"SyspropSrcs": hasSysprop,
"WinMsgSrcs": hasWinMsg,
"YaccSrsc": hasYacc,
"OnlyCSrcs": !(hasAidl || hasLex || hasProto || hasRenderscript || hasSysprop || hasWinMsg || hasYacc),
}
}