Add support for build statement implicit outputs
authorBrad King <brad.king@kitware.com>
Mon, 13 Jul 2015 19:25:50 +0000 (15:25 -0400)
committerBrad King <brad.king@kitware.com>
Wed, 3 Feb 2016 14:37:17 +0000 (09:37 -0500)
commitcc39240a10fb040fca80bf3669245f2f2d5736c5
tree0b26230a0dd1dde9514dbbe7d6f06a3402c6e8b3
parentf1f3f494f5f67a4cd64b0cddaad472b070f6db07
Add support for build statement implicit outputs

Some build rules produce outputs that are not mentioned on the command
line but that should be part of the build graph.  Such outputs should
not be named in the `$out` variable.  Extend the build statement syntax
to support specification of implicit outputs using the syntax
`| out1 out2` after the explicit outputs and before the `:`.

For example, compilation of a Fortran source file `foo.f90` that defines
`MODULE FOO` may now be specified as:

    rule fc
      command = f95 -c $in -o $out
    build foo.o | foo.mod: fc foo.f90

The `foo.mod` file is an implicit output generated by the compiler based
on the content of the source file and not mentioned on the command line.
doc/manual.asciidoc
src/build_test.cc
src/graph.cc
src/graph.h
src/graph_test.cc
src/manifest_parser.cc
src/manifest_parser_test.cc