1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-10-14 02:08:27 +08:00

cmSystemTools: Add SetRPath() method

This commit is contained in:
Kyle Edwards
2021-05-04 16:31:05 -04:00
parent 966f7250df
commit f73027b182
2 changed files with 37 additions and 1 deletions

View File

@@ -2744,6 +2744,24 @@ bool cmSystemTools::ChangeRPath(std::string const& file,
return AdjustRPath(file, MakeEmptyCallback(newRPath), adjustCallback, emsg,
changed);
}
bool cmSystemTools::SetRPath(std::string const& file,
std::string const& newRPath, std::string* emsg,
bool* changed)
{
auto adjustCallback = [newRPath](cm::optional<std::string>& outRPath,
const std::string& inRPath,
const char* /*se_name*/, std::string *
/*emsg*/) -> bool {
if (inRPath != newRPath) {
outRPath = newRPath;
}
return true;
};
return AdjustRPath(file, MakeEmptyCallback(newRPath), adjustCallback, emsg,
changed);
}
#elif defined(CMake_USE_XCOFF_PARSER)
bool cmSystemTools::ChangeRPath(std::string const& file,
std::string const& oldRPath,
@@ -2813,6 +2831,13 @@ bool cmSystemTools::ChangeRPath(std::string const& file,
}
return true;
}
bool cmSystemTools::SetRPath(std::string const& /*file*/,
std::string const& /*newRPath*/,
std::string* /*emsg*/, bool* /*changed*/)
{
return false;
}
#else
bool cmSystemTools::ChangeRPath(std::string const& /*file*/,
std::string const& /*oldRPath*/,
@@ -2822,6 +2847,13 @@ bool cmSystemTools::ChangeRPath(std::string const& /*file*/,
{
return false;
}
bool cmSystemTools::SetRPath(std::string const& /*file*/,
std::string const& /*newRPath*/,
std::string* /*emsg*/, bool* /*changed*/)
{
return false;
}
#endif
bool cmSystemTools::VersionCompare(cmSystemTools::CompareOp op,

View File

@@ -456,13 +456,17 @@ public:
static bool GuessLibraryInstallName(std::string const& fullPath,
std::string& soname);
/** Try to set the RPATH in an ELF binary. */
/** Try to change the RPATH in an ELF binary. */
static bool ChangeRPath(std::string const& file, std::string const& oldRPath,
std::string const& newRPath,
bool removeEnvironmentRPath,
std::string* emsg = nullptr,
bool* changed = nullptr);
/** Try to set the RPATH in an ELF binary. */
static bool SetRPath(std::string const& file, std::string const& newRPath,
std::string* emsg = nullptr, bool* changed = nullptr);
/** Try to remove the RPATH from an ELF binary. */
static bool RemoveRPath(std::string const& file, std::string* emsg = nullptr,
bool* removed = nullptr);