#pragma once #include "PackageSpec.h" #include "PostBuildLint_BuildPolicies.h" #include "PostBuildLint_LinkageType.h" #include "StatusParagraphs.h" #include "VcpkgPaths.h" #include "vcpkg_Files.h" #include #include #include #include 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_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 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 pgh); PostBuildLint::LinkageType crt_linkage; PostBuildLint::LinkageType library_linkage; std::map policies; }; BuildInfo read_build_info(const Files::Filesystem& fs, const fs::path& filepath); }