Add triplet option VCPKG_DISABLE_COMPILER_TRACKING (#110)
* Add NO_COMPILER_TRACKING triplet option * Use 'disable_compiler_tracking' * Handle per-port compiler tracking * Add test for compiler tracking Co-authored-by: Robert Schumacher <roschuma@microsoft.com>
This commit is contained in:
Родитель
0edcc5744f
Коммит
5e55749af9
|
@ -0,0 +1,8 @@
|
|||
set(VCPKG_TARGET_ARCHITECTURE x64)
|
||||
set(VCPKG_CRT_LINKAGE dynamic)
|
||||
set(VCPKG_LIBRARY_LINKAGE static)
|
||||
|
||||
set(VCPKG_CMAKE_SYSTEM_NAME Linux)
|
||||
if(PORT STREQUAL "rapidjson")
|
||||
set(VCPKG_DISABLE_COMPILER_TRACKING 1)
|
||||
endif()
|
|
@ -1,19 +1,19 @@
|
|||
if ($IsLinux) {
|
||||
# The tests below need a mono installation not currently available on the Linux agents.
|
||||
return
|
||||
}
|
||||
|
||||
. $PSScriptRoot/../end-to-end-tests-prelude.ps1
|
||||
|
||||
# Test simple installation
|
||||
Run-Vcpkg -TestArgs ($commonArgs + @("install", "rapidjson", "--binarycaching", "--x-binarysource=clear;files,$ArchiveRoot,write;nuget,$NuGetRoot,readwrite"))
|
||||
Run-Vcpkg -TestArgs ($commonArgs + @("install", "rapidjson", "--binarycaching", "--x-binarysource=clear;files,$ArchiveRoot,write"))
|
||||
Throw-IfFailed
|
||||
Require-FileExists "$installRoot/$Triplet/include/rapidjson/rapidjson.h"
|
||||
|
||||
# Test simple removal
|
||||
Run-Vcpkg -TestArgs ($commonArgs + @("remove", "rapidjson"))
|
||||
Throw-IfFailed
|
||||
Require-FileNotExists "$installRoot/$Triplet/include/rapidjson/rapidjson.h"
|
||||
Require-FileNotExists "$installRoot/$Triplet/include"
|
||||
|
||||
if(-Not $IsLinux) {
|
||||
# Test simple nuget installation
|
||||
Run-Vcpkg -TestArgs ($commonArgs + @("install", "rapidjson", "--binarycaching", "--x-binarysource=clear;nuget,$NuGetRoot,readwrite"))
|
||||
Throw-IfFailed
|
||||
}
|
||||
|
||||
# Test restoring from files archive
|
||||
Remove-Item -Recurse -Force $installRoot
|
||||
|
@ -42,46 +42,48 @@ Require-FileExists "$installRoot/$Triplet/include/rapidjson/rapidjson.h"
|
|||
Require-FileExists "$buildtreesRoot/rapidjson/src"
|
||||
Require-FileNotExists "$buildtreesRoot/detect_compiler"
|
||||
|
||||
# Test restoring from nuget
|
||||
Remove-Item -Recurse -Force $installRoot
|
||||
Remove-Item -Recurse -Force $buildtreesRoot
|
||||
Run-Vcpkg -TestArgs ($commonArgs + @("install", "rapidjson", "--binarycaching", "--x-binarysource=clear;nuget,$NuGetRoot"))
|
||||
Throw-IfFailed
|
||||
Require-FileExists "$installRoot/$Triplet/include/rapidjson/rapidjson.h"
|
||||
Require-FileNotExists "$buildtreesRoot/rapidjson/src"
|
||||
if(-Not $IsLinux) {
|
||||
# Test restoring from nuget
|
||||
Remove-Item -Recurse -Force $installRoot
|
||||
Remove-Item -Recurse -Force $buildtreesRoot
|
||||
Run-Vcpkg -TestArgs ($commonArgs + @("install", "rapidjson", "--binarycaching", "--x-binarysource=clear;nuget,$NuGetRoot"))
|
||||
Throw-IfFailed
|
||||
Require-FileExists "$installRoot/$Triplet/include/rapidjson/rapidjson.h"
|
||||
Require-FileNotExists "$buildtreesRoot/rapidjson/src"
|
||||
|
||||
# Test four-phase flow
|
||||
Remove-Item -Recurse -Force $installRoot -ErrorAction SilentlyContinue
|
||||
Run-Vcpkg -TestArgs ($commonArgs + @("install", "rapidjson", "--dry-run", "--x-write-nuget-packages-config=$TestingRoot/packages.config"))
|
||||
Throw-IfFailed
|
||||
Require-FileNotExists "$installRoot/$Triplet/include/rapidjson/rapidjson.h"
|
||||
Require-FileNotExists "$buildtreesRoot/rapidjson/src"
|
||||
Require-FileExists "$TestingRoot/packages.config"
|
||||
$fetchNuGetArgs = $commonArgs + @('fetch', 'nuget')
|
||||
if ($IsLinux -or $IsMacOS) {
|
||||
mono $(./vcpkg @fetchNuGetArgs) restore $TestingRoot/packages.config -OutputDirectory "$NuGetRoot2" -Source "$NuGetRoot"
|
||||
} else {
|
||||
& $(./vcpkg @fetchNuGetArgs) restore $TestingRoot/packages.config -OutputDirectory "$NuGetRoot2" -Source "$NuGetRoot"
|
||||
}
|
||||
Throw-IfFailed
|
||||
Remove-Item -Recurse -Force $NuGetRoot -ErrorAction SilentlyContinue
|
||||
mkdir $NuGetRoot
|
||||
Run-Vcpkg -TestArgs ($commonArgs + @("install", "rapidjson", "zlib", "--binarycaching", "--x-binarysource=clear;nuget,$NuGetRoot2;nuget,$NuGetRoot,write"))
|
||||
Throw-IfFailed
|
||||
Require-FileExists "$installRoot/$Triplet/include/rapidjson/rapidjson.h"
|
||||
Require-FileExists "$installRoot/$Triplet/include/zlib.h"
|
||||
Require-FileNotExists "$buildtreesRoot/rapidjson/src"
|
||||
Require-FileExists "$buildtreesRoot/zlib/src"
|
||||
if ((Get-ChildItem $NuGetRoot -Filter '*.nupkg' | Measure-Object).Count -ne 1) {
|
||||
throw "In '$CurrentTest': did not create exactly 1 NuGet package"
|
||||
}
|
||||
# Test four-phase flow
|
||||
Remove-Item -Recurse -Force $installRoot -ErrorAction SilentlyContinue
|
||||
Run-Vcpkg -TestArgs ($commonArgs + @("install", "rapidjson", "--dry-run", "--x-write-nuget-packages-config=$TestingRoot/packages.config"))
|
||||
Throw-IfFailed
|
||||
Require-FileNotExists "$installRoot/$Triplet/include/rapidjson/rapidjson.h"
|
||||
Require-FileNotExists "$buildtreesRoot/rapidjson/src"
|
||||
Require-FileExists "$TestingRoot/packages.config"
|
||||
$fetchNuGetArgs = $commonArgs + @('fetch', 'nuget')
|
||||
if ($IsLinux -or $IsMacOS) {
|
||||
mono $(./vcpkg @fetchNuGetArgs) restore $TestingRoot/packages.config -OutputDirectory "$NuGetRoot2" -Source "$NuGetRoot"
|
||||
} else {
|
||||
& $(./vcpkg @fetchNuGetArgs) restore $TestingRoot/packages.config -OutputDirectory "$NuGetRoot2" -Source "$NuGetRoot"
|
||||
}
|
||||
Throw-IfFailed
|
||||
Remove-Item -Recurse -Force $NuGetRoot -ErrorAction SilentlyContinue
|
||||
mkdir $NuGetRoot
|
||||
Run-Vcpkg -TestArgs ($commonArgs + @("install", "rapidjson", "zlib", "--binarycaching", "--x-binarysource=clear;nuget,$NuGetRoot2;nuget,$NuGetRoot,write"))
|
||||
Throw-IfFailed
|
||||
Require-FileExists "$installRoot/$Triplet/include/rapidjson/rapidjson.h"
|
||||
Require-FileExists "$installRoot/$Triplet/include/zlib.h"
|
||||
Require-FileNotExists "$buildtreesRoot/rapidjson/src"
|
||||
Require-FileExists "$buildtreesRoot/zlib/src"
|
||||
if ((Get-ChildItem $NuGetRoot -Filter '*.nupkg' | Measure-Object).Count -ne 1) {
|
||||
throw "In '$CurrentTest': did not create exactly 1 NuGet package"
|
||||
}
|
||||
|
||||
# Test export
|
||||
$CurrentTest = 'Exporting'
|
||||
Require-FileNotExists "$TestingRoot/vcpkg-export-output"
|
||||
Require-FileNotExists "$TestingRoot/vcpkg-export.1.0.0.nupkg"
|
||||
Require-FileNotExists "$TestingRoot/vcpkg-export-output.zip"
|
||||
Run-Vcpkg -TestArgs ($commonArgs + @("export", "rapidjson", "zlib", "--nuget", "--nuget-id=vcpkg-export", "--nuget-version=1.0.0", "--output=vcpkg-export-output", "--raw", "--zip", "--output-dir=$TestingRoot"))
|
||||
Require-FileExists "$TestingRoot/vcpkg-export-output"
|
||||
Require-FileExists "$TestingRoot/vcpkg-export.1.0.0.nupkg"
|
||||
Require-FileExists "$TestingRoot/vcpkg-export-output.zip"
|
||||
# Test export
|
||||
$CurrentTest = 'Exporting'
|
||||
Require-FileNotExists "$TestingRoot/vcpkg-export-output"
|
||||
Require-FileNotExists "$TestingRoot/vcpkg-export.1.0.0.nupkg"
|
||||
Require-FileNotExists "$TestingRoot/vcpkg-export-output.zip"
|
||||
Run-Vcpkg -TestArgs ($commonArgs + @("export", "rapidjson", "zlib", "--nuget", "--nuget-id=vcpkg-export", "--nuget-version=1.0.0", "--output=vcpkg-export-output", "--raw", "--zip", "--output-dir=$TestingRoot"))
|
||||
Require-FileExists "$TestingRoot/vcpkg-export-output"
|
||||
Require-FileExists "$TestingRoot/vcpkg-export.1.0.0.nupkg"
|
||||
Require-FileExists "$TestingRoot/vcpkg-export-output.zip"
|
||||
}
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
if ($Triplet -ne "x64-linux") {
|
||||
return
|
||||
}
|
||||
|
||||
. $PSScriptRoot/../end-to-end-tests-prelude.ps1
|
||||
|
||||
$args = $commonArgs + @("--overlay-triplets=$PSScriptRoot/../e2e_ports/compilertracking", "--binarysource=clear;files,$ArchiveRoot,readwrite")
|
||||
|
||||
# Test simple installation
|
||||
Run-Vcpkg -TestArgs ($args + @("install", "tinyxml"))
|
||||
Throw-IfFailed
|
||||
if (-Not (select-string "^triplet_abi [0-9a-f]+-[0-9a-f]+-[0-9a-f]+$" "$installRoot/x64-linux/share/tinyxml/vcpkg_abi_info.txt")) {
|
||||
throw "Expected tinyxml to perform compiler detection"
|
||||
}
|
||||
Remove-Item -Recurse -Force $installRoot
|
||||
|
||||
Run-Vcpkg -TestArgs ($args + @("install", "rapidjson"))
|
||||
Throw-IfFailed
|
||||
if (-Not (select-string "^triplet_abi [0-9a-f]+-[0-9a-f]+$" "$installRoot/x64-linux/share/rapidjson/vcpkg_abi_info.txt")) {
|
||||
throw "Expected rapidjson to not perform compiler detection"
|
||||
}
|
||||
Remove-Item -Recurse -Force $installRoot
|
||||
|
||||
Run-Vcpkg -TestArgs ($args + @("install", "rapidjson", "tinyxml"))
|
||||
Throw-IfFailed
|
||||
if (-Not (select-string "^triplet_abi [0-9a-f]+-[0-9a-f]+-[0-9a-f]+$" "$installRoot/x64-linux/share/tinyxml/vcpkg_abi_info.txt")) {
|
||||
throw "Expected tinyxml to perform compiler detection"
|
||||
}
|
||||
if (-Not (select-string "^triplet_abi [0-9a-f]+-[0-9a-f]+$" "$installRoot/x64-linux/share/rapidjson/vcpkg_abi_info.txt")) {
|
||||
throw "Expected rapidjson to not perform compiler detection"
|
||||
}
|
|
@ -221,6 +221,7 @@ namespace vcpkg::Build
|
|||
|
||||
Triplet triplet;
|
||||
bool load_vcvars_env = false;
|
||||
bool disable_compiler_tracking = false;
|
||||
std::string target_architecture;
|
||||
std::string cmake_system_name;
|
||||
std::string cmake_system_version;
|
||||
|
@ -369,12 +370,15 @@ namespace vcpkg::Build
|
|||
struct TripletMapEntry
|
||||
{
|
||||
std::string hash;
|
||||
Cache<std::string, std::string> compiler_hashes;
|
||||
Cache<std::string, std::string> triplet_infos;
|
||||
Cache<std::string, std::string> triplet_infos_without_compiler;
|
||||
Cache<std::string, CompilerInfo> compiler_info;
|
||||
};
|
||||
Cache<Path, TripletMapEntry> m_triplet_cache;
|
||||
Cache<Path, std::string> m_toolchain_cache;
|
||||
|
||||
const TripletMapEntry& get_triplet_cache(const Filesystem& fs, const Path& p);
|
||||
|
||||
#if defined(_WIN32)
|
||||
struct EnvMapEntry
|
||||
{
|
||||
|
|
|
@ -492,20 +492,37 @@ namespace vcpkg::Build
|
|||
|
||||
static CompilerInfo load_compiler_info(const VcpkgPaths& paths, const AbiInfo& abi_info);
|
||||
|
||||
static const std::string& get_toolchain_cache(Cache<Path, std::string>& cache,
|
||||
const Path& tcfile,
|
||||
const Filesystem& fs)
|
||||
{
|
||||
return cache.get_lazy(
|
||||
tcfile, [&]() { return Hash::get_file_hash(VCPKG_LINE_INFO, fs, tcfile, Hash::Algorithm::Sha256); });
|
||||
}
|
||||
|
||||
const EnvCache::TripletMapEntry& EnvCache::get_triplet_cache(const Filesystem& fs, const Path& p)
|
||||
{
|
||||
return m_triplet_cache.get_lazy(p, [&]() -> TripletMapEntry {
|
||||
return TripletMapEntry{Hash::get_file_hash(VCPKG_LINE_INFO, fs, p, Hash::Algorithm::Sha256)};
|
||||
});
|
||||
}
|
||||
|
||||
const CompilerInfo& EnvCache::get_compiler_info(const VcpkgPaths& paths, const AbiInfo& abi_info)
|
||||
{
|
||||
const auto& fs = paths.get_filesystem();
|
||||
Checks::check_exit(VCPKG_LINE_INFO, abi_info.pre_build_info != nullptr);
|
||||
if (!m_compiler_tracking || abi_info.pre_build_info->disable_compiler_tracking)
|
||||
{
|
||||
static CompilerInfo empty_ci;
|
||||
return empty_ci;
|
||||
}
|
||||
|
||||
const auto& fs = paths.get_filesystem();
|
||||
|
||||
const auto triplet_file_path = paths.get_triplet_file_path(abi_info.pre_build_info->triplet);
|
||||
|
||||
auto tcfile = abi_info.pre_build_info->toolchain_file();
|
||||
auto&& toolchain_hash = m_toolchain_cache.get_lazy(
|
||||
tcfile, [&]() { return Hash::get_file_hash(VCPKG_LINE_INFO, fs, tcfile, Hash::Algorithm::Sha256); });
|
||||
auto&& toolchain_hash = get_toolchain_cache(m_toolchain_cache, abi_info.pre_build_info->toolchain_file(), fs);
|
||||
|
||||
auto&& triplet_entry = m_triplet_cache.get_lazy(triplet_file_path, [&]() -> TripletMapEntry {
|
||||
return TripletMapEntry{
|
||||
Hash::get_file_hash(VCPKG_LINE_INFO, fs, triplet_file_path, Hash::Algorithm::Sha256)};
|
||||
});
|
||||
auto&& triplet_entry = get_triplet_cache(fs, triplet_file_path);
|
||||
|
||||
return triplet_entry.compiler_info.get_lazy(toolchain_hash, [&]() -> CompilerInfo {
|
||||
if (m_compiler_tracking)
|
||||
|
@ -525,35 +542,23 @@ namespace vcpkg::Build
|
|||
Checks::check_exit(VCPKG_LINE_INFO, abi_info.pre_build_info != nullptr);
|
||||
const auto triplet_file_path = paths.get_triplet_file_path(abi_info.pre_build_info->triplet);
|
||||
|
||||
auto tcfile = abi_info.pre_build_info->toolchain_file();
|
||||
auto&& toolchain_hash = m_toolchain_cache.get_lazy(
|
||||
tcfile, [&]() { return Hash::get_file_hash(VCPKG_LINE_INFO, fs, tcfile, Hash::Algorithm::Sha256); });
|
||||
auto&& toolchain_hash = get_toolchain_cache(m_toolchain_cache, abi_info.pre_build_info->toolchain_file(), fs);
|
||||
|
||||
auto&& triplet_entry = m_triplet_cache.get_lazy(triplet_file_path, [&]() -> TripletMapEntry {
|
||||
return TripletMapEntry{
|
||||
Hash::get_file_hash(VCPKG_LINE_INFO, fs, triplet_file_path, Hash::Algorithm::Sha256)};
|
||||
});
|
||||
auto&& triplet_entry = get_triplet_cache(fs, triplet_file_path);
|
||||
|
||||
return triplet_entry.compiler_hashes.get_lazy(toolchain_hash, [&]() -> std::string {
|
||||
if (m_compiler_tracking)
|
||||
{
|
||||
auto& compiler_info = triplet_entry.compiler_info.get_lazy(toolchain_hash, [&]() -> CompilerInfo {
|
||||
if (m_compiler_tracking)
|
||||
{
|
||||
return load_compiler_info(paths, abi_info);
|
||||
}
|
||||
else
|
||||
{
|
||||
return CompilerInfo{};
|
||||
}
|
||||
});
|
||||
if (m_compiler_tracking && !abi_info.pre_build_info->disable_compiler_tracking)
|
||||
{
|
||||
return triplet_entry.triplet_infos.get_lazy(toolchain_hash, [&]() -> std::string {
|
||||
auto& compiler_info = get_compiler_info(paths, abi_info);
|
||||
return Strings::concat(triplet_entry.hash, '-', toolchain_hash, '-', compiler_info.hash);
|
||||
}
|
||||
else
|
||||
{
|
||||
return triplet_entry.hash + "-" + toolchain_hash;
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
return triplet_entry.triplet_infos_without_compiler.get_lazy(toolchain_hash, [&]() -> std::string {
|
||||
return Strings::concat(triplet_entry.hash, '-', toolchain_hash);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
vcpkg::Command make_build_env_cmd(const PreBuildInfo& pre_build_info,
|
||||
|
@ -1400,6 +1405,28 @@ namespace vcpkg::Build
|
|||
return inner_create_buildinfo(*pghs.get());
|
||||
}
|
||||
|
||||
static ExpectedS<bool> from_cmake_bool(StringView value, StringView name)
|
||||
{
|
||||
if (value == "1" || Strings::case_insensitive_ascii_equals(value, "on") ||
|
||||
Strings::case_insensitive_ascii_equals(value, "true"))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else if (value == "0" || Strings::case_insensitive_ascii_equals(value, "off") ||
|
||||
Strings::case_insensitive_ascii_equals(value, "false"))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return Strings::concat("Error: Unknown boolean setting for ",
|
||||
name,
|
||||
": \"",
|
||||
value,
|
||||
"\". Valid settings are '', '1', '0', 'ON', 'OFF', 'TRUE', and 'FALSE'.");
|
||||
}
|
||||
}
|
||||
|
||||
PreBuildInfo::PreBuildInfo(const VcpkgPaths& paths,
|
||||
Triplet triplet,
|
||||
const std::unordered_map<std::string, std::string>& cmakevars)
|
||||
|
@ -1418,6 +1445,7 @@ namespace vcpkg::Build
|
|||
ENV_PASSTHROUGH_UNTRACKED,
|
||||
PUBLIC_ABI_OVERRIDE,
|
||||
LOAD_VCVARS_ENV,
|
||||
DISABLE_COMPILER_TRACKING,
|
||||
};
|
||||
|
||||
static const std::vector<std::pair<std::string, VcpkgTripletVar>> VCPKG_OPTIONS = {
|
||||
|
@ -1431,7 +1459,9 @@ namespace vcpkg::Build
|
|||
{"VCPKG_ENV_PASSTHROUGH", VcpkgTripletVar::ENV_PASSTHROUGH},
|
||||
{"VCPKG_ENV_PASSTHROUGH_UNTRACKED", VcpkgTripletVar::ENV_PASSTHROUGH_UNTRACKED},
|
||||
{"VCPKG_PUBLIC_ABI_OVERRIDE", VcpkgTripletVar::PUBLIC_ABI_OVERRIDE},
|
||||
// Note: this value must come after VCPKG_CHAINLOAD_TOOLCHAIN_FILE because its default depends upon it.
|
||||
{"VCPKG_LOAD_VCVARS_ENV", VcpkgTripletVar::LOAD_VCVARS_ENV},
|
||||
{"VCPKG_DISABLE_COMPILER_TRACKING", VcpkgTripletVar::DISABLE_COMPILER_TRACKING},
|
||||
};
|
||||
|
||||
std::string empty;
|
||||
|
@ -1489,25 +1519,22 @@ namespace vcpkg::Build
|
|||
case VcpkgTripletVar::LOAD_VCVARS_ENV:
|
||||
if (variable_value.empty())
|
||||
{
|
||||
load_vcvars_env = true;
|
||||
if (external_toolchain_file) load_vcvars_env = false;
|
||||
}
|
||||
else if (variable_value == "1" || Strings::case_insensitive_ascii_equals(variable_value, "on") ||
|
||||
Strings::case_insensitive_ascii_equals(variable_value, "true"))
|
||||
{
|
||||
load_vcvars_env = true;
|
||||
}
|
||||
else if (variable_value == "0" || Strings::case_insensitive_ascii_equals(variable_value, "off") ||
|
||||
Strings::case_insensitive_ascii_equals(variable_value, "false"))
|
||||
{
|
||||
load_vcvars_env = false;
|
||||
load_vcvars_env = !external_toolchain_file.has_value();
|
||||
}
|
||||
else
|
||||
{
|
||||
Checks::exit_with_message(VCPKG_LINE_INFO,
|
||||
"Unknown boolean setting for VCPKG_LOAD_VCVARS_ENV: %s. Valid "
|
||||
"settings are '', '1', '0', 'ON', 'OFF', 'TRUE', and 'FALSE'.",
|
||||
variable_value);
|
||||
load_vcvars_env = from_cmake_bool(variable_value, kv.first).value_or_exit(VCPKG_LINE_INFO);
|
||||
}
|
||||
break;
|
||||
case VcpkgTripletVar::DISABLE_COMPILER_TRACKING:
|
||||
if (variable_value.empty())
|
||||
{
|
||||
disable_compiler_tracking = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
disable_compiler_tracking =
|
||||
from_cmake_bool(variable_value, kv.first).value_or_exit(VCPKG_LINE_INFO);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -62,8 +62,6 @@ namespace vcpkg::CMakeVars
|
|||
std::vector<std::vector<std::pair<std::string, std::string>>>& vars) const;
|
||||
|
||||
const VcpkgPaths& paths;
|
||||
const Path get_tags_path = paths.scripts / "vcpkg_get_tags.cmake";
|
||||
const Path get_dep_info_path = paths.scripts / "vcpkg_get_dep_info.cmake";
|
||||
mutable std::unordered_map<PackageSpec, std::unordered_map<std::string, std::string>> dep_resolution_vars;
|
||||
mutable std::unordered_map<PackageSpec, std::unordered_map<std::string, std::string>> tag_vars;
|
||||
mutable std::unordered_map<Triplet, std::unordered_map<std::string, std::string>> generic_triplet_vars;
|
||||
|
@ -121,7 +119,42 @@ endmacro()
|
|||
}
|
||||
std::string extraction_file = create_extraction_file_prelude(paths, emitted_triplets);
|
||||
|
||||
Strings::append(extraction_file, "\ninclude(\"" + get_tags_path.generic_u8string() + "\")\n\n");
|
||||
Strings::append(extraction_file, R"(
|
||||
|
||||
function(vcpkg_get_tags PORT FEATURES VCPKG_TRIPLET_ID VCPKG_ABI_SETTINGS_FILE)
|
||||
message("d8187afd-ea4a-4fc3-9aa4-a6782e1ed9af")
|
||||
vcpkg_triplet_file(${VCPKG_TRIPLET_ID})
|
||||
|
||||
# GUID used as a flag - "cut here line"
|
||||
message("c35112b6-d1ba-415b-aa5d-81de856ef8eb
|
||||
VCPKG_TARGET_ARCHITECTURE=${VCPKG_TARGET_ARCHITECTURE}
|
||||
VCPKG_CMAKE_SYSTEM_NAME=${VCPKG_CMAKE_SYSTEM_NAME}
|
||||
VCPKG_CMAKE_SYSTEM_VERSION=${VCPKG_CMAKE_SYSTEM_VERSION}
|
||||
VCPKG_PLATFORM_TOOLSET=${VCPKG_PLATFORM_TOOLSET}
|
||||
VCPKG_VISUAL_STUDIO_PATH=${VCPKG_VISUAL_STUDIO_PATH}
|
||||
VCPKG_CHAINLOAD_TOOLCHAIN_FILE=${VCPKG_CHAINLOAD_TOOLCHAIN_FILE}
|
||||
VCPKG_BUILD_TYPE=${VCPKG_BUILD_TYPE}
|
||||
VCPKG_LIBRARY_LINKAGE=${VCPKG_LIBRARY_LINKAGE}
|
||||
VCPKG_CRT_LINKAGE=${VCPKG_CRT_LINKAGE}
|
||||
e1e74b5c-18cb-4474-a6bd-5c1c8bc81f3f")
|
||||
|
||||
# Just to enforce the user didn't set it in the triplet file
|
||||
if (DEFINED VCPKG_PUBLIC_ABI_OVERRIDE)
|
||||
set(VCPKG_PUBLIC_ABI_OVERRIDE)
|
||||
message(WARNING "VCPKG_PUBLIC_ABI_OVERRIDE set in the triplet will be ignored.")
|
||||
endif()
|
||||
include("${VCPKG_ABI_SETTINGS_FILE}" OPTIONAL)
|
||||
|
||||
message("c35112b6-d1ba-415b-aa5d-81de856ef8eb
|
||||
VCPKG_PUBLIC_ABI_OVERRIDE=${VCPKG_PUBLIC_ABI_OVERRIDE}
|
||||
VCPKG_ENV_PASSTHROUGH=${VCPKG_ENV_PASSTHROUGH}
|
||||
VCPKG_ENV_PASSTHROUGH_UNTRACKED=${VCPKG_ENV_PASSTHROUGH_UNTRACKED}
|
||||
VCPKG_LOAD_VCVARS_ENV=${VCPKG_LOAD_VCVARS_ENV}
|
||||
VCPKG_DISABLE_COMPILER_TRACKING=${VCPKG_DISABLE_COMPILER_TRACKING}
|
||||
e1e74b5c-18cb-4474-a6bd-5c1c8bc81f3f
|
||||
8c504940-be29-4cba-9f8f-6cd83e9d87b7")
|
||||
endfunction()
|
||||
)");
|
||||
|
||||
for (const auto& spec_abi_setting : spec_abi_settings)
|
||||
{
|
||||
|
@ -158,7 +191,28 @@ endmacro()
|
|||
|
||||
std::string extraction_file = create_extraction_file_prelude(paths, emitted_triplets);
|
||||
|
||||
Strings::append(extraction_file, "\ninclude(\"" + get_dep_info_path.generic_u8string() + "\")\n\n");
|
||||
Strings::append(extraction_file, R"(
|
||||
|
||||
function(vcpkg_get_dep_info PORT VCPKG_TRIPLET_ID)
|
||||
message("d8187afd-ea4a-4fc3-9aa4-a6782e1ed9af")
|
||||
vcpkg_triplet_file(${VCPKG_TRIPLET_ID})
|
||||
|
||||
# GUID used as a flag - "cut here line"
|
||||
message("c35112b6-d1ba-415b-aa5d-81de856ef8eb
|
||||
VCPKG_TARGET_ARCHITECTURE=${VCPKG_TARGET_ARCHITECTURE}
|
||||
VCPKG_CMAKE_SYSTEM_NAME=${VCPKG_CMAKE_SYSTEM_NAME}
|
||||
VCPKG_CMAKE_SYSTEM_VERSION=${VCPKG_CMAKE_SYSTEM_VERSION}
|
||||
VCPKG_LIBRARY_LINKAGE=${VCPKG_LIBRARY_LINKAGE}
|
||||
VCPKG_CRT_LINKAGE=${VCPKG_CRT_LINKAGE}
|
||||
VCPKG_DEP_INFO_OVERRIDE_VARS=${VCPKG_DEP_INFO_OVERRIDE_VARS}
|
||||
CMAKE_HOST_SYSTEM_NAME=${CMAKE_HOST_SYSTEM_NAME}
|
||||
CMAKE_HOST_SYSTEM_PROCESSOR=${CMAKE_HOST_SYSTEM_PROCESSOR}
|
||||
CMAKE_HOST_SYSTEM_VERSION=${CMAKE_HOST_SYSTEM_VERSION}
|
||||
CMAKE_HOST_SYSTEM=${CMAKE_HOST_SYSTEM}
|
||||
e1e74b5c-18cb-4474-a6bd-5c1c8bc81f3f
|
||||
8c504940-be29-4cba-9f8f-6cd83e9d87b7")
|
||||
endfunction()
|
||||
)");
|
||||
|
||||
for (const PackageSpec& spec : specs)
|
||||
{
|
||||
|
|
Загрузка…
Ссылка в новой задаче