Am 04.10.22 um 17:12 schrieb Ben Boeckel:
This patch implements support for [P1689R5][] to communicate to a build
system the C++20 module dependencies to build systems so that they may
build `.gcm` files in the proper order.

Is there a reason that you are touching so many frontends?

diff --git a/gcc/fortran/cpp.cc b/gcc/fortran/cpp.cc
index 364bd0d2a85..0b9df9c02cd 100644
--- a/gcc/fortran/cpp.cc
+++ b/gcc/fortran/cpp.cc
@@ -712,7 +712,7 @@ gfc_cpp_done (void)
          FILE *f = fopen (gfc_cpp_option.deps_filename, "w");
          if (f)
            {
-             cpp_finish (cpp_in, f);
+             cpp_finish (cpp_in, f, NULL);
              fclose (f);
            }
          else
@@ -721,7 +721,7 @@ gfc_cpp_done (void)
                             xstrerror (errno));
        }
        else
-       cpp_finish (cpp_in, stdout);
+       cpp_finish (cpp_in, stdout, NULL);
      }

    cpp_undef_all (cpp_in);

Couldn't you simply default the third argument of cpp_finish() to NULL?

diff --git a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h
index 2db1e9cbdfb..90787230a9e 100644
--- a/libcpp/include/cpplib.h
+++ b/libcpp/include/cpplib.h
@@ -298,6 +298,9 @@ typedef CPPCHAR_SIGNED_T cppchar_signed_t;
  /* Style of header dependencies to generate.  */
  enum cpp_deps_style { DEPS_NONE = 0, DEPS_USER, DEPS_SYSTEM };

+/* Format of header dependencies to generate.  */
+enum cpp_deps_format { DEPS_FMT_NONE = 0, DEPS_FMT_P1689R5 };
+
  /* The possible normalization levels, from most restrictive to least.  */
  enum cpp_normalize_level {
    /* In NFKC.  */
@@ -581,6 +584,9 @@ struct cpp_options
      /* Style of header dependencies to generate.  */
      enum cpp_deps_style style;

+    /* Format of header dependencies to generate.  */
+    enum cpp_deps_format format;
+
      /* Assume missing files are generated files.  */
      bool missing_files;

@@ -1104,9 +1110,9 @@ extern void cpp_post_options (cpp_reader *);
  extern void cpp_init_iconv (cpp_reader *);

  /* Call this to finish preprocessing.  If you requested dependency
-   generation, pass an open stream to write the information to,
-   otherwise NULL.  It is your responsibility to close the stream.  */
-extern void cpp_finish (cpp_reader *, FILE *deps_stream);
+   generation, pass open stream(s) to write the information to,
+   otherwise NULL.  It is your responsibility to close the stream(s).  */
+extern void cpp_finish (cpp_reader *, FILE *deps_stream, FILE *fdeps_stream);
                                                                 ^^^^^^^

  /* Call this to release the handle at the end of preprocessing.  Any
     use of the handle after this function returns is invalid.  */


Reply via email to