فهرست منبع

Merge topic 'misc-cxxmodule-fixes'

3b632f32fa Tests/CXXModules: forward the default build type
5ab6b09691 Tests/CXXModules: fix multi-config and MSVC details
11b62ef118 Tests/CXXModules: add missing `bmi-only` and compiler id fields
5d9631fbdd Tests/CXXModules: fix key set mismatch error messages
86e7fb72cb Tests/CXXModules: use a less generic name for the config
6b940dc590 Tests/CXXModules: replace the object extension as well
1c9f83c8ec Tests/CXXModules: fix error detection propagation
7a4c02cb38 cmGlobalGenerator: factor out messaging for CMP0037
...

Acked-by: Kitware Robot <[email protected]>
Tested-by: buildbot <[email protected]>
Acked-by: Pavel Solodovnikov <[email protected]>
Merge-request: !8834
Brad King 2 سال پیش
والد
کامیت
2a12a83037

+ 4 - 2
Help/variable/CMAKE_EXPORT_COMPILE_COMMANDS.rst

@@ -15,7 +15,8 @@ form.  The format of the JSON file looks like:
     {
       "directory": "/home/user/development/project",
       "command": "/usr/bin/c++ ... -c ../foo/foo.cc",
-      "file": "../foo/foo.cc"
+      "file": "../foo/foo.cc",
+      "output": "../foo.dir/foo.cc.o"
     },
 
     ...
@@ -23,7 +24,8 @@ form.  The format of the JSON file looks like:
     {
       "directory": "/home/user/development/project",
       "command": "/usr/bin/c++ ... -c ../foo/bar.cc",
-      "file": "../foo/bar.cc"
+      "file": "../foo/bar.cc",
+      "output": "../foo.dir/bar.cc.o"
     }
   ]
 

+ 2 - 8
Source/cmGeneratorTarget.cxx

@@ -4287,9 +4287,6 @@ std::string cmGeneratorTarget::GetPchHeader(const std::string& config,
         this->GetGlobalGenerator()->FindGeneratorTarget(*pchReuseFrom);
     }
 
-    filename = cmStrCat(
-      generatorTarget->LocalGenerator->GetCurrentBinaryDirectory(), "/");
-
     const std::map<std::string, std::string> languageToExtension = {
       { "C", ".h" },
       { "CXX", ".hxx" },
@@ -4297,8 +4294,7 @@ std::string cmGeneratorTarget::GetPchHeader(const std::string& config,
       { "OBJCXX", ".objcxx.hxx" }
     };
 
-    filename =
-      cmStrCat(filename, "CMakeFiles/", generatorTarget->GetName(), ".dir");
+    filename = generatorTarget->GetSupportDirectory();
 
     if (this->GetGlobalGenerator()->IsMultiConfig()) {
       filename = cmStrCat(filename, "/", config);
@@ -4391,9 +4387,7 @@ std::string cmGeneratorTarget::GetPchSource(const std::string& config,
         this->GetGlobalGenerator()->FindGeneratorTarget(*pchReuseFrom);
     }
 
-    filename =
-      cmStrCat(generatorTarget->LocalGenerator->GetCurrentBinaryDirectory(),
-               "/CMakeFiles/", generatorTarget->GetName(), ".dir/cmake_pch");
+    filename = cmStrCat(generatorTarget->GetSupportDirectory(), "/cmake_pch");
 
     // For GCC the source extension will be transformed into .h[xx].gch
     if (!this->Makefile->IsOn("CMAKE_LINK_PCH")) {

+ 19 - 13
Source/cmGlobalGenerator.cxx

@@ -2690,13 +2690,9 @@ cmGlobalGenerator::SplitFrameworkPath(const std::string& path,
   return cm::nullopt;
 }
 
-bool cmGlobalGenerator::CheckCMP0037(std::string const& targetName,
-                                     std::string const& reason) const
+static bool RaiseCMP0037Message(cmake* cm, cmTarget* tgt,
+                                std::string const& reason)
 {
-  cmTarget* tgt = this->FindTarget(targetName);
-  if (!tgt) {
-    return true;
-  }
   MessageType messageType = MessageType::AUTHOR_WARNING;
   std::ostringstream e;
   bool issueMessage = false;
@@ -2715,13 +2711,12 @@ bool cmGlobalGenerator::CheckCMP0037(std::string const& targetName,
       break;
   }
   if (issueMessage) {
-    e << "The target name \"" << targetName << "\" is reserved " << reason
+    e << "The target name \"" << tgt->GetName() << "\" is reserved " << reason
       << ".";
     if (messageType == MessageType::AUTHOR_WARNING) {
       e << "  It may result in undefined behavior.";
     }
-    this->GetCMakeInstance()->IssueMessage(messageType, e.str(),
-                                           tgt->GetBacktrace());
+    cm->IssueMessage(messageType, e.str(), tgt->GetBacktrace());
     if (messageType == MessageType::FATAL_ERROR) {
       return false;
     }
@@ -2729,6 +2724,16 @@ bool cmGlobalGenerator::CheckCMP0037(std::string const& targetName,
   return true;
 }
 
+bool cmGlobalGenerator::CheckCMP0037(std::string const& targetName,
+                                     std::string const& reason) const
+{
+  cmTarget* tgt = this->FindTarget(targetName);
+  if (!tgt) {
+    return true;
+  }
+  return RaiseCMP0037Message(this->GetCMakeInstance(), tgt, reason);
+}
+
 void cmGlobalGenerator::CreateDefaultGlobalTargets(
   std::vector<GlobalTargetInfo>& targets)
 {
@@ -3142,10 +3147,11 @@ bool cmGlobalGenerator::IsReservedTarget(std::string const& name)
   // by one or more of the cmake generators.
 
   // Adding additional targets to this list will require a policy!
-  const char* reservedTargets[] = { "all",       "ALL_BUILD",  "help",
-                                    "install",   "INSTALL",    "preinstall",
-                                    "clean",     "edit_cache", "rebuild_cache",
-                                    "ZERO_CHECK" };
+  static const cm::static_string_view reservedTargets[] = {
+    "all"_s,           "ALL_BUILD"_s,  "help"_s,  "install"_s,
+    "INSTALL"_s,       "preinstall"_s, "clean"_s, "edit_cache"_s,
+    "rebuild_cache"_s, "ZERO_CHECK"_s
+  };
 
   return cm::contains(reservedTargets, name);
 }

+ 10 - 5
Tests/RunCMake/CXXModules/NinjaDependInfoBMIInstall-check.cmake

@@ -2,19 +2,19 @@ include("${CMAKE_CURRENT_LIST_DIR}/check-json.cmake")
 
 if (RunCMake_GENERATOR_IS_MULTI_CONFIG)
   set(have_file 0)
-  foreach (config IN ITEMS Release Debug RelWithDebInfo MinSizeRel)
-    if (NOT EXISTS "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-bmi-install-public.dir/${config}/CXXDependInfo.json")
+  foreach (CXXModules_config IN ITEMS Release Debug RelWithDebInfo MinSizeRel)
+    if (NOT EXISTS "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-bmi-install-public.dir/${CXXModules_config}/CXXDependInfo.json")
       continue ()
     endif ()
     set(have_file 1)
 
-    set(CMAKE_BUILD_TYPE "${config}")
+    set(CMAKE_BUILD_TYPE "${CXXModules_config}")
 
-    file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-bmi-install-public.dir/${config}/CXXDependInfo.json" actual_contents)
+    file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-bmi-install-public.dir/${CXXModules_config}/CXXDependInfo.json" actual_contents)
     file(READ "${CMAKE_CURRENT_LIST_DIR}/expect/NinjaDependInfoBMIInstall-public.json" expect_contents)
     check_json("${actual_contents}" "${expect_contents}")
 
-    file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-bmi-install-private.dir/${config}/CXXDependInfo.json" actual_contents)
+    file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-bmi-install-private.dir/${CXXModules_config}/CXXDependInfo.json" actual_contents)
     file(READ "${CMAKE_CURRENT_LIST_DIR}/expect/NinjaDependInfoBMIInstall-private.json" expect_contents)
     check_json("${actual_contents}" "${expect_contents}")
   endforeach ()
@@ -24,6 +24,9 @@ if (RunCMake_GENERATOR_IS_MULTI_CONFIG)
       "No recognized build configurations found.")
   endif ()
 else ()
+  set(CXXModules_config "${CXXModules_default_build_type}")
+  set(CMAKE_BUILD_TYPE "${CXXModules_default_build_type}")
+
   file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-bmi-install-public.dir/CXXDependInfo.json" actual_contents)
   file(READ "${CMAKE_CURRENT_LIST_DIR}/expect/NinjaDependInfoBMIInstall-public.json" expect_contents)
   check_json("${actual_contents}" "${expect_contents}")
@@ -32,3 +35,5 @@ else ()
   file(READ "${CMAKE_CURRENT_LIST_DIR}/expect/NinjaDependInfoBMIInstall-private.json" expect_contents)
   check_json("${actual_contents}" "${expect_contents}")
 endif ()
+
+string(REPLACE ";" "\n  " RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}")

+ 10 - 5
Tests/RunCMake/CXXModules/NinjaDependInfoExport-check.cmake

@@ -2,19 +2,19 @@ include("${CMAKE_CURRENT_LIST_DIR}/check-json.cmake")
 
 if (RunCMake_GENERATOR_IS_MULTI_CONFIG)
   set(have_file 0)
-  foreach (config IN ITEMS Release Debug RelWithDebInfo MinSizeRel)
-    if (NOT EXISTS "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-exports-public.dir/${config}/CXXDependInfo.json")
+  foreach (CXXModules_config IN ITEMS Release Debug RelWithDebInfo MinSizeRel)
+    if (NOT EXISTS "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-exports-public.dir/${CXXModules_config}/CXXDependInfo.json")
       continue ()
     endif ()
     set(have_file 1)
 
-    set(CMAKE_BUILD_TYPE "${config}")
+    set(CMAKE_BUILD_TYPE "${CXXModules_config}")
 
-    file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-exports-public.dir/${config}/CXXDependInfo.json" actual_contents)
+    file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-exports-public.dir/${CXXModules_config}/CXXDependInfo.json" actual_contents)
     file(READ "${CMAKE_CURRENT_LIST_DIR}/expect/NinjaDependInfoExport-public.json" expect_contents)
     check_json("${actual_contents}" "${expect_contents}")
 
-    file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-exports-private.dir/${config}/CXXDependInfo.json" actual_contents)
+    file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-exports-private.dir/${CXXModules_config}/CXXDependInfo.json" actual_contents)
     file(READ "${CMAKE_CURRENT_LIST_DIR}/expect/NinjaDependInfoExport-private.json" expect_contents)
     check_json("${actual_contents}" "${expect_contents}")
   endforeach ()
@@ -24,6 +24,9 @@ if (RunCMake_GENERATOR_IS_MULTI_CONFIG)
       "No recognized build configurations found.")
   endif ()
 else ()
+  set(CXXModules_config "${CXXModules_default_build_type}")
+  set(CMAKE_BUILD_TYPE "${CXXModules_default_build_type}")
+
   file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-exports-public.dir/CXXDependInfo.json" actual_contents)
   file(READ "${CMAKE_CURRENT_LIST_DIR}/expect/NinjaDependInfoExport-public.json" expect_contents)
   check_json("${actual_contents}" "${expect_contents}")
@@ -32,3 +35,5 @@ else ()
   file(READ "${CMAKE_CURRENT_LIST_DIR}/expect/NinjaDependInfoExport-private.json" expect_contents)
   check_json("${actual_contents}" "${expect_contents}")
 endif ()
+
+string(REPLACE ";" "\n  " RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}")

+ 10 - 5
Tests/RunCMake/CXXModules/NinjaDependInfoFileSet-check.cmake

@@ -2,19 +2,19 @@ include("${CMAKE_CURRENT_LIST_DIR}/check-json.cmake")
 
 if (RunCMake_GENERATOR_IS_MULTI_CONFIG)
   set(have_file 0)
-  foreach (config IN ITEMS Release Debug RelWithDebInfo MinSizeRel)
-    if (NOT EXISTS "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-file-sets-public.dir/${config}/CXXDependInfo.json")
+  foreach (CXXModules_config IN ITEMS Release Debug RelWithDebInfo MinSizeRel)
+    if (NOT EXISTS "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-file-sets-public.dir/${CXXModules_config}/CXXDependInfo.json")
       continue ()
     endif ()
     set(have_file 1)
 
-    set(CMAKE_BUILD_TYPE "${config}")
+    set(CMAKE_BUILD_TYPE "${CXXModules_config}")
 
-    file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-file-sets-public.dir/${config}/CXXDependInfo.json" actual_contents)
+    file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-file-sets-public.dir/${CXXModules_config}/CXXDependInfo.json" actual_contents)
     file(READ "${CMAKE_CURRENT_LIST_DIR}/expect/NinjaDependInfoFileSet-public.json" expect_contents)
     check_json("${actual_contents}" "${expect_contents}")
 
-    file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-file-sets-private.dir/${config}/CXXDependInfo.json" actual_contents)
+    file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-file-sets-private.dir/${CXXModules_config}/CXXDependInfo.json" actual_contents)
     file(READ "${CMAKE_CURRENT_LIST_DIR}/expect/NinjaDependInfoFileSet-private.json" expect_contents)
     check_json("${actual_contents}" "${expect_contents}")
   endforeach ()
@@ -24,6 +24,9 @@ if (RunCMake_GENERATOR_IS_MULTI_CONFIG)
       "No recognized build configurations found.")
   endif ()
 else ()
+  set(CXXModules_config "${CXXModules_default_build_type}")
+  set(CMAKE_BUILD_TYPE "${CXXModules_default_build_type}")
+
   file(READ "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/ninja-file-sets-public.dir/CXXDependInfo.json" actual_contents)
   file(READ "${CMAKE_CURRENT_LIST_DIR}/expect/NinjaDependInfoFileSet-public.json" expect_contents)
   check_json("${actual_contents}" "${expect_contents}")
@@ -32,3 +35,5 @@ else ()
   file(READ "${CMAKE_CURRENT_LIST_DIR}/expect/NinjaDependInfoFileSet-private.json" expect_contents)
   check_json("${actual_contents}" "${expect_contents}")
 endif ()
+
+string(REPLACE ";" "\n  " RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}")

+ 15 - 7
Tests/RunCMake/CXXModules/check-json.cmake

@@ -2,19 +2,20 @@ cmake_policy(PUSH)
 cmake_policy(SET CMP0057 NEW)
 
 function (json_placeholders in out)
-  string(REPLACE "<CONFIG>" "${CMAKE_BUILD_TYPE}" in "${in}")
+  string(REPLACE "<CONFIG>" "${CXXModules_config}" in "${in}")
   if (RunCMake_GENERATOR_IS_MULTI_CONFIG)
-    string(REPLACE "<CONFIG_DIR>" "${CMAKE_BUILD_TYPE}/" in "${in}")
+    string(REPLACE "<CONFIG_DIR>" "/${CXXModules_config}" in "${in}")
   else ()
     string(REPLACE "<CONFIG_DIR>" "" in "${in}")
   endif ()
   if (CMAKE_BUILD_TYPE)
-    string(REPLACE "<CONFIG_FORCE>" "${CMAKE_BUILD_TYPE}" in "${in}")
+    string(REPLACE "<CONFIG_FORCE>" "${CXXModules_config}" in "${in}")
   else ()
     string(REPLACE "<CONFIG_FORCE>" "noconfig" in "${in}")
   endif ()
   string(REPLACE "<SOURCE_DIR>" "${RunCMake_SOURCE_DIR}" in "${in}")
   string(REPLACE "<BINARY_DIR>" "${RunCMake_TEST_BINARY_DIR}" in "${in}")
+  string(REPLACE "<OBJEXT>" "${CMAKE_CXX_OUTPUT_EXTENSION}" in "${in}")
   set("${out}" "${in}" PARENT_SCOPE)
 endfunction ()
 
@@ -22,6 +23,7 @@ function (check_json_value path actual_type expect_type actual_value expect_valu
   if (NOT actual_type STREQUAL expect_type)
     list(APPEND RunCMake_TEST_FAILED
       "Type mismatch at ${path}: ${actual_type} vs. ${expect_type}")
+    set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}" PARENT_SCOPE)
     return ()
   endif ()
 
@@ -53,6 +55,8 @@ function (check_json_value path actual_type expect_type actual_value expect_valu
   elseif (actual_type STREQUAL OBJECT)
     check_json_object("${path}" "${actual_value}" "${expect_value}")
   endif ()
+
+  set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}" PARENT_SCOPE)
 endfunction ()
 
 # Check that two arrays are the same.
@@ -82,6 +86,8 @@ function (check_json_array path actual expect)
     string(JSON expect_value GET "${expect}" "${idx}")
     check_json_value("${new_path}" "${actual_type}" "${expect_type}" "${actual_value}" "${expect_value}")
   endforeach ()
+
+  set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}" PARENT_SCOPE)
 endfunction ()
 
 # Check that two inner objects are the same.
@@ -131,12 +137,12 @@ function (check_json_object path actual expect)
   if (actual_keys_missed)
     string(REPLACE ";" ", " actual_keys_missed_text "${actual_keys_missed}")
     list(APPEND RunCMake_TEST_FAILED
-      "Missing expected members at ${path}: ${actual_keys_missed_text}")
+      "Extra unexpected members at ${path}: ${actual_keys_missed_text}")
   endif ()
   if (expect_keys_missed)
     string(REPLACE ";" ", " expect_keys_missed_text "${expect_keys_missed}")
     list(APPEND RunCMake_TEST_FAILED
-      "Extra unexpected members at ${path}: ${expect_keys_missed_text}")
+      "Missing expected members at ${path}: ${expect_keys_missed_text}")
   endif ()
 
   foreach (key IN LISTS common_keys)
@@ -148,13 +154,15 @@ function (check_json_object path actual expect)
     string(JSON expect_value GET "${expect}" "${key}")
     check_json_value("${new_path}" "${actual_type}" "${expect_type}" "${actual_value}" "${expect_value}")
   endforeach ()
+
+  set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}" PARENT_SCOPE)
 endfunction ()
 
 # Check that two JSON objects are the same.
 function (check_json actual expect)
   check_json_object("" "${actual}" "${expect}")
-endfunction ()
 
-string(REPLACE ";" "; " RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}")
+  set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}" PARENT_SCOPE)
+endfunction ()
 
 cmake_policy(POP)

+ 2 - 0
Tests/RunCMake/CXXModules/compiler_introspection.cmake

@@ -21,6 +21,8 @@ set(CMAKE_CXX_COMPILE_FEATURES \"${CMAKE_CXX_COMPILE_FEATURES}\")
 set(CMAKE_MAKE_PROGRAM \"${CMAKE_MAKE_PROGRAM}\")
 set(forced_cxx_standard \"${forced_cxx_standard}\")
 set(CMAKE_CXX_COMPILER_VERSION \"${CMAKE_CXX_COMPILER_VERSION}\")
+set(CMAKE_CXX_OUTPUT_EXTENSION \"${CMAKE_CXX_OUTPUT_EXTENSION}\")
+set(CXXModules_default_build_type \"${CMAKE_BUILD_TYPE}\")
 ")
 
 file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/info.cmake" "${info}")

+ 9 - 4
Tests/RunCMake/CXXModules/expect/NinjaDependInfoBMIInstall-private.json

@@ -6,9 +6,12 @@
     "script-location": "<BINARY_DIR>/CMakeFiles/ninja-bmi-install-private.dir/install-cxx-module-bmi-<CONFIG_FORCE>.cmake"
   },
   "compiler-id": "<IGNORE>",
+  "compiler-frontend-variant": "<IGNORE>",
+  "compiler-simulate-id": "<IGNORE>",
   "config": "<CONFIG>",
   "cxx-modules": {
-    "CMakeFiles/ninja-bmi-install-private.dir/sources/module-internal-part.cxx.o": {
+    "CMakeFiles/ninja-bmi-install-private.dir<CONFIG_DIR>/sources/module-internal-part.cxx<OBJEXT>": {
+      "bmi-only": false,
       "destination": null,
       "name": "internal_partitions",
       "relative-directory": "sources",
@@ -16,7 +19,8 @@
       "type": "CXX_MODULES",
       "visibility": "PRIVATE"
     },
-    "CMakeFiles/ninja-bmi-install-private.dir/sources/module-part.cxx.o": {
+    "CMakeFiles/ninja-bmi-install-private.dir<CONFIG_DIR>/sources/module-part.cxx<OBJEXT>": {
+      "bmi-only": false,
       "destination": null,
       "name": "modules",
       "relative-directory": "",
@@ -24,7 +28,8 @@
       "type": "CXX_MODULES",
       "visibility": "PRIVATE"
     },
-    "CMakeFiles/ninja-bmi-install-private.dir/sources/module.cxx.o": {
+    "CMakeFiles/ninja-bmi-install-private.dir<CONFIG_DIR>/sources/module.cxx<OBJEXT>": {
+      "bmi-only": false,
       "destination": null,
       "name": "modules",
       "relative-directory": "",
@@ -41,5 +46,5 @@
   "include-dirs": [],
   "language": "CXX",
   "linked-target-dirs": [],
-  "module-dir": "<BINARY_DIR>/CMakeFiles/ninja-bmi-install-private.dir"
+  "module-dir": "<BINARY_DIR>/CMakeFiles/ninja-bmi-install-private.dir<CONFIG_DIR>"
 }

+ 10 - 5
Tests/RunCMake/CXXModules/expect/NinjaDependInfoBMIInstall-public.json

@@ -3,12 +3,15 @@
     "destination": "lib/cxx/modules/<CONFIG>",
     "message-level": "",
     "permissions": "",
-    "script-location": "<BINARY_DIR>/CMakeFiles/ninja-bmi-install-public.dir/install-cxx-module-bmi-noconfig.cmake"
+    "script-location": "<BINARY_DIR>/CMakeFiles/ninja-bmi-install-public.dir/install-cxx-module-bmi-<CONFIG_FORCE>.cmake"
   },
   "compiler-id": "<IGNORE>",
+  "compiler-frontend-variant": "<IGNORE>",
+  "compiler-simulate-id": "<IGNORE>",
   "config": "<CONFIG>",
   "cxx-modules": {
-    "CMakeFiles/ninja-bmi-install-public.dir/sources/module-internal-part.cxx.o": {
+    "CMakeFiles/ninja-bmi-install-public.dir<CONFIG_DIR>/sources/module-internal-part.cxx<OBJEXT>": {
+      "bmi-only": false,
       "destination": "lib/cxx/internals",
       "name": "internal_partitions",
       "relative-directory": "sources",
@@ -16,7 +19,8 @@
       "type": "CXX_MODULES",
       "visibility": "PUBLIC"
     },
-    "CMakeFiles/ninja-bmi-install-public.dir/sources/module-part.cxx.o": {
+    "CMakeFiles/ninja-bmi-install-public.dir<CONFIG_DIR>/sources/module-part.cxx<OBJEXT>": {
+      "bmi-only": false,
       "destination": "lib/cxx",
       "name": "modules",
       "relative-directory": "",
@@ -24,7 +28,8 @@
       "type": "CXX_MODULES",
       "visibility": "PUBLIC"
     },
-    "CMakeFiles/ninja-bmi-install-public.dir/sources/module.cxx.o": {
+    "CMakeFiles/ninja-bmi-install-public.dir<CONFIG_DIR>/sources/module.cxx<OBJEXT>": {
+      "bmi-only": false,
       "destination": "lib/cxx",
       "name": "modules",
       "relative-directory": "",
@@ -41,5 +46,5 @@
   "include-dirs": [],
   "language": "CXX",
   "linked-target-dirs": [],
-  "module-dir": "<BINARY_DIR>/CMakeFiles/ninja-bmi-install-public.dir"
+  "module-dir": "<BINARY_DIR>/CMakeFiles/ninja-bmi-install-public.dir<CONFIG_DIR>"
 }

+ 9 - 4
Tests/RunCMake/CXXModules/expect/NinjaDependInfoExport-private.json

@@ -1,9 +1,12 @@
 {
   "bmi-installation": null,
   "compiler-id": "<IGNORE>",
+  "compiler-frontend-variant": "<IGNORE>",
+  "compiler-simulate-id": "<IGNORE>",
   "config": "<CONFIG>",
   "cxx-modules": {
-    "CMakeFiles/ninja-exports-private.dir/sources/module-internal-part.cxx.o": {
+    "CMakeFiles/ninja-exports-private.dir<CONFIG_DIR>/sources/module-internal-part.cxx<OBJEXT>": {
+      "bmi-only": false,
       "destination": null,
       "name": "internal_partitions",
       "relative-directory": "sources",
@@ -11,7 +14,8 @@
       "type": "CXX_MODULES",
       "visibility": "PRIVATE"
     },
-    "CMakeFiles/ninja-exports-private.dir/sources/module-part.cxx.o": {
+    "CMakeFiles/ninja-exports-private.dir<CONFIG_DIR>/sources/module-part.cxx<OBJEXT>": {
+      "bmi-only": false,
       "destination": null,
       "name": "modules",
       "relative-directory": "",
@@ -19,7 +23,8 @@
       "type": "CXX_MODULES",
       "visibility": "PRIVATE"
     },
-    "CMakeFiles/ninja-exports-private.dir/sources/module.cxx.o": {
+    "CMakeFiles/ninja-exports-private.dir<CONFIG_DIR>/sources/module.cxx<OBJEXT>": {
+      "bmi-only": false,
       "destination": null,
       "name": "modules",
       "relative-directory": "",
@@ -69,5 +74,5 @@
   "include-dirs": [],
   "language": "CXX",
   "linked-target-dirs": [],
-  "module-dir": "<BINARY_DIR>/CMakeFiles/ninja-exports-private.dir"
+  "module-dir": "<BINARY_DIR>/CMakeFiles/ninja-exports-private.dir<CONFIG_DIR>"
 }

+ 9 - 4
Tests/RunCMake/CXXModules/expect/NinjaDependInfoExport-public.json

@@ -1,9 +1,12 @@
 {
   "bmi-installation": null,
   "compiler-id": "<IGNORE>",
+  "compiler-frontend-variant": "<IGNORE>",
+  "compiler-simulate-id": "<IGNORE>",
   "config": "<CONFIG>",
   "cxx-modules": {
-    "CMakeFiles/ninja-exports-public.dir/sources/module-internal-part.cxx.o": {
+    "CMakeFiles/ninja-exports-public.dir<CONFIG_DIR>/sources/module-internal-part.cxx<OBJEXT>": {
+      "bmi-only": false,
       "destination": "lib/cxx/internals",
       "name": "internal_partitions",
       "relative-directory": "sources",
@@ -11,7 +14,8 @@
       "type": "CXX_MODULES",
       "visibility": "PUBLIC"
     },
-    "CMakeFiles/ninja-exports-public.dir/sources/module-part.cxx.o": {
+    "CMakeFiles/ninja-exports-public.dir<CONFIG_DIR>/sources/module-part.cxx<OBJEXT>": {
+      "bmi-only": false,
       "destination": "lib/cxx",
       "name": "modules",
       "relative-directory": "",
@@ -19,7 +23,8 @@
       "type": "CXX_MODULES",
       "visibility": "PUBLIC"
     },
-    "CMakeFiles/ninja-exports-public.dir/sources/module.cxx.o": {
+    "CMakeFiles/ninja-exports-public.dir<CONFIG_DIR>/sources/module.cxx<OBJEXT>": {
+      "bmi-only": false,
       "destination": "lib/cxx",
       "name": "modules",
       "relative-directory": "",
@@ -69,5 +74,5 @@
   "include-dirs": [],
   "language": "CXX",
   "linked-target-dirs": [],
-  "module-dir": "<BINARY_DIR>/CMakeFiles/ninja-exports-public.dir"
+  "module-dir": "<BINARY_DIR>/CMakeFiles/ninja-exports-public.dir<CONFIG_DIR>"
 }

+ 9 - 4
Tests/RunCMake/CXXModules/expect/NinjaDependInfoFileSet-private.json

@@ -1,9 +1,12 @@
 {
   "bmi-installation": null,
   "compiler-id": "<IGNORE>",
+  "compiler-frontend-variant": "<IGNORE>",
+  "compiler-simulate-id": "<IGNORE>",
   "config": "<CONFIG>",
   "cxx-modules": {
-    "CMakeFiles/ninja-file-sets-private.dir/sources/module-internal-part.cxx.o": {
+    "CMakeFiles/ninja-file-sets-private.dir<CONFIG_DIR>/sources/module-internal-part.cxx<OBJEXT>": {
+      "bmi-only": false,
       "destination": null,
       "name": "internal_partitions",
       "relative-directory": "sources",
@@ -11,7 +14,8 @@
       "type": "CXX_MODULES",
       "visibility": "PRIVATE"
     },
-    "CMakeFiles/ninja-file-sets-private.dir/sources/module-part.cxx.o": {
+    "CMakeFiles/ninja-file-sets-private.dir<CONFIG_DIR>/sources/module-part.cxx<OBJEXT>": {
+      "bmi-only": false,
       "destination": null,
       "name": "modules",
       "relative-directory": "",
@@ -19,7 +23,8 @@
       "type": "CXX_MODULES",
       "visibility": "PRIVATE"
     },
-    "CMakeFiles/ninja-file-sets-private.dir/sources/module.cxx.o": {
+    "CMakeFiles/ninja-file-sets-private.dir<CONFIG_DIR>/sources/module.cxx<OBJEXT>": {
+      "bmi-only": false,
       "destination": null,
       "name": "modules",
       "relative-directory": "",
@@ -36,5 +41,5 @@
   "include-dirs": [],
   "language": "CXX",
   "linked-target-dirs": [],
-  "module-dir": "<BINARY_DIR>/CMakeFiles/ninja-file-sets-private.dir"
+  "module-dir": "<BINARY_DIR>/CMakeFiles/ninja-file-sets-private.dir<CONFIG_DIR>"
 }

+ 9 - 4
Tests/RunCMake/CXXModules/expect/NinjaDependInfoFileSet-public.json

@@ -1,9 +1,12 @@
 {
   "bmi-installation": null,
   "compiler-id": "<IGNORE>",
+  "compiler-frontend-variant": "<IGNORE>",
+  "compiler-simulate-id": "<IGNORE>",
   "config": "<CONFIG>",
   "cxx-modules": {
-    "CMakeFiles/ninja-file-sets-public.dir/<CONFIG_DIR>sources/module-internal-part.cxx.o": {
+    "CMakeFiles/ninja-file-sets-public.dir<CONFIG_DIR>/sources/module-internal-part.cxx<OBJEXT>": {
+      "bmi-only": false,
       "destination": "lib/cxx/internals",
       "name": "internal_partitions",
       "relative-directory": "sources",
@@ -11,7 +14,8 @@
       "type": "CXX_MODULES",
       "visibility": "PUBLIC"
     },
-    "CMakeFiles/ninja-file-sets-public.dir/<CONFIG_DIR>sources/module-part.cxx.o": {
+    "CMakeFiles/ninja-file-sets-public.dir<CONFIG_DIR>/sources/module-part.cxx<OBJEXT>": {
+      "bmi-only": false,
       "destination": "lib/cxx",
       "name": "modules",
       "relative-directory": "",
@@ -19,7 +23,8 @@
       "type": "CXX_MODULES",
       "visibility": "PUBLIC"
     },
-    "CMakeFiles/ninja-file-sets-public.dir/<CONFIG_DIR>sources/module.cxx.o": {
+    "CMakeFiles/ninja-file-sets-public.dir<CONFIG_DIR>/sources/module.cxx<OBJEXT>": {
+      "bmi-only": false,
       "destination": "lib/cxx",
       "name": "modules",
       "relative-directory": "",
@@ -36,5 +41,5 @@
   "include-dirs": [],
   "language": "CXX",
   "linked-target-dirs": [],
-  "module-dir": "<BINARY_DIR>/CMakeFiles/ninja-file-sets-public.dir"
+  "module-dir": "<BINARY_DIR>/CMakeFiles/ninja-file-sets-public.dir<CONFIG_DIR>"
 }