| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 | 
							- /* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
 
-    file Copyright.txt or https://cmake.org/licensing for details.  */
 
- #include "cmInstallSubdirectoryGenerator.h"
 
- #include <memory>
 
- #include <sstream>
 
- #include <utility>
 
- #include <vector>
 
- #include "cmLocalGenerator.h"
 
- #include "cmMakefile.h"
 
- #include "cmPolicies.h"
 
- #include "cmScriptGenerator.h"
 
- #include "cmSystemTools.h"
 
- cmInstallSubdirectoryGenerator::cmInstallSubdirectoryGenerator(
 
-   cmMakefile* makefile, std::string binaryDirectory,
 
-   cmListFileBacktrace backtrace)
 
-   : cmInstallGenerator("", std::vector<std::string>(), "", MessageDefault,
 
-                        false, std::move(backtrace))
 
-   , Makefile(makefile)
 
-   , BinaryDirectory(std::move(binaryDirectory))
 
- {
 
- }
 
- cmInstallSubdirectoryGenerator::~cmInstallSubdirectoryGenerator() = default;
 
- bool cmInstallSubdirectoryGenerator::HaveInstall()
 
- {
 
-   for (const auto& generator : this->Makefile->GetInstallGenerators()) {
 
-     if (generator->HaveInstall()) {
 
-       return true;
 
-     }
 
-   }
 
-   return false;
 
- }
 
- void cmInstallSubdirectoryGenerator::CheckCMP0082(
 
-   bool& haveSubdirectoryInstall, bool& /*unused*/)
 
- {
 
-   if (this->HaveInstall()) {
 
-     haveSubdirectoryInstall = true;
 
-   }
 
- }
 
- bool cmInstallSubdirectoryGenerator::Compute(cmLocalGenerator* lg)
 
- {
 
-   this->LocalGenerator = lg;
 
-   return true;
 
- }
 
- void cmInstallSubdirectoryGenerator::GenerateScript(std::ostream& os)
 
- {
 
-   if (!this->Makefile->GetPropertyAsBool("EXCLUDE_FROM_ALL")) {
 
-     cmPolicies::PolicyStatus status =
 
-       this->LocalGenerator->GetPolicyStatus(cmPolicies::CMP0082);
 
-     switch (status) {
 
-       case cmPolicies::WARN:
 
-       case cmPolicies::OLD:
 
-         // OLD behavior is handled in cmLocalGenerator::GenerateInstallRules()
 
-         break;
 
-       case cmPolicies::NEW:
 
-       case cmPolicies::REQUIRED_IF_USED:
 
-       case cmPolicies::REQUIRED_ALWAYS: {
 
-         Indent indent;
 
-         std::string odir = this->BinaryDirectory;
 
-         cmSystemTools::ConvertToUnixSlashes(odir);
 
-         os << indent << "if(NOT CMAKE_INSTALL_LOCAL_ONLY)\n"
 
-            << indent.Next()
 
-            << "# Include the install script for the subdirectory.\n"
 
-            << indent.Next() << "include(\"" << odir
 
-            << "/cmake_install.cmake\")\n"
 
-            << indent << "endif()\n\n";
 
-       } break;
 
-     }
 
-   }
 
- }
 
 
  |