1. A method for building a target, the method comprising: generating, using a processor, a graph from software build dependencies, wherein the graph has a starting node that corresponds to software that is being build and a plurality of other nodes corresponding to intermediate object files that are used in building the software; identifying, using a processor, a first node that is connected to a second node in the graph; identifying a first command that is needed to build the first node and a second command that is needed to build the second node, both commands comprising software build commands; receiving a determination of whether the first and second commands are capable of working with data streams based on whether the first and second commands can interface with at least on pipe; transforming the first command to output a data stream when it is determined that both the first command and second command are capable of working with data streams; failing to modify the second command to accept the data stream from the first command as input when it is determined that one of the first and second commands is incapable of working with data streams; and wherein the first node is a prerequisite for the second node, and the command is transformed only when the first node is a prerequisite for a node in the graph.