From ff41abdca0ab9993b6170b9b1f46b3a40921f1b0 Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Thu, 16 May 2024 16:09:12 -0400 Subject: c++: add module extensions There is a trend in the broader C++ community to use a different extension for module interface units, even though (in GCC) they are compiled in the same way as other source files. Let's recognize these extensions as C++. .ixx is the MSVC standard, while the .c*m are supported by Clang. libc++ standard headers use .cppm, as their other source files use .cpp. Perhaps libstdc++ might use .ccm for parallel consistency? One issue with .c++m is that libcpp/mkdeps.cc has been using it for the phony dependencies to express module dependencies, so I'm changing mkdeps to something less likely to be an actual file, ".c++-module". gcc/cp/ChangeLog: * lang-specs.h: Add module interface extensions. gcc/ChangeLog: * doc/invoke.texi: Update module extension docs. libcpp/ChangeLog: * mkdeps.cc (make_write): Change .c++m to .c++-module. gcc/testsuite/ChangeLog: * g++.dg/modules/dep-1_a.C * g++.dg/modules/dep-1_b.C * g++.dg/modules/dep-2.C: Change .c++m to .c++-module. --- gcc/cp/lang-specs.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'gcc/cp') diff --git a/gcc/cp/lang-specs.h b/gcc/cp/lang-specs.h index 7a7f5ff..e565156 100644 --- a/gcc/cp/lang-specs.h +++ b/gcc/cp/lang-specs.h @@ -39,6 +39,12 @@ along with GCC; see the file COPYING3. If not see {".HPP", "@c++-header", 0, 0, 0}, {".tcc", "@c++-header", 0, 0, 0}, {".hh", "@c++-header", 0, 0, 0}, + /* Module interface unit. Should there also be a .C counterpart? */ + {".ixx", "@c++", 0, 0, 0}, /* MSVC */ + {".cppm", "@c++", 0, 0, 0}, /* Clang/libc++ */ + {".cxxm", "@c++", 0, 0, 0}, + {".c++m", "@c++", 0, 0, 0}, + {".ccm", "@c++", 0, 0, 0}, {"@c++-header", "%{E|M|MM:cc1plus -E %{fmodules-ts:-fdirectives-only -fmodule-header}" " %(cpp_options) %2 %(cpp_debug_options)}" -- cgit v1.1