Only depend on a single file for generated headers
While the rule may really need all of the generated header files to exist, only one of them (per genrule task) needs to be in the dependency list, since the rest are essentially aliases. This brings an AOSP aosp_arm-userdebug out/soong/build.ninja file from 372MB to 156MB, with equivalent functionality. The Android-aosp_arm.mk file is reduced from 11MB to 6.5MB. Bug: 73745773 Test: diff out/soong/build.ninja Test: diff out/soong/Android-aosp_arm.mk Test: rm -rf out; m Change-Id: If17377666292cc20957417fc4c3cd52f98971d0c
This commit is contained in:
parent
431e17af07
commit
9da9d49ede
4
cc/cc.go
4
cc/cc.go
|
@ -1138,13 +1138,13 @@ func (c *Module) depsToPaths(ctx android.ModuleContext) PathDeps {
|
|||
case genHeaderDepTag, genHeaderExportDepTag:
|
||||
if genRule, ok := dep.(genrule.SourceFileGenerator); ok {
|
||||
depPaths.GeneratedHeaders = append(depPaths.GeneratedHeaders,
|
||||
genRule.GeneratedSourceFiles()...)
|
||||
genRule.GeneratedDeps()...)
|
||||
flags := includeDirsToFlags(genRule.GeneratedHeaderDirs())
|
||||
depPaths.Flags = append(depPaths.Flags, flags)
|
||||
if depTag == genHeaderExportDepTag {
|
||||
depPaths.ReexportedFlags = append(depPaths.ReexportedFlags, flags)
|
||||
depPaths.ReexportedFlagsDeps = append(depPaths.ReexportedFlagsDeps,
|
||||
genRule.GeneratedSourceFiles()...)
|
||||
genRule.GeneratedDeps()...)
|
||||
// Add these re-exported flags to help header-abi-dumper to infer the abi exported by a library.
|
||||
c.sabi.Properties.ReexportedIncludeFlags = append(c.sabi.Properties.ReexportedIncludeFlags, flags)
|
||||
|
||||
|
|
|
@ -43,6 +43,7 @@ func init() {
|
|||
type SourceFileGenerator interface {
|
||||
GeneratedSourceFiles() android.Paths
|
||||
GeneratedHeaderDirs() android.Paths
|
||||
GeneratedDeps() android.Paths
|
||||
}
|
||||
|
||||
type HostToolProvider interface {
|
||||
|
@ -107,6 +108,7 @@ type Module struct {
|
|||
exportedIncludeDirs android.Paths
|
||||
|
||||
outputFiles android.Paths
|
||||
outputDeps android.Paths
|
||||
}
|
||||
|
||||
type taskFunc func(ctx android.ModuleContext, rawCommand string, srcFiles android.Paths) generateTask
|
||||
|
@ -130,6 +132,10 @@ func (g *Module) GeneratedHeaderDirs() android.Paths {
|
|||
return g.exportedIncludeDirs
|
||||
}
|
||||
|
||||
func (g *Module) GeneratedDeps() android.Paths {
|
||||
return g.outputDeps
|
||||
}
|
||||
|
||||
func (g *Module) DepsMutator(ctx android.BottomUpMutatorContext) {
|
||||
android.ExtractSourcesDeps(ctx, g.properties.Srcs)
|
||||
android.ExtractSourcesDeps(ctx, g.properties.Tool_files)
|
||||
|
@ -334,6 +340,7 @@ func (g *Module) generateSourceFile(ctx android.ModuleContext, task generateTask
|
|||
for _, outputFile := range task.out {
|
||||
g.outputFiles = append(g.outputFiles, outputFile)
|
||||
}
|
||||
g.outputDeps = append(g.outputDeps, task.out[0])
|
||||
}
|
||||
|
||||
func generatorFactory(taskGenerator taskFunc, props ...interface{}) *Module {
|
||||
|
|
Loading…
Reference in New Issue