Merge topic 'msvc-llvm-mt'

3c0f701990 MSVC: Run manifest tool with llvm-mt compatible arguments

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8706
This commit is contained in:
Brad King
2023-08-17 14:25:57 +00:00
committed by Kitware Robot
2 changed files with 6 additions and 3 deletions

View File

@@ -82,7 +82,7 @@ if(("x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_SIMULATE_ID}" STREQUAL "xMSVC" AND
if("x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ID}" STREQUAL "xClang")
set(_CMAKE_NM_NAMES "llvm-nm" "nm")
list(PREPEND _CMAKE_AR_NAMES "llvm-lib")
# llvm-mt does not support all flags we need in vs_link_exe
# llvm-mt is not ready to be used as a replacement for mt.exe
# list(PREPEND _CMAKE_MT_NAMES "llvm-mt")
list(PREPEND _CMAKE_LINKER_NAMES "lld-link")
list(APPEND _CMAKE_TOOL_VARS NM)

View File

@@ -2539,14 +2539,17 @@ int cmVSLink::RunMT(std::string const& out, bool notify)
std::vector<std::string> mtCommand;
mtCommand.push_back(this->MtPath.empty() ? "mt" : this->MtPath);
mtCommand.emplace_back("/nologo");
mtCommand.emplace_back("/manifest");
// add the linker generated manifest if the file exists.
if (this->LinkGeneratesManifest &&
cmSystemTools::FileExists(this->LinkerManifestFile)) {
mtCommand.emplace_back("/manifest");
mtCommand.push_back(this->LinkerManifestFile);
}
cm::append(mtCommand, this->UserManifests);
for (auto const& m : this->UserManifests) {
mtCommand.emplace_back("/manifest");
mtCommand.push_back(m);
}
mtCommand.push_back(out);
if (notify) {
// Add an undocumented option that enables a special return