From 749ce48eb5b2876b347115a857839fdf9c24a221 Mon Sep 17 00:00:00 2001 From: Dennis Klein Date: Fri, 31 May 2019 16:43:24 +0200 Subject: cmInstallTargetGenerator: Escape generated OLD_RPATH argument On some platforms, e.g. most ELF-based ones, RPATHs may contain keywords that match CMake's variable syntax. To prevent them from being falsely substituted when running the cmake_install.cmake script CMake syntax needs to be escaped. --- Source/cmInstallTargetGenerator.cxx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Source/cmInstallTargetGenerator.cxx b/Source/cmInstallTargetGenerator.cxx index 0e2f9c5..0774436 100644 --- a/Source/cmInstallTargetGenerator.cxx +++ b/Source/cmInstallTargetGenerator.cxx @@ -750,13 +750,14 @@ void cmInstallTargetGenerator::AddChrpathPatchRule( return; } - // Escape any CMake syntax in the install RPATH. + // Escape any CMake syntax in the RPATHs. + std::string escapedOldRpath = cmOutputConverter::EscapeForCMake(oldRpath); std::string escapedNewRpath = cmOutputConverter::EscapeForCMake(newRpath); // Write a rule to run chrpath to set the install-tree RPATH os << indent << "file(RPATH_CHANGE\n" << indent << " FILE \"" << toDestDirPath << "\"\n" - << indent << " OLD_RPATH \"" << oldRpath << "\"\n"; + << indent << " OLD_RPATH " << escapedOldRpath << "\n"; // CMP0095: ``RPATH`` entries are properly escaped in the intermediary // CMake install script. -- cgit v0.12