diff options
Diffstat (limited to 'toolsrc/include/vcpkg_Build.h')
| -rw-r--r-- | toolsrc/include/vcpkg_Build.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/toolsrc/include/vcpkg_Build.h b/toolsrc/include/vcpkg_Build.h new file mode 100644 index 000000000..f4b9300c5 --- /dev/null +++ b/toolsrc/include/vcpkg_Build.h @@ -0,0 +1,60 @@ +#pragma once + +#include "PackageSpec.h" +#include "PostBuildLint_BuildPolicies.h" +#include "PostBuildLint_LinkageType.h" +#include "StatusParagraphs.h" +#include "VcpkgPaths.h" +#include "vcpkg_Files.h" +#include <map> +#include <string> +#include <unordered_map> +#include <vector> + +namespace vcpkg::Build +{ + enum class BuildResult + { + NULLVALUE = 0, + SUCCEEDED, + BUILD_FAILED, + POST_BUILD_CHECKS_FAILED, + CASCADED_DUE_TO_MISSING_DEPENDENCIES + }; + + static constexpr std::array<BuildResult, 4> BuildResult_values = { + BuildResult::SUCCEEDED, + BuildResult::BUILD_FAILED, + BuildResult::POST_BUILD_CHECKS_FAILED, + BuildResult::CASCADED_DUE_TO_MISSING_DEPENDENCIES}; + + const std::string& to_string(const BuildResult build_result); + std::string create_error_message(const BuildResult build_result, const PackageSpec& spec); + std::string create_user_troubleshooting_message(const PackageSpec& spec); + + std::wstring make_build_env_cmd(const Triplet& triplet, const Toolset& toolset); + + struct ExtendedBuildResult + { + BuildResult code; + std::vector<PackageSpec> unmet_dependencies; + }; + + ExtendedBuildResult build_package(const SourceParagraph& source_paragraph, + const PackageSpec& spec, + const VcpkgPaths& paths, + const fs::path& port_dir, + const StatusParagraphs& status_db); + + struct BuildInfo + { + static BuildInfo create(std::unordered_map<std::string, std::string> pgh); + + PostBuildLint::LinkageType crt_linkage; + PostBuildLint::LinkageType library_linkage; + + std::map<PostBuildLint::BuildPolicies, bool> policies; + }; + + BuildInfo read_build_info(const Files::Filesystem& fs, const fs::path& filepath); +} |
