summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Source/CMakeLists.txt4
-rw-r--r--Source/cmExportFileGenerator.cxx20
-rw-r--r--Source/cmExportFileGenerator.h2
-rw-r--r--Source/cmExportInstallFileGenerator.cxx16
-rw-r--r--Source/cmExportInstallFileGenerator.h5
-rw-r--r--Source/cmInstallAndroidMKExportGenerator.cxx38
-rw-r--r--Source/cmInstallAndroidMKExportGenerator.h40
-rw-r--r--Source/cmInstallCMakeConfigExportGenerator.cxx40
-rw-r--r--Source/cmInstallCMakeConfigExportGenerator.h42
-rw-r--r--Source/cmInstallCommand.cxx15
-rw-r--r--Source/cmInstallExportGenerator.cxx78
-rw-r--r--Source/cmInstallExportGenerator.h23
-rwxr-xr-xbootstrap1
13 files changed, 242 insertions, 82 deletions
diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt
index 1d2b7dd..ae22d56 100644
--- a/Source/CMakeLists.txt
+++ b/Source/CMakeLists.txt
@@ -311,6 +311,10 @@ add_library(
cmGraphVizWriter.h
cmImportedCxxModuleInfo.cxx
cmImportedCxxModuleInfo.h
+ cmInstallAndroidMKExportGenerator.cxx
+ cmInstallAndroidMKExportGenerator.h
+ cmInstallCMakeConfigExportGenerator.cxx
+ cmInstallCMakeConfigExportGenerator.h
cmInstallGenerator.h
cmInstallGenerator.cxx
cmInstallGetRuntimeDependenciesGenerator.h
diff --git a/Source/cmExportFileGenerator.cxx b/Source/cmExportFileGenerator.cxx
index c412172..c863dd5 100644
--- a/Source/cmExportFileGenerator.cxx
+++ b/Source/cmExportFileGenerator.cxx
@@ -1635,6 +1635,18 @@ void cmExportFileGenerator::GenerateTargetFileSets(cmGeneratorTarget* gte,
}
}
+std::string cmExportFileGenerator::GetCxxModuleFile(
+ std::string const& name) const
+{
+ auto const& cxxModuleDirname = this->GetCxxModulesDirectory();
+ if (cxxModuleDirname.empty()) {
+ return {};
+ }
+
+ return cmStrCat(cmSystemTools::GetFilenamePath(this->MainImportFile), '/',
+ cxxModuleDirname, "/cxx-modules-", name, ".cmake");
+}
+
void cmExportFileGenerator::GenerateCxxModuleInformation(
std::string const& name, std::ostream& os)
{
@@ -1648,14 +1660,8 @@ void cmExportFileGenerator::GenerateCxxModuleInformation(
<< "include(\"${CMAKE_CURRENT_LIST_DIR}/" << cxx_module_dirname
<< "/cxx-modules-" << name << ".cmake\")\n\n";
- // Get the path to the file we're going to write.
- std::string path = this->MainImportFile;
- path = cmSystemTools::GetFilenamePath(path);
- auto trampoline_path =
- cmStrCat(path, '/', cxx_module_dirname, "/cxx-modules-", name, ".cmake");
-
// Include all configuration-specific include files.
- cmGeneratedFileStream ap(trampoline_path, true);
+ cmGeneratedFileStream ap(this->GetCxxModuleFile(name), true);
ap.SetCopyIfDifferent(true);
this->GenerateCxxModuleConfigInformation(name, ap);
diff --git a/Source/cmExportFileGenerator.h b/Source/cmExportFileGenerator.h
index f275a12..fe3f533 100644
--- a/Source/cmExportFileGenerator.h
+++ b/Source/cmExportFileGenerator.h
@@ -207,6 +207,8 @@ protected:
virtual cmExportSet* GetExportSet() const { return nullptr; }
+ std::string GetCxxModuleFile(std::string const& name) const;
+
void SetRequiredCMakeVersion(unsigned int major, unsigned int minor,
unsigned int patch);
diff --git a/Source/cmExportInstallFileGenerator.cxx b/Source/cmExportInstallFileGenerator.cxx
index f5f22ef..e1cf92f 100644
--- a/Source/cmExportInstallFileGenerator.cxx
+++ b/Source/cmExportInstallFileGenerator.cxx
@@ -51,7 +51,7 @@ bool cmExportInstallFileGenerator::GenerateMainFile(std::ostream& os)
std::string expectedTargets;
std::string sep;
for (std::unique_ptr<cmTargetExport> const& te :
- this->IEGen->GetExportSet()->GetTargetExports()) {
+ this->GetExportSet()->GetTargetExports()) {
if (te->NamelinkOnly) {
continue;
}
@@ -61,7 +61,7 @@ bool cmExportInstallFileGenerator::GenerateMainFile(std::ostream& os)
allTargets.push_back(te.get());
} else {
std::ostringstream e;
- e << "install(EXPORT \"" << this->IEGen->GetExportSet()->GetName()
+ e << "install(EXPORT \"" << this->GetExportSet()->GetName()
<< "\" ...) "
<< "includes target \"" << te->Target->GetName()
<< "\" more than once in the export set.";
@@ -172,7 +172,7 @@ bool cmExportInstallFileGenerator::GenerateMainFile(std::ostream& os)
bool result = true;
- std::string cxx_modules_name = this->IEGen->GetExportSet()->GetName();
+ std::string cxx_modules_name = this->GetExportSet()->GetName();
this->GenerateCxxModuleInformation(cxx_modules_name, os);
if (requiresConfigFiles) {
for (std::string const& c : this->Configurations) {
@@ -338,7 +338,7 @@ void cmExportInstallFileGenerator::GenerateImportTargetsConfig(
{
// Add each target in the set to the export.
for (std::unique_ptr<cmTargetExport> const& te :
- this->IEGen->GetExportSet()->GetTargetExports()) {
+ this->GetExportSet()->GetTargetExports()) {
// Collect import properties for this target.
if (this->GetExportTargetType(te.get()) ==
cmStateEnums::INTERFACE_LIBRARY) {
@@ -559,8 +559,7 @@ void cmExportInstallFileGenerator::ComplainAboutMissingTarget(
std::vector<std::string> const& exportFiles)
{
std::ostringstream e;
- e << "install(EXPORT \"" << this->IEGen->GetExportSet()->GetName()
- << "\" ...) "
+ e << "install(EXPORT \"" << this->GetExportSet()->GetName() << "\" ...) "
<< "includes target \"" << depender->GetName()
<< "\" which requires target \"" << dependee->GetName() << "\" ";
if (exportFiles.empty()) {
@@ -742,6 +741,11 @@ void cmExportInstallFileGenerator::GenerateCxxModuleConfigInformation(
/* clang-format on */
}
+std::string cmExportInstallFileGenerator::GetCxxModuleFile() const
+{
+ return this->GetCxxModuleFile(this->GetExportSet()->GetName());
+}
+
bool cmExportInstallFileGenerator::
GenerateImportCxxModuleConfigTargetInclusion(std::string const& name,
std::string const& config)
diff --git a/Source/cmExportInstallFileGenerator.h b/Source/cmExportInstallFileGenerator.h
index 7a72584..7547709 100644
--- a/Source/cmExportInstallFileGenerator.h
+++ b/Source/cmExportInstallFileGenerator.h
@@ -51,6 +51,9 @@ public:
return this->ConfigImportFiles;
}
+ /** Get the temporary location of the config-agnostic C++ module file. */
+ std::string GetCxxModuleFile() const;
+
/** Get the per-config C++ module file generated for each configuration.
This maps from the configuration name to the file temporary location
for installation. */
@@ -118,6 +121,8 @@ protected:
std::string GetFileSetFiles(cmGeneratorTarget* gte, cmFileSet* fileSet,
cmTargetExport* te) override;
+ using cmExportFileGenerator::GetCxxModuleFile;
+
std::string GetCxxModulesDirectory() const override;
void GenerateCxxModuleConfigInformation(std::string const&,
std::ostream&) const override;
diff --git a/Source/cmInstallAndroidMKExportGenerator.cxx b/Source/cmInstallAndroidMKExportGenerator.cxx
new file mode 100644
index 0000000..2c52f56
--- /dev/null
+++ b/Source/cmInstallAndroidMKExportGenerator.cxx
@@ -0,0 +1,38 @@
+/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
+ file Copyright.txt or https://cmake.org/licensing for details. */
+#include "cmInstallAndroidMKExportGenerator.h"
+
+#include <utility>
+
+#include <cm/memory>
+
+#include "cmExportInstallAndroidMKGenerator.h"
+#include "cmExportInstallFileGenerator.h"
+#include "cmListFileCache.h"
+
+class cmExportSet;
+
+cmInstallAndroidMKExportGenerator::cmInstallAndroidMKExportGenerator(
+ cmExportSet* exportSet, std::string destination, std::string filePermissions,
+ std::vector<std::string> const& configurations, std::string component,
+ MessageLevel message, bool excludeFromAll, std::string filename,
+ std::string targetNamespace, bool exportOld, cmListFileBacktrace backtrace)
+ : cmInstallExportGenerator(exportSet, std::move(destination),
+ std::move(filePermissions), configurations,
+ std::move(component), message, excludeFromAll,
+ std::move(filename), std::move(targetNamespace),
+ std::string{}, std::move(backtrace))
+ , ExportOld(exportOld)
+{
+ this->EFGen = cm::make_unique<cmExportInstallAndroidMKGenerator>(this);
+}
+
+cmInstallAndroidMKExportGenerator::~cmInstallAndroidMKExportGenerator() =
+ default;
+
+void cmInstallAndroidMKExportGenerator::GenerateScript(std::ostream& os)
+{
+ this->EFGen->SetExportOld(this->ExportOld);
+
+ this->cmInstallExportGenerator::GenerateScript(os);
+}
diff --git a/Source/cmInstallAndroidMKExportGenerator.h b/Source/cmInstallAndroidMKExportGenerator.h
new file mode 100644
index 0000000..dcff756
--- /dev/null
+++ b/Source/cmInstallAndroidMKExportGenerator.h
@@ -0,0 +1,40 @@
+/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
+ file Copyright.txt or https://cmake.org/licensing for details. */
+#pragma once
+
+#include <iosfwd>
+#include <string>
+#include <vector>
+
+#include "cmInstallExportGenerator.h"
+
+class cmExportSet;
+class cmListFileBacktrace;
+
+/** \class cmInstallAndroidMKExportGenerator
+ * \brief Generate rules for creating Android .mk export files.
+ */
+class cmInstallAndroidMKExportGenerator : public cmInstallExportGenerator
+{
+public:
+ cmInstallAndroidMKExportGenerator(
+ cmExportSet* exportSet, std::string destination,
+ std::string filePermissions,
+ std::vector<std::string> const& configurations, std::string component,
+ MessageLevel message, bool excludeFromAll, std::string filename,
+ std::string targetNamespace, bool exportOld,
+ cmListFileBacktrace backtrace);
+ cmInstallAndroidMKExportGenerator(cmInstallAndroidMKExportGenerator const&) =
+ delete;
+ ~cmInstallAndroidMKExportGenerator() override;
+
+ cmInstallAndroidMKExportGenerator& operator=(
+ cmInstallAndroidMKExportGenerator const&) = delete;
+
+protected:
+ char const* InstallSubcommand() const override { return "EXPORT"; }
+
+ void GenerateScript(std::ostream& os) override;
+
+ bool const ExportOld;
+};
diff --git a/Source/cmInstallCMakeConfigExportGenerator.cxx b/Source/cmInstallCMakeConfigExportGenerator.cxx
new file mode 100644
index 0000000..bb7a1a0
--- /dev/null
+++ b/Source/cmInstallCMakeConfigExportGenerator.cxx
@@ -0,0 +1,40 @@
+/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
+ file Copyright.txt or https://cmake.org/licensing for details. */
+#include "cmInstallCMakeConfigExportGenerator.h"
+
+#include <utility>
+
+#include <cm/memory>
+
+#include "cmExportInstallFileGenerator.h"
+#include "cmListFileCache.h"
+
+class cmExportSet;
+
+cmInstallCMakeConfigExportGenerator::cmInstallCMakeConfigExportGenerator(
+ cmExportSet* exportSet, std::string destination, std::string filePermissions,
+ std::vector<std::string> const& configurations, std::string component,
+ MessageLevel message, bool excludeFromAll, std::string filename,
+ std::string targetNamespace, std::string cxxModulesDirectory, bool exportOld,
+ bool exportPackageDependencies, cmListFileBacktrace backtrace)
+ : cmInstallExportGenerator(
+ exportSet, std::move(destination), std::move(filePermissions),
+ configurations, std::move(component), message, excludeFromAll,
+ std::move(filename), std::move(targetNamespace),
+ std::move(cxxModulesDirectory), std::move(backtrace))
+ , ExportOld(exportOld)
+ , ExportPackageDependencies(exportPackageDependencies)
+{
+ this->EFGen = cm::make_unique<cmExportInstallFileGenerator>(this);
+}
+
+cmInstallCMakeConfigExportGenerator::~cmInstallCMakeConfigExportGenerator() =
+ default;
+
+void cmInstallCMakeConfigExportGenerator::GenerateScript(std::ostream& os)
+{
+ this->EFGen->SetExportOld(this->ExportOld);
+ this->EFGen->SetExportPackageDependencies(this->ExportPackageDependencies);
+
+ this->cmInstallExportGenerator::GenerateScript(os);
+}
diff --git a/Source/cmInstallCMakeConfigExportGenerator.h b/Source/cmInstallCMakeConfigExportGenerator.h
new file mode 100644
index 0000000..8f019b1
--- /dev/null
+++ b/Source/cmInstallCMakeConfigExportGenerator.h
@@ -0,0 +1,42 @@
+/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
+ file Copyright.txt or https://cmake.org/licensing for details. */
+#pragma once
+
+#include <iosfwd>
+#include <string>
+#include <vector>
+
+#include "cmInstallExportGenerator.h"
+
+class cmExportSet;
+class cmListFileBacktrace;
+
+/** \class cmInstallCMakeConfigExportGenerator
+ * \brief Generate rules for creating CMake export files.
+ */
+class cmInstallCMakeConfigExportGenerator : public cmInstallExportGenerator
+{
+public:
+ cmInstallCMakeConfigExportGenerator(
+ cmExportSet* exportSet, std::string destination,
+ std::string filePermissions,
+ std::vector<std::string> const& configurations, std::string component,
+ MessageLevel message, bool excludeFromAll, std::string filename,
+ std::string targetNamespace, std::string cxxModulesDirectory,
+ bool exportOld, bool exportPackageDependencies,
+ cmListFileBacktrace backtrace);
+ cmInstallCMakeConfigExportGenerator(
+ cmInstallCMakeConfigExportGenerator const&) = delete;
+ ~cmInstallCMakeConfigExportGenerator() override;
+
+ cmInstallCMakeConfigExportGenerator& operator=(
+ cmInstallCMakeConfigExportGenerator const&) = delete;
+
+protected:
+ char const* InstallSubcommand() const override { return "EXPORT"; }
+
+ void GenerateScript(std::ostream& os) override;
+
+ bool const ExportOld;
+ bool const ExportPackageDependencies;
+};
diff --git a/Source/cmInstallCommand.cxx b/Source/cmInstallCommand.cxx
index 1567629..1dffd43 100644
--- a/Source/cmInstallCommand.cxx
+++ b/Source/cmInstallCommand.cxx
@@ -26,10 +26,11 @@
#include "cmFileSet.h"
#include "cmGeneratorExpression.h"
#include "cmGlobalGenerator.h"
+#include "cmInstallAndroidMKExportGenerator.h"
+#include "cmInstallCMakeConfigExportGenerator.h"
#include "cmInstallCommandArguments.h"
#include "cmInstallCxxModuleBmiGenerator.h"
#include "cmInstallDirectoryGenerator.h"
-#include "cmInstallExportGenerator.h"
#include "cmInstallFileSetGenerator.h"
#include "cmInstallFilesGenerator.h"
#include "cmInstallGenerator.h"
@@ -2028,11 +2029,11 @@ bool HandleExportAndroidMKMode(std::vector<std::string> const& args,
// Create the export install generator.
helper.Makefile->AddInstallGenerator(
- cm::make_unique<cmInstallExportGenerator>(
+ cm::make_unique<cmInstallAndroidMKExportGenerator>(
&exportSet, ica.GetDestination(), ica.GetPermissions(),
ica.GetConfigurations(), ica.GetComponent(), message,
- ica.GetExcludeFromAll(), fname, name_space, "", exportOld, true, false,
- helper.Makefile->GetBacktrace()));
+ ica.GetExcludeFromAll(), std::move(fname), std::move(name_space),
+ exportOld, helper.Makefile->GetBacktrace()));
return true;
#else
@@ -2151,11 +2152,11 @@ bool HandleExportMode(std::vector<std::string> const& args,
// Create the export install generator.
helper.Makefile->AddInstallGenerator(
- cm::make_unique<cmInstallExportGenerator>(
+ cm::make_unique<cmInstallCMakeConfigExportGenerator>(
&exportSet, ica.GetDestination(), ica.GetPermissions(),
ica.GetConfigurations(), ica.GetComponent(), message,
- ica.GetExcludeFromAll(), fname, name_space, cxx_modules_directory,
- exportOld, false, exportPackageDependencies,
+ ica.GetExcludeFromAll(), std::move(fname), std::move(name_space),
+ std::move(cxx_modules_directory), exportOld, exportPackageDependencies,
helper.Makefile->GetBacktrace()));
return true;
diff --git a/Source/cmInstallExportGenerator.cxx b/Source/cmInstallExportGenerator.cxx
index 2f3da3e..b351fbe 100644
--- a/Source/cmInstallExportGenerator.cxx
+++ b/Source/cmInstallExportGenerator.cxx
@@ -6,12 +6,7 @@
#include <sstream>
#include <utility>
-#include <cm/memory>
-
#include "cmCryptoHash.h"
-#ifndef CMAKE_BOOTSTRAP
-# include "cmExportInstallAndroidMKGenerator.h"
-#endif
#include "cmExportInstallFileGenerator.h"
#include "cmExportSet.h"
#include "cmInstallType.h"
@@ -22,29 +17,20 @@
#include "cmSystemTools.h"
cmInstallExportGenerator::cmInstallExportGenerator(
- cmExportSet* exportSet, std::string const& destination,
- std::string file_permissions, std::vector<std::string> const& configurations,
- std::string const& component, MessageLevel message, bool exclude_from_all,
- std::string filename, std::string name_space,
- std::string cxx_modules_directory, bool exportOld, bool android,
- bool exportPackageDependencies, cmListFileBacktrace backtrace)
- : cmInstallGenerator(destination, configurations, component, message,
- exclude_from_all, false, std::move(backtrace))
+ cmExportSet* exportSet, std::string destination, std::string filePermissions,
+ std::vector<std::string> const& configurations, std::string component,
+ MessageLevel message, bool excludeFromAll, std::string filename,
+ std::string targetNamespace, std::string cxxModulesDirectory,
+ cmListFileBacktrace backtrace)
+ : cmInstallGenerator(std::move(destination), configurations,
+ std::move(component), message, excludeFromAll, false,
+ std::move(backtrace))
, ExportSet(exportSet)
- , FilePermissions(std::move(file_permissions))
+ , FilePermissions(std::move(filePermissions))
, FileName(std::move(filename))
- , Namespace(std::move(name_space))
- , CxxModulesDirectory(std::move(cxx_modules_directory))
- , ExportOld(exportOld)
- , ExportPackageDependencies(exportPackageDependencies)
+ , Namespace(std::move(targetNamespace))
+ , CxxModulesDirectory(std::move(cxxModulesDirectory))
{
- if (android) {
-#ifndef CMAKE_BOOTSTRAP
- this->EFGen = cm::make_unique<cmExportInstallAndroidMKGenerator>(this);
-#endif
- } else {
- this->EFGen = cm::make_unique<cmExportInstallFileGenerator>(this);
- }
exportSet->AddInstallation(this);
}
@@ -92,7 +78,7 @@ void cmInstallExportGenerator::GenerateScript(std::ostream& os)
// Skip empty sets.
if (this->ExportSet->GetTargetExports().empty()) {
std::ostringstream e;
- e << "INSTALL(EXPORT) given unknown export \""
+ e << "INSTALL(" << this->InstallSubcommand() << ") given unknown export \""
<< this->ExportSet->GetName() << "\"";
cmSystemTools::Error(e.str());
return;
@@ -108,7 +94,6 @@ void cmInstallExportGenerator::GenerateScript(std::ostream& os)
// Generate the import file for this export set.
this->EFGen->SetExportFile(this->MainImportFile.c_str());
this->EFGen->SetNamespace(this->Namespace);
- this->EFGen->SetExportOld(this->ExportOld);
if (this->ConfigurationTypes->empty()) {
if (!this->ConfigurationName.empty()) {
this->EFGen->AddConfiguration(this->ConfigurationName);
@@ -120,7 +105,6 @@ void cmInstallExportGenerator::GenerateScript(std::ostream& os)
this->EFGen->AddConfiguration(c);
}
}
- this->EFGen->SetExportPackageDependencies(this->ExportPackageDependencies);
this->EFGen->GenerateImportFile();
// Perform the main install script generation.
@@ -149,22 +133,18 @@ void cmInstallExportGenerator::GenerateScriptConfigs(std::ostream& os,
// Now create a configuration-specific install rule for the C++ module import
// property file of each configuration.
- auto cxx_module_dest =
+ auto const cxxModuleDestination =
cmStrCat(this->Destination, '/', this->CxxModulesDirectory);
- std::string config_file_example;
- for (auto const& i : this->EFGen->GetConfigCxxModuleFiles()) {
- config_file_example = i.second;
- break;
- }
- if (!config_file_example.empty()) {
+ auto const cxxModuleInstallFilePath = this->EFGen->GetCxxModuleFile();
+ if (!cxxModuleInstallFilePath.empty()) {
+ auto const cxxModuleFilename =
+ cmSystemTools::GetFilenameName(cxxModuleInstallFilePath);
+
// Remove old per-configuration export files if the main changes.
- std::string installedDir = cmStrCat(
- "$ENV{DESTDIR}", ConvertToAbsoluteDestination(cxx_module_dest), '/');
- std::string installedFile = cmStrCat(installedDir, "/cxx-modules-",
- this->ExportSet->GetName(), ".cmake");
- std::string toInstallFile =
- cmStrCat(cmSystemTools::GetFilenamePath(config_file_example),
- "/cxx-modules-", this->ExportSet->GetName(), ".cmake");
+ std::string installedDir =
+ cmStrCat("$ENV{DESTDIR}",
+ ConvertToAbsoluteDestination(cxxModuleDestination), '/');
+ std::string installedFile = cmStrCat(installedDir, cxxModuleFilename);
os << indent << "if(EXISTS \"" << installedFile << "\")\n";
Indent indentN = indent.Next();
Indent indentNN = indentN.Next();
@@ -172,7 +152,7 @@ void cmInstallExportGenerator::GenerateScriptConfigs(std::ostream& os,
/* clang-format off */
os << indentN << "file(DIFFERENT _cmake_export_file_changed FILES\n"
<< indentN << " \"" << installedFile << "\"\n"
- << indentN << " \"" << toInstallFile << "\")\n";
+ << indentN << " \"" << cxxModuleInstallFilePath << "\")\n";
os << indentN << "if(_cmake_export_file_changed)\n";
os << indentNN << "file(GLOB _cmake_old_config_files \"" << installedDir
<< this->EFGen->GetConfigImportFileGlob() << "\")\n";
@@ -191,8 +171,8 @@ void cmInstallExportGenerator::GenerateScriptConfigs(std::ostream& os,
// All of these files are siblings; get its location to know where the
// "anchor" file is.
- files.push_back(toInstallFile);
- this->AddInstallRule(os, cxx_module_dest, cmInstallType_FILES, files,
+ files.push_back(cxxModuleInstallFilePath);
+ this->AddInstallRule(os, cxxModuleDestination, cmInstallType_FILES, files,
false, this->FilePermissions.c_str(), nullptr,
nullptr, nullptr, indent);
files.clear();
@@ -201,7 +181,7 @@ void cmInstallExportGenerator::GenerateScriptConfigs(std::ostream& os,
files.push_back(i.second);
std::string config_test = this->CreateConfigTest(i.first);
os << indent << "if(" << config_test << ")\n";
- this->AddInstallRule(os, cxx_module_dest, cmInstallType_FILES, files,
+ this->AddInstallRule(os, cxxModuleDestination, cmInstallType_FILES, files,
false, this->FilePermissions.c_str(), nullptr,
nullptr, nullptr, indent.Next());
os << indent << "endif()\n";
@@ -210,9 +190,9 @@ void cmInstallExportGenerator::GenerateScriptConfigs(std::ostream& os,
for (auto const& i : this->EFGen->GetConfigCxxModuleTargetFiles()) {
std::string config_test = this->CreateConfigTest(i.first);
os << indent << "if(" << config_test << ")\n";
- this->AddInstallRule(os, cxx_module_dest, cmInstallType_FILES, i.second,
- false, this->FilePermissions.c_str(), nullptr,
- nullptr, nullptr, indent.Next());
+ this->AddInstallRule(os, cxxModuleDestination, cmInstallType_FILES,
+ i.second, false, this->FilePermissions.c_str(),
+ nullptr, nullptr, nullptr, indent.Next());
os << indent << "endif()\n";
files.clear();
}
diff --git a/Source/cmInstallExportGenerator.h b/Source/cmInstallExportGenerator.h
index 5f92851..b2a74ac 100644
--- a/Source/cmInstallExportGenerator.h
+++ b/Source/cmInstallExportGenerator.h
@@ -17,19 +17,18 @@ class cmListFileBacktrace;
class cmLocalGenerator;
/** \class cmInstallExportGenerator
- * \brief Generate rules for creating an export files.
+ * \brief Support class for generating rules for creating export files.
*/
class cmInstallExportGenerator : public cmInstallGenerator
{
public:
- cmInstallExportGenerator(cmExportSet* exportSet, std::string const& dest,
- std::string file_permissions,
- const std::vector<std::string>& configurations,
- std::string const& component, MessageLevel message,
- bool exclude_from_all, std::string filename,
- std::string name_space,
- std::string cxx_modules_directory, bool exportOld,
- bool android, bool exportPackageDependencies,
+ cmInstallExportGenerator(cmExportSet* exportSet, std::string destination,
+ std::string filePermissions,
+ std::vector<std::string> const& configurations,
+ std::string component, MessageLevel message,
+ bool excludeFromAll, std::string filename,
+ std::string targetNamespace,
+ std::string cxxModulesDirectory,
cmListFileBacktrace backtrace);
cmInstallExportGenerator(const cmInstallExportGenerator&) = delete;
~cmInstallExportGenerator() override;
@@ -57,11 +56,11 @@ public:
}
protected:
+ virtual char const* InstallSubcommand() const = 0;
+
void GenerateScript(std::ostream& os) override;
void GenerateScriptConfigs(std::ostream& os, Indent indent) override;
void GenerateScriptActions(std::ostream& os, Indent indent) override;
- void GenerateImportFile(cmExportSet const* exportSet);
- void GenerateImportFile(const char* config, cmExportSet const* exportSet);
std::string TempDirCalculate() const;
void ComputeTempDir();
@@ -70,8 +69,6 @@ protected:
std::string const FileName;
std::string const Namespace;
std::string const CxxModulesDirectory;
- bool const ExportOld;
- bool const ExportPackageDependencies;
cmLocalGenerator* LocalGenerator = nullptr;
std::string TempDir;
diff --git a/bootstrap b/bootstrap
index 841d280..241f44b 100755
--- a/bootstrap
+++ b/bootstrap
@@ -408,6 +408,7 @@ CMAKE_CXX_SOURCES="\
cmIncludeGuardCommand \
cmIncludeDirectoryCommand \
cmIncludeRegularExpressionCommand \
+ cmInstallCMakeConfigExportGenerator \
cmInstallCommand \
cmInstallCommandArguments \
cmInstallCxxModuleBmiGenerator \