Recognize '-' as special -MF argument (write to stdout)
authorBoris Kolpackov <boris@codesynthesis.com>
Wed, 14 Jun 2017 16:05:57 +0000 (16:05 +0000)
committerJoseph Myers <jsm28@gcc.gnu.org>
Wed, 14 Jun 2017 16:05:57 +0000 (17:05 +0100)
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

gcc/ChangeLog
gcc/c-family/ChangeLog
gcc/c-family/c-opts.c
gcc/doc/cppopts.texi

index 59ca50606dedee3b72b42bb044637375219607ca..2987e5ee8ab954592009e34574b68eb41cc0253e 100644 (file)
@@ -1,3 +1,7 @@
+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.
index 9387bb079c6e27ab1f9969f8d2f51c980a348341..1eba1c6533a6268c59f11d0d717df0c2bfb96093 100644 (file)
@@ -1,3 +1,7 @@
+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
index be4478f5ce99758b57ed3327d5c61120729aeb21..1657e7a4390ee1f93b62dcbef7cceca1dff03a14 100644 (file)
@@ -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);
 
index 0497712bee910b0efefeb1a661c3f0b420321b1a..16bf22a6f38987dd720dd11e1ea67069cf167b79 100644 (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