Make CMAKE_LINK_LIBRARY_FILE_FLAG work like CMAKE_LINK_LIBRARY_FLAG
The `CMAKE_LINK_LIBRARY_FILE_FLAG` variable is meant for linkers that want library file paths to be preceded by a flag. This is used only for OpenWatcom to add the `library` argument before library file paths. Refactor the approach to treat `CMAKE_LINK_LIBRARY_FILE_FLAG` as a command-line string fragment to add just before the library file path. This has two advantages: * `CMAKE_LINK_LIBRARY_FILE_FLAG` now works like `CMAKE_LINK_LIBRARY_FLAG`. * `CMAKE_LINK_LIBRARY_FILE_FLAG` can now be an attached flag whose value is the library file path. Technically this is a change in behavior, but this setting was created for internal use and should be rarely used outside of CMake itself. Fixes: #19541
This commit is contained in:
parent
7bacf0233b
commit
f6d6dbc293
@ -10,7 +10,7 @@ set(__WINDOWS_OPENWATCOM 1)
|
||||
|
||||
set(CMAKE_LIBRARY_PATH_FLAG "libpath ")
|
||||
set(CMAKE_LINK_LIBRARY_FLAG "library ")
|
||||
set(CMAKE_LINK_LIBRARY_FILE_FLAG "library")
|
||||
set(CMAKE_LINK_LIBRARY_FILE_FLAG "library ")
|
||||
|
||||
if(CMAKE_VERBOSE_MAKEFILE)
|
||||
set(CMAKE_WCL_QUIET)
|
||||
|
@ -990,11 +990,6 @@ void cmComputeLinkInformation::AddTargetItem(std::string const& item,
|
||||
return;
|
||||
}
|
||||
|
||||
// If this platform wants a flag before the full path, add it.
|
||||
if (!this->LibLinkFileFlag.empty()) {
|
||||
this->Items.emplace_back(this->LibLinkFileFlag, false);
|
||||
}
|
||||
|
||||
// For compatibility with CMake 2.4 include the item's directory in
|
||||
// the linker search path.
|
||||
if (this->OldLinkDirMode && !target->IsFrameworkOnApple() &&
|
||||
@ -1057,11 +1052,6 @@ void cmComputeLinkInformation::AddFullItem(std::string const& item)
|
||||
this->OldLinkDirItems.push_back(item);
|
||||
}
|
||||
|
||||
// If this platform wants a flag before the full path, add it.
|
||||
if (!this->LibLinkFileFlag.empty()) {
|
||||
this->Items.emplace_back(this->LibLinkFileFlag, false);
|
||||
}
|
||||
|
||||
// Now add the full path to the library.
|
||||
this->Items.emplace_back(item, true);
|
||||
}
|
||||
|
@ -56,6 +56,11 @@ public:
|
||||
std::string GetChrpathString() const;
|
||||
std::set<cmGeneratorTarget const*> const& GetSharedLibrariesLinked() const;
|
||||
|
||||
std::string const& GetLibLinkFileFlag() const
|
||||
{
|
||||
return this->LibLinkFileFlag;
|
||||
}
|
||||
|
||||
std::string const& GetRPathLinkFlag() const { return this->RPathLinkFlag; }
|
||||
std::string GetRPathLinkString() const;
|
||||
|
||||
|
@ -63,6 +63,7 @@ std::string cmLinkLineComputer::ComputeLinkLibs(cmComputeLinkInformation& cli)
|
||||
continue;
|
||||
}
|
||||
if (item.IsPath) {
|
||||
linkLibs += cli.GetLibLinkFileFlag();
|
||||
linkLibs +=
|
||||
this->ConvertToOutputFormat(this->ConvertToLinkReference(item.Value));
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user