Expose all deps on genrules
For remote builds, we actually need to know that we depend on all outputs from a genrule, not just the first one. But having every user depend on every genrule output increases the ninja file size by >40%. So to work around the increase in file size, use a ninja phony rule to produce a single alias to all of the files. Unlike make, where phony rules are always dirty, ninja does not attempt to stat phony rules as long as they have inputs, so they act as an alias. (If they don't have inputs, it will stat the file an only consider it dirty if it doesn't exist.) My remote build tooling can then see that it's a phony rule with inputs, and collapse all of these inputs onto the actual rule. This only applies to genrules that have >6 outputs, in order to keep the graph simpler and easier to read for the common case. That's ~10% of the genrules in AOSP, and it increases the ninja file size by ~1.3%. Test: manual ninja file inspection Test: treehugger Change-Id: I1a26a02fe983f0c92ce726ada3133707223e662e
Loading
Please register or sign in to comment