summaryrefslogtreecommitdiff
path: root/Source/cmDependencyProvider.h
diff options
context:
space:
mode:
authorCraig Scott <craig.scott@crascit.com>2022-05-18 23:29:21 +1000
committerCraig Scott <craig.scott@crascit.com>2022-05-25 08:46:18 +1000
commit2aa83fa15b01941f0267e20a1a4e29793651fefd (patch)
tree7cd1ba4d72b087094815716e53f8a90fee035205 /Source/cmDependencyProvider.h
parent8a28368feb938f301604c24c0294e2a25749cc77 (diff)
downloadcmake-2aa83fa15b01941f0267e20a1a4e29793651fefd.tar.gz
Dependency providers: Add find_package and FetchContent support
Fixes: #22619
Diffstat (limited to 'Source/cmDependencyProvider.h')
-rw-r--r--Source/cmDependencyProvider.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/Source/cmDependencyProvider.h b/Source/cmDependencyProvider.h
new file mode 100644
index 0000000000..a6670b460b
--- /dev/null
+++ b/Source/cmDependencyProvider.h
@@ -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. */
+#pragma once
+
+#include "cmConfigure.h" // IWYU pragma: keep
+
+#include <algorithm>
+#include <string>
+#include <utility>
+#include <vector>
+
+class cmDependencyProvider
+{
+public:
+ enum class Method
+ {
+ FindPackage,
+ FetchContentMakeAvailableSerial,
+ };
+
+ cmDependencyProvider(std::string command, std::vector<Method> methods)
+ : Command(std::move(command))
+ , Methods(std::move(methods))
+ {
+ }
+
+ std::string const& GetCommand() const { return this->Command; }
+ std::vector<Method> const& GetMethods() const { return this->Methods; }
+ bool SupportsMethod(Method method) const
+ {
+ return std::find(this->Methods.begin(), this->Methods.end(), method) !=
+ this->Methods.end();
+ }
+
+private:
+ std::string Command;
+ std::vector<Method> Methods;
+};