Commit e72c4afd by Boris Kolpackov Committed by Joseph Myers

Recognize '-' as special -MF argument (write to stdout)

Sometimes it is useful to generate pre-processed output to a file and
the dependency information to stdout for further analysis/processing.
For example:

g++ -E -MD -fdirectives-only -o test.ii test.cxx

This will generate the dependency information to test.d (as per the
documentation). While changing this behavior is probably unwise, one
traditional (e.g., supported by -o) way to handle this is to recognize
the special '-' file name as an instruction to write to stdout:

g++ -E -MD -fdirectives-only -o test.ii -MF - test.cxx

Currently this will create a file named '-'. The included patch
changes this behavior to write to stdout.

Note also that Clang has supported this from at least version 3.5.

gcc:
2017-06-14  Boris Kolpackov  <boris@codesynthesis.com>

	* doc/cppopts.texi: Document '-' special value to -MF.

gcc/c-family:
2017-06-14  Boris Kolpackov  <boris@codesynthesis.com>

	* c-opts.c (c_common_finish): Handle '-' special value to -MF.

From-SVN: r249201
parent 4524009c
2017-06-14 Boris Kolpackov <boris@codesynthesis.com>
* doc/cppopts.texi: Document '-' special value to -MF.
2017-06-14 Wilco Dijkstra <wdijkstr@arm.com>
* config/arm/cortex-a53.md (cortex_a53_fpalu) Adjust latency.
......
2017-06-14 Boris Kolpackov <boris@codesynthesis.com>
* c-opts.c (c_common_finish): Handle '-' special value to -MF.
2017-06-13 Marek Polacek <polacek@redhat.com>
PR objc/80949
......
......@@ -1150,6 +1150,8 @@ c_common_finish (void)
output stream. */
if (!deps_file)
deps_stream = out_stream;
else if (deps_file[0] == '-' && deps_file[1] == '\0')
deps_stream = stdout;
else
{
deps_stream = fopen (deps_file, deps_append ? "a": "w");
......@@ -1163,7 +1165,7 @@ c_common_finish (void)
with cpp_destroy (). */
cpp_finish (parse_in, deps_stream);
if (deps_stream && deps_stream != out_stream
if (deps_stream && deps_stream != out_stream && deps_stream != stdout
&& (ferror (deps_stream) || fclose (deps_stream)))
fatal_error (input_location, "closing dependency file %s: %m", deps_file);
......
......@@ -125,6 +125,8 @@ preprocessed output.
When used with the driver options @option{-MD} or @option{-MMD},
@option{-MF} overrides the default dependency output file.
If @var{file} is @file{-}, then the dependencies are written to @file{stdout}.
@item -MG
@opindex MG
In conjunction with an option such as @option{-M} requesting
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment