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. */