| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
- file Copyright.txt or https://cmake.org/licensing for details. */
- #include "cmExportSet.h" // IWYU pragma: associated
- #include <algorithm>
- #include <tuple>
- #include <utility>
- #include "cmGeneratorTarget.h"
- #include "cmLocalGenerator.h"
- #include "cmMessageType.h"
- #include "cmStringAlgorithms.h"
- #include "cmTarget.h"
- #include "cmTargetExport.h" // IWYU pragma: associated
- cmExportSet::cmExportSet(std::string name)
- : Name(std::move(name))
- {
- }
- cmExportSet::~cmExportSet() = default;
- cmExportSet::PackageDependency& cmExportSet::GetPackageDependencyForSetup(
- const std::string& name)
- {
- auto& dep = this->PackageDependencies[name];
- if (!dep.SpecifiedIndex) {
- dep.SpecifiedIndex = this->NextPackageDependencyIndex;
- this->NextPackageDependencyIndex++;
- }
- return dep;
- }
- bool cmExportSet::Compute(cmLocalGenerator* lg)
- {
- for (std::unique_ptr<cmTargetExport>& tgtExport : this->TargetExports) {
- tgtExport->Target = lg->FindGeneratorTargetToUse(tgtExport->TargetName);
- auto const interfaceFileSets =
- tgtExport->Target->Target->GetAllInterfaceFileSets();
- auto const fileSetInTargetExport =
- [&tgtExport, lg](const std::string& fileSetName) -> bool {
- auto* fileSet = tgtExport->Target->Target->GetFileSet(fileSetName);
- if (!tgtExport->FileSetGenerators.count(fileSet)) {
- lg->IssueMessage(MessageType::FATAL_ERROR,
- cmStrCat("File set \"", fileSetName,
- "\" is listed in interface file sets of ",
- tgtExport->Target->GetName(),
- " but has not been exported"));
- return false;
- }
- return true;
- };
- if (!std::all_of(interfaceFileSets.begin(), interfaceFileSets.end(),
- fileSetInTargetExport)) {
- return false;
- }
- }
- return true;
- }
- void cmExportSet::AddTargetExport(std::unique_ptr<cmTargetExport> te)
- {
- this->TargetExports.emplace_back(std::move(te));
- }
- void cmExportSet::AddInstallation(cmInstallExportGenerator const* installation)
- {
- this->Installations.push_back(installation);
- }
- cmExportSet& cmExportSetMap::operator[](const std::string& name)
- {
- auto it = this->find(name);
- if (it == this->end()) // Export set not found
- {
- auto tup_name = std::make_tuple(name);
- it = this->emplace(std::piecewise_construct, tup_name, tup_name).first;
- }
- return it->second;
- }
|