diff options
| author | Alexander Karatarakis <alkarata@microsoft.com> | 2016-11-08 14:12:49 -0800 |
|---|---|---|
| committer | Alexander Karatarakis <alkarata@microsoft.com> | 2016-11-08 14:12:49 -0800 |
| commit | 6e9d17f73c01c3ad07875ca79196ed2f5e2d3896 (patch) | |
| tree | 4b4b22f0bd6aaca36ca56ea1d31ac68c297f0b8e /toolsrc/src/BuildInfo.cpp | |
| parent | eaebe2888ab97de74200904807ae884419ccc195 (diff) | |
| download | vcpkg-6e9d17f73c01c3ad07875ca79196ed2f5e2d3896.tar.gz vcpkg-6e9d17f73c01c3ad07875ca79196ed2f5e2d3896.zip | |
Introduce BUILD_INFO file. Significant change in the way static/dynamic is
handled
Diffstat (limited to 'toolsrc/src/BuildInfo.cpp')
| -rw-r--r-- | toolsrc/src/BuildInfo.cpp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/toolsrc/src/BuildInfo.cpp b/toolsrc/src/BuildInfo.cpp new file mode 100644 index 000000000..dc8d90e2e --- /dev/null +++ b/toolsrc/src/BuildInfo.cpp @@ -0,0 +1,46 @@ +#include "BuildInfo.h" +#include "vcpkg_Checks.h" +#include "vcpkglib_helpers.h" + +namespace vcpkg +{ + // + namespace BuildInfoRequiredField + { + static const std::string CRT_LINKAGE = "CRTLinkage"; + static const std::string LIBRARY_LINKAGE = "LibraryLinkage"; + } + + BuildInfo BuildInfo::create(const std::unordered_map<std::string, std::string>& pgh) + { + BuildInfo build_info; + build_info.crt_linkage = details::required_field(pgh, BuildInfoRequiredField::CRT_LINKAGE); + build_info.library_linkage = details::required_field(pgh, BuildInfoRequiredField::LIBRARY_LINKAGE); + + return build_info; + } + + LinkageType linkage_type_value_of(const std::string& as_string) + + { + if (as_string == "dynamic") + { + return LinkageType::DYNAMIC; + } + + if (as_string == "static") + { + return LinkageType::STATIC; + } + + return LinkageType::UNKNOWN; + } + + BuildInfo read_build_info(const fs::path& filepath) + { + const std::vector<std::unordered_map<std::string, std::string>> pghs = Paragraphs::get_paragraphs(filepath); + Checks::check_throw(pghs.size() == 1, "Invalid BUILD_INFO file for package"); + + return BuildInfo::create(pghs[0]); + } +} |
