Ninja: Restore slash style for MinGW tools when extra languages are enabled

Since commit f3ca199c9b (cmGlobalNinjaGenerator: Factor out GNU-like
command-line detection on Windows, 2023-03-18, v3.26.1~2^2~6), we
accidentally "unrecognize" MinGW tools on Windows if a language other
than C or CXX is enabled.  This causes the wrong slash style to be
generated in paths in `build.ninja`.

Fixes: #24642
This commit is contained in:
Brad King
2023-03-27 18:16:37 -04:00
parent 381327c944
commit a67cd9c39c
2 changed files with 7 additions and 5 deletions

View File

@@ -956,8 +956,9 @@ void cmGlobalNinjaGenerator::EnableLanguage(
mf->GetSafeDefinition(cmStrCat("CMAKE_", l, "_SIMULATE_ID"));
std::string const& compilerFrontendVariant = mf->GetSafeDefinition(
cmStrCat("CMAKE_", l, "_COMPILER_FRONTEND_VARIANT"));
this->SetUsingGCCOnWindows(
DetectGCCOnWindows(compilerId, simulateId, compilerFrontendVariant));
if (DetectGCCOnWindows(compilerId, simulateId, compilerFrontendVariant)) {
this->MarkAsGCCOnWindows();
}
#endif
}
}
@@ -2843,8 +2844,9 @@ int cmcmd_cmake_ninja_dyndep(std::vector<std::string>::const_iterator argBeg,
cmGlobalNinjaGenerator& gg =
cm::static_reference_cast<cmGlobalNinjaGenerator>(ggd);
# ifdef _WIN32
gg.SetUsingGCCOnWindows(
DetectGCCOnWindows(compilerId, simulateId, compilerFrontendVariant));
if (DetectGCCOnWindows(compilerId, simulateId, compilerFrontendVariant)) {
gg.MarkAsGCCOnWindows();
}
# endif
return gg.WriteDyndepFile(dir_top_src, dir_top_bld, dir_cur_src, dir_cur_bld,
arg_dd, arg_ddis, module_dir, linked_target_dirs,

View File

@@ -169,7 +169,7 @@ public:
const std::string& comment = "");
bool IsGCCOnWindows() const { return this->UsingGCCOnWindows; }
void SetUsingGCCOnWindows(bool b) { this->UsingGCCOnWindows = b; }
void MarkAsGCCOnWindows() { this->UsingGCCOnWindows = true; }
cmGlobalNinjaGenerator(cmake* cm);