cemu-vcpkg/toolsrc/include/vcpkg/export.prefab.h
ras0219 aef838536e
[vcpkg] Track compiler information in ABI (#11654)
* [vcpkg] Refactor out abi_tags_from_pre_build_info()

* [vcpkg] Track Windows toolchain file in triplet hash

* [vcpkg] Improve error messages when constructing PreBuildInfo

* [vcpkg] Extract InstallPlanAction::BuildAbiInfo

* [vcpkg] Extract Build::EnvCache and private-impl VcpkgPaths

* [vcpkg] Enable compiler hash detection when binarycaching is enabled

* [vcpkg] Downgrade warning about missing ABI keys

When binarycaching is not enabled, this warning is spurious and provides no user value.

* [vcpkg] Cleanup

* [vcpkg] Refactor compiler tracking into triplet abi computation

Move several static global caches into VcpkgPaths/EnvCache.
Add feature flag 'compilertracking' to enable the new feature.

* [vcpkg] Refactor out PreBuildInfo::using_vcvars()

Move VcpkgTripletVar into build.cpp because it is not used outside that file.

* [vcpkg] Address some code analysis warnings

Co-authored-by: Robert Schumacher <roschuma@microsoft.com>
2020-06-22 14:14:36 -07:00

83 lines
2.1 KiB
C++

#pragma once
#include <vcpkg/base/system.h>
#include <vcpkg/dependencies.h>
#include <vcpkg/vcpkgpaths.h>
#include <vector>
namespace vcpkg::Export::Prefab
{
constexpr int kFragmentSize = 3;
struct Options
{
Optional<std::string> maybe_group_id;
Optional<std::string> maybe_artifact_id;
Optional<std::string> maybe_version;
Optional<std::string> maybe_min_sdk;
Optional<std::string> maybe_target_sdk;
bool enable_maven = false;
bool enable_debug = false;
};
struct NdkVersion
{
NdkVersion(int _major, int _minor, int _patch) : m_major{_major},
m_minor{_minor},
m_patch{_patch}{
}
int major() { return this->m_major; }
int minor() { return this->m_minor; }
int patch() { return this->m_patch; }
std::string to_string();
void to_string(std::string& out);
private:
int m_major;
int m_minor;
int m_patch;
};
struct ABIMetadata
{
std::string abi;
int api;
int ndk;
std::string stl;
std::string to_string();
};
struct PlatformModuleMetadata
{
std::vector<std::string> export_libraries;
std::string library_name;
std::string to_json();
};
struct ModuleMetadata
{
std::vector<std::string> export_libraries;
std::string library_name;
PlatformModuleMetadata android;
std::string to_json();
};
struct PackageMetadata
{
std::string name;
int schema;
std::vector<std::string> dependencies;
std::string version;
std::string to_json();
};
void do_export(const std::vector<Dependencies::ExportPlanAction>& export_plan,
const VcpkgPaths& paths,
const Options& prefab_options, const Triplet& triplet);
Optional<std::string> find_ndk_version(const std::string &content);
Optional<NdkVersion> to_version(const std::string &version);
}