diff options
author | JinWang An <jinwang.an@samsung.com> | 2022-12-27 17:20:16 +0900 |
---|---|---|
committer | JinWang An <jinwang.an@samsung.com> | 2022-12-27 17:20:16 +0900 |
commit | 47713772c95f12ee5f3a63340b5830ef98c5b0f2 (patch) | |
tree | 3f8fbc0a261a000c63871e99e8fbdfbefde9f58e /Source/cmExportSet.cxx | |
parent | c7e7726e3cb45fa0e066b1b6fa7e5204acb343b0 (diff) | |
download | cmake-47713772c95f12ee5f3a63340b5830ef98c5b0f2.tar.gz cmake-47713772c95f12ee5f3a63340b5830ef98c5b0f2.tar.bz2 cmake-47713772c95f12ee5f3a63340b5830ef98c5b0f2.zip |
Imported Upstream version 3.23.3upstream/3.23.3
Diffstat (limited to 'Source/cmExportSet.cxx')
-rw-r--r-- | Source/cmExportSet.cxx | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/Source/cmExportSet.cxx b/Source/cmExportSet.cxx index a20aa9a8a..3d4ef0a2c 100644 --- a/Source/cmExportSet.cxx +++ b/Source/cmExportSet.cxx @@ -2,10 +2,15 @@ file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmExportSet.h" +#include <algorithm> #include <tuple> #include <utility> +#include "cmGeneratorTarget.h" #include "cmLocalGenerator.h" +#include "cmMessageType.h" +#include "cmStringAlgorithms.h" +#include "cmTarget.h" #include "cmTargetExport.h" cmExportSet::cmExportSet(std::string name) @@ -15,11 +20,35 @@ cmExportSet::cmExportSet(std::string name) cmExportSet::~cmExportSet() = default; -void cmExportSet::Compute(cmLocalGenerator* lg) +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) |