diff options
author | Brad King <brad.king@kitware.com> | 2016-09-16 14:21:31 (GMT) |
---|---|---|
committer | CMake Topic Stage <kwrobot@kitware.com> | 2016-09-16 14:21:31 (GMT) |
commit | cf0e005202b3d17ad1f3c17536065c5589b97f93 (patch) | |
tree | 6f562f62c59371d7293c77daaedc689d5338d9ca /Source | |
parent | 4356bd7fe382585e59033287dcc43386689e5dc2 (diff) | |
parent | 72dfca30b94ba1e85533c61a7b5a330dfbc04da5 (diff) | |
download | CMake-cf0e005202b3d17ad1f3c17536065c5589b97f93.zip CMake-cf0e005202b3d17ad1f3c17536065c5589b97f93.tar.gz CMake-cf0e005202b3d17ad1f3c17536065c5589b97f93.tar.bz2 |
Merge topic 'detect-relink-incompat'
72dfca30 ninja: error out on relink requirements
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmGeneratorTarget.cxx | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index 4f8c036..1e21ac4 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -1162,7 +1162,28 @@ bool cmGeneratorTarget::NeedRelinkBeforeInstall( // If either a build or install tree rpath is set then the rpath // will likely change between the build tree and install tree and // this target must be relinked. - return this->HaveBuildTreeRPATH(config) || this->HaveInstallTreeRPATH(); + bool have_rpath = + this->HaveBuildTreeRPATH(config) || this->HaveInstallTreeRPATH(); + bool is_ninja = + this->LocalGenerator->GetGlobalGenerator()->GetName() == "Ninja"; + + if (have_rpath && is_ninja) { + std::ostringstream w; + /* clang-format off */ + w << + "The install of the " << this->GetName() << " target requires " + "changing an RPATH from the build tree, but this is not supported " + "with the Ninja generator unless on an ELF-based platform. The " + "CMAKE_BUILD_WITH_INSTALL_RPATH variable may be set to avoid this " + "relinking step." + ; + /* clang-format on */ + + cmake* cm = this->LocalGenerator->GetCMakeInstance(); + cm->IssueMessage(cmake::FATAL_ERROR, w.str(), this->GetBacktrace()); + } + + return have_rpath; } bool cmGeneratorTarget::IsChrpathUsed(const std::string& config) const |