aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/include
diff options
context:
space:
mode:
authorRobert Schumacher <roschuma@microsoft.com>2020-03-09 09:19:05 -0700
committerRobert Schumacher <roschuma@microsoft.com>2020-03-09 09:19:05 -0700
commit6b55c62144b120f3c5fc0d3cd8163f309241a18a (patch)
tree125aa435dff79db545fc4b08ab0c3cb537bc725c /toolsrc/include
parente21400c7cae2c2df3a9dce6ef8e3c4bf7109aaac (diff)
parentd0b1f2a9e8ed1ea53d181d13c69e15cf775148db (diff)
downloadvcpkg-6b55c62144b120f3c5fc0d3cd8163f309241a18a.tar.gz
vcpkg-6b55c62144b120f3c5fc0d3cd8163f309241a18a.zip
Merge remote-tracking branch 'origin/master' into HEAD
Diffstat (limited to 'toolsrc/include')
-rw-r--r--toolsrc/include/vcpkg/cmakevars.h53
-rw-r--r--toolsrc/include/vcpkg/textrowcol.h4
2 files changed, 14 insertions, 43 deletions
diff --git a/toolsrc/include/vcpkg/cmakevars.h b/toolsrc/include/vcpkg/cmakevars.h
index 8d131d45e..1c02376b9 100644
--- a/toolsrc/include/vcpkg/cmakevars.h
+++ b/toolsrc/include/vcpkg/cmakevars.h
@@ -1,15 +1,21 @@
#pragma once
-#include <vcpkg/base/hash.h>
-#include <vcpkg/base/system.process.h>
+#include <vcpkg/base/optional.h>
#include <vcpkg/portfileprovider.h>
#include <vcpkg/vcpkgpaths.h>
+namespace vcpkg::Dependencies
+{
+ struct ActionPlan;
+}
+
namespace vcpkg::CMakeVars
{
struct CMakeVarProvider
{
+ virtual ~CMakeVarProvider() = default;
+
virtual Optional<const std::unordered_map<std::string, std::string>&> get_generic_triplet_vars(
Triplet triplet) const = 0;
@@ -25,45 +31,10 @@ namespace vcpkg::CMakeVars
virtual void load_tag_vars(Span<const FullPackageSpec> specs,
const PortFileProvider::PortFileProvider& port_provider) const = 0;
- };
-
- struct TripletCMakeVarProvider : Util::ResourceBase, CMakeVarProvider
- {
- private:
- fs::path create_tag_extraction_file(
- const Span<const std::pair<const FullPackageSpec*, std::string>>& spec_abi_settings) const;
-
- fs::path create_dep_info_extraction_file(const Span<const PackageSpec> specs) const;
-
- void launch_and_split(const fs::path& script_path,
- std::vector<std::vector<std::pair<std::string, std::string>>>& vars) const;
- public:
- explicit TripletCMakeVarProvider(const vcpkg::VcpkgPaths& paths) : paths(paths) {}
-
- void load_generic_triplet_vars(Triplet triplet) const override;
-
- void load_dep_info_vars(Span<const PackageSpec> specs) const override;
-
- void load_tag_vars(Span<const FullPackageSpec> specs,
- const PortFileProvider::PortFileProvider& port_provider) const override;
-
- Optional<const std::unordered_map<std::string, std::string>&> get_generic_triplet_vars(
- Triplet triplet) const override;
-
- Optional<const std::unordered_map<std::string, std::string>&> get_dep_info_vars(
- const PackageSpec& spec) const override;
-
- Optional<const std::unordered_map<std::string, std::string>&> get_tag_vars(
- const PackageSpec& spec) const override;
-
- private:
- const VcpkgPaths& paths;
- const fs::path& cmake_exe_path = paths.get_tool_exe(Tools::CMAKE);
- const fs::path get_tags_path = paths.scripts / "vcpkg_get_tags.cmake";
- const fs::path get_dep_info_path = paths.scripts / "vcpkg_get_dep_info.cmake";
- mutable std::unordered_map<PackageSpec, std::unordered_map<std::string, std::string>> dep_resolution_vars;
- mutable std::unordered_map<PackageSpec, std::unordered_map<std::string, std::string>> tag_vars;
- mutable std::unordered_map<Triplet, std::unordered_map<std::string, std::string>> generic_triplet_vars;
+ void load_tag_vars(const vcpkg::Dependencies::ActionPlan& action_plan,
+ const PortFileProvider::PortFileProvider& port_provider) const;
};
+
+ std::unique_ptr<CMakeVarProvider> make_triplet_cmake_var_provider(const vcpkg::VcpkgPaths& paths);
}
diff --git a/toolsrc/include/vcpkg/textrowcol.h b/toolsrc/include/vcpkg/textrowcol.h
index cd2b223e2..90c50d887 100644
--- a/toolsrc/include/vcpkg/textrowcol.h
+++ b/toolsrc/include/vcpkg/textrowcol.h
@@ -4,8 +4,8 @@ namespace vcpkg::Parse
{
struct TextRowCol
{
- TextRowCol() = default;
- TextRowCol(int row, int column) : row(row), column(column) {}
+ constexpr TextRowCol() noexcept = default;
+ constexpr TextRowCol(int row, int column) noexcept : row(row), column(column) {}
/// '0' indicates uninitialized; '1' is the first row.
int row = 0;
/// '0' indicates uninitialized; '1' is the first column.