mirror of
https://github.com/microsoft/vcpkg.git
synced 2025-06-07 12:26:08 +08:00
First pass at port settings
This commit is contained in:
parent
a22242e837
commit
44dcc3d4f3
@ -1,4 +1,7 @@
|
||||
include(${CMAKE_TRIPLET_FILE})
|
||||
if (DEFINED CMAKE_PORTFILE_SETTINGS)
|
||||
include(${CMAKE_PORTFILE_SETTINGS} OPTIONAL)
|
||||
endif()
|
||||
|
||||
# GUID used as a flag - "cut here line"
|
||||
message("c35112b6-d1ba-415b-aa5d-81de856ef8eb")
|
||||
|
@ -140,29 +140,6 @@ namespace vcpkg::Build
|
||||
{"VCPKG_ENV_PASSTHROUGH", VcpkgTripletVar::ENV_PASSTHROUGH},
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// Settings from the triplet file which impact the build environment and post-build checks
|
||||
/// </summary>
|
||||
struct PreBuildInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// Runs the triplet file in a "capture" mode to create a PreBuildInfo
|
||||
/// </summary>
|
||||
static PreBuildInfo from_triplet_file(const VcpkgPaths& paths, const Triplet& triplet);
|
||||
|
||||
std::string triplet_abi_tag;
|
||||
std::string target_architecture;
|
||||
std::string cmake_system_name;
|
||||
std::string cmake_system_version;
|
||||
Optional<std::string> platform_toolset;
|
||||
Optional<fs::path> visual_studio_path;
|
||||
Optional<std::string> external_toolchain_file;
|
||||
Optional<ConfigurationType> build_type;
|
||||
std::vector<std::string> passthrough_env_vars;
|
||||
};
|
||||
|
||||
std::string make_build_env_cmd(const PreBuildInfo& pre_build_info, const Toolset& toolset);
|
||||
|
||||
struct ExtendedBuildResult
|
||||
{
|
||||
ExtendedBuildResult(BuildResult code);
|
||||
@ -200,6 +177,31 @@ namespace vcpkg::Build
|
||||
const BuildPackageConfig& config,
|
||||
const StatusParagraphs& status_db);
|
||||
|
||||
/// <summary>
|
||||
/// Settings from the triplet file which impact the build environment and post-build checks
|
||||
/// </summary>
|
||||
struct PreBuildInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// Runs the triplet file in a "capture" mode to create a PreBuildInfo
|
||||
/// </summary>
|
||||
static PreBuildInfo from_triplet_file(const VcpkgPaths& paths,
|
||||
const Triplet& triplet,
|
||||
Optional<const std::string&> port = nullopt);
|
||||
|
||||
std::string triplet_abi_tag;
|
||||
std::string target_architecture;
|
||||
std::string cmake_system_name;
|
||||
std::string cmake_system_version;
|
||||
Optional<std::string> platform_toolset;
|
||||
Optional<fs::path> visual_studio_path;
|
||||
Optional<std::string> external_toolchain_file;
|
||||
Optional<ConfigurationType> build_type;
|
||||
std::vector<std::string> passthrough_env_vars;
|
||||
};
|
||||
|
||||
std::string make_build_env_cmd(const PreBuildInfo& pre_build_info, const Toolset& toolset);
|
||||
|
||||
enum class BuildPolicy
|
||||
{
|
||||
EMPTY_PACKAGE,
|
||||
|
@ -782,7 +782,8 @@ namespace vcpkg::Build
|
||||
AbiEntry{status_it->get()->package.spec.name(), status_it->get()->package.abi});
|
||||
}
|
||||
|
||||
const auto pre_build_info = PreBuildInfo::from_triplet_file(paths, triplet);
|
||||
const auto pre_build_info =
|
||||
PreBuildInfo::from_triplet_file(paths, triplet, config.scf.core_paragraph->name);
|
||||
|
||||
auto maybe_abi_tag_and_file = compute_abi_tag(paths, config, pre_build_info, dependency_abis);
|
||||
|
||||
@ -997,7 +998,9 @@ namespace vcpkg::Build
|
||||
return inner_create_buildinfo(*pghs.get());
|
||||
}
|
||||
|
||||
PreBuildInfo PreBuildInfo::from_triplet_file(const VcpkgPaths& paths, const Triplet& triplet)
|
||||
PreBuildInfo PreBuildInfo::from_triplet_file(const VcpkgPaths& paths,
|
||||
const Triplet& triplet,
|
||||
Optional<const std::string&> port)
|
||||
{
|
||||
static constexpr CStringView FLAG_GUID = "c35112b6-d1ba-415b-aa5d-81de856ef8eb";
|
||||
|
||||
@ -1005,11 +1008,19 @@ namespace vcpkg::Build
|
||||
const fs::path ports_cmake_script_path = paths.scripts / "get_triplet_environment.cmake";
|
||||
const fs::path triplet_file_path = paths.get_triplet_file_path(triplet);
|
||||
|
||||
std::vector<System::CMakeVariable> args{{"CMAKE_TRIPLET_FILE", triplet_file_path}};
|
||||
|
||||
if (port)
|
||||
{
|
||||
args.emplace_back(
|
||||
"CMAKE_PORT_SETTINGS",
|
||||
paths.ports / port.value_or_exit(VCPKG_LINE_INFO) / "port_settings.cmake");
|
||||
}
|
||||
|
||||
const auto cmd_launch_cmake = System::make_cmake_cmd(cmake_exe_path,
|
||||
ports_cmake_script_path,
|
||||
{
|
||||
{"CMAKE_TRIPLET_FILE", triplet_file_path},
|
||||
});
|
||||
args);
|
||||
|
||||
const auto ec_data = System::cmd_execute_and_capture_output(cmd_launch_cmake);
|
||||
Checks::check_exit(VCPKG_LINE_INFO, ec_data.exit_code == 0, ec_data.output);
|
||||
|
||||
|
@ -254,7 +254,14 @@ namespace vcpkg::Commands::CI
|
||||
return {spec.name(), it->second};
|
||||
});
|
||||
const auto& pre_build_info = pre_build_info_cache.get_lazy(
|
||||
triplet, [&]() { return Build::PreBuildInfo::from_triplet_file(paths, triplet); });
|
||||
triplet,
|
||||
[&]() {
|
||||
return Build::PreBuildInfo::from_triplet_file(
|
||||
paths,
|
||||
triplet,
|
||||
scfl->source_control_file->core_paragraph->name);
|
||||
}
|
||||
);
|
||||
|
||||
auto maybe_tag_and_file =
|
||||
Build::compute_abi_tag(paths, build_config, pre_build_info, dependency_abis);
|
||||
|
Loading…
Reference in New Issue
Block a user