diff --git a/ports/fftw3/CONTROL b/ports/fftw3/CONTROL
index 4d378d8c39..95c6936319 100644
--- a/ports/fftw3/CONTROL
+++ b/ports/fftw3/CONTROL
@@ -1,5 +1,5 @@
Source: fftw3
-Version: 3.3.8-6
+Version: 3.3.8-7
Homepage: https://www.fftw.org/
Description: FFTW is a C subroutine library for computing the discrete Fourier transform (DFT) in one or more dimensions, of arbitrary input size, and of both real and complex data (as well as of even/odd data, i.e. the discrete cosine/sine transforms or DCT/DST).
diff --git a/ports/fftw3/portfile.cmake b/ports/fftw3/portfile.cmake
index 5132c95748..161cff768e 100644
--- a/ports/fftw3/portfile.cmake
+++ b/ports/fftw3/portfile.cmake
@@ -1,5 +1,3 @@
-include(vcpkg_common_functions)
-
vcpkg_download_distfile(ARCHIVE
URLS "http://www.fftw.org/fftw-3.3.8.tar.gz"
FILENAME "fftw-3.3.8.tar.gz"
diff --git a/scripts/buildsystems/msbuild/vcpkg-general.xml b/scripts/buildsystems/msbuild/vcpkg-general.xml
new file mode 100644
index 0000000000..2ee5599bea
--- /dev/null
+++ b/scripts/buildsystems/msbuild/vcpkg-general.xml
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/scripts/buildsystems/msbuild/vcpkg.props b/scripts/buildsystems/msbuild/vcpkg.props
new file mode 100644
index 0000000000..a9b97348f3
--- /dev/null
+++ b/scripts/buildsystems/msbuild/vcpkg.props
@@ -0,0 +1,35 @@
+
+
+ true
+ true
+ true
+ false
+ $([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), .vcpkg-root))
+ $(Configuration)
+ $(VcpkgRoot)\scripts\buildsystems\msbuild\vcpkg-general.xml
+
+
+
+
+ uwp
+
+
+ windows
+
+
+
+
+ x86
+
+
+ $(Platform)
+
+
+
+
+ $(VcpkgPlatformTarget)-$(VcpkgOSTarget)
+ $(VcpkgUserTriplet)
+ $(VcpkgRoot)\installed\$(VcpkgTriplet)\
+ $(VcpkgRoot)\scripts\buildsystems\msbuild\vcpkg-general.xml
+
+
diff --git a/scripts/buildsystems/msbuild/vcpkg.targets b/scripts/buildsystems/msbuild/vcpkg.targets
index 329f7ba702..626e72228f 100644
--- a/scripts/buildsystems/msbuild/vcpkg.targets
+++ b/scripts/buildsystems/msbuild/vcpkg.targets
@@ -1,64 +1,58 @@
-
+
+
true
- x86-windows
+ true
+ false
+ $([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), .vcpkg-root))
+ $(Configuration)
+ $(VcpkgRoot)\scripts\buildsystems\msbuild\vcpkg-general.xml
-
- true
- x86-uwp
+
+
+ uwp
+
+
+ windows
-
- true
- x86-windows
+
+
+ $(PlatformTarget)-$(VcpkgOSTarget)
+ $(VcpkgUserTriplet)
+ $(VcpkgRoot)\installed\$(VcpkgTriplet)\
+
+
+
+
+
+ Project
+
+
+
+
+
+ $(VcpkgUserTriplet)
+ $(VcpkgTripletTmp)-static
+ $(VcpkgRoot)\installed\$(VcpkgTriplet)\
+
-
- true
- x86-uwp
-
-
-
- true
- x64-windows
-
-
-
- true
- arm-windows
-
-
-
- true
- arm64-windows
-
-
-
- true
- x64-uwp
-
-
-
- true
- arm-uwp
-
-
-
- true
- arm64-uwp
+
+ $(VcpkgTriplet)
+ $(VcpkgUserTriplet)
+ $(VcpkgRoot)\installed\$(VcpkgUserTriplet)\
+
- $(Configuration)
Debug
Release
- $([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), .vcpkg-root))\
$(VcpkgRoot)\
- $(VcpkgRoot)installed\$(VcpkgTriplet)\
$(VcpkgCurrentInstalledDir)\
true
-
false
@@ -79,8 +73,8 @@
-
-
+
+
@@ -104,4 +98,4 @@
-
+
\ No newline at end of file
diff --git a/toolsrc/include/vcpkg/vcpkgpaths.h b/toolsrc/include/vcpkg/vcpkgpaths.h
index 2b7faffd90..38a9d4e4d4 100644
--- a/toolsrc/include/vcpkg/vcpkgpaths.h
+++ b/toolsrc/include/vcpkg/vcpkgpaths.h
@@ -85,6 +85,7 @@ namespace vcpkg
fs::path tools;
fs::path buildsystems;
fs::path buildsystems_msbuild_targets;
+ fs::path buildsystems_msbuild_props;
fs::path vcpkg_dir;
fs::path vcpkg_dir_status_file;
diff --git a/toolsrc/src/vcpkg/commands.integrate.cpp b/toolsrc/src/vcpkg/commands.integrate.cpp
index ad5583a5aa..963db5750b 100644
--- a/toolsrc/src/vcpkg/commands.integrate.cpp
+++ b/toolsrc/src/vcpkg/commands.integrate.cpp
@@ -13,7 +13,7 @@
namespace vcpkg::Commands::Integrate
{
#if defined(_WIN32)
- static std::string create_appdata_targets_shortcut(const std::string& target_path) noexcept
+ static std::string create_appdata_shortcut(const std::string& target_path) noexcept
{
return Strings::format(R"###(
@@ -34,6 +34,7 @@ namespace vcpkg::Commands::Integrate
$(LOCALAPPDATA)\vcpkg\vcpkg.user
+
)###";
@@ -159,6 +160,14 @@ namespace vcpkg::Commands::Integrate
return LOCAL_APP_DATA / fs::u8path("vcpkg/vcpkg.user.targets");
}
#endif
+#if defined(_WIN32)
+ static fs::path get_appdata_props_path()
+ {
+ static const fs::path LOCAL_APP_DATA =
+ fs::u8path(System::get_environment_variable("LOCALAPPDATA").value_or_exit(VCPKG_LINE_INFO));
+ return LOCAL_APP_DATA / "vcpkg" / "vcpkg.user.props";
+ }
+#endif
static fs::path get_path_txt_path() { return get_user_dir() / "vcpkg.path.txt"; }
@@ -248,7 +257,7 @@ namespace vcpkg::Commands::Integrate
const fs::path appdata_src_path = tmp_dir / "vcpkg.user.targets";
fs.write_contents(appdata_src_path,
- create_appdata_targets_shortcut(paths.buildsystems_msbuild_targets.u8string()),
+ create_appdata_shortcut(paths.buildsystems_msbuild_targets.u8string()),
VCPKG_LINE_INFO);
auto appdata_dst_path = get_appdata_targets_path();
@@ -264,6 +273,25 @@ namespace vcpkg::Commands::Integrate
"\n");
Checks::exit_fail(VCPKG_LINE_INFO);
}
+
+ const fs::path appdata_src_path2 = tmp_dir / "vcpkg.user.props";
+ fs.write_contents(appdata_src_path2,
+ create_appdata_shortcut(paths.buildsystems_msbuild_props.u8string()),
+ VCPKG_LINE_INFO);
+ auto appdata_dst_path2 = get_appdata_props_path();
+
+ const auto rc2 = fs.copy_file(appdata_src_path2, appdata_dst_path2, fs::copy_options::overwrite_existing, ec);
+
+ if (!rc2 || ec)
+ {
+ System::print2(System::Color::error,
+ "Error: Failed to copy file: ",
+ appdata_src_path2.u8string(),
+ " -> ",
+ appdata_dst_path2.u8string(),
+ "\n");
+ Checks::exit_fail(VCPKG_LINE_INFO);
+ }
}
#endif
@@ -304,6 +332,11 @@ CMake projects should use: "-DCMAKE_TOOLCHAIN_FILE=%s"
was_deleted |= fs.remove(path, ec);
Checks::check_exit(VCPKG_LINE_INFO, !ec, "Error: Unable to remove user-wide integration: %s", ec.message());
+
+ const fs::path path2 = get_appdata_props_path();
+
+ was_deleted |= fs.remove(path2, ec);
+ Checks::check_exit(VCPKG_LINE_INFO, !ec, "Error: Unable to remove user-wide integration: %s", ec.message());
#endif
was_deleted |= fs.remove(get_path_txt_path(), ec);
diff --git a/toolsrc/src/vcpkg/export.cpp b/toolsrc/src/vcpkg/export.cpp
index af74879b71..1ecef7f799 100644
--- a/toolsrc/src/vcpkg/export.cpp
+++ b/toolsrc/src/vcpkg/export.cpp
@@ -25,7 +25,8 @@ namespace vcpkg::Export
using Install::InstallDir;
static std::string create_nuspec_file_contents(const std::string& raw_exported_dir,
- const std::string& targets_redirect_path,
+ const fs::path& targets_redirect_path,
+ const fs::path& props_redirect_path,
const std::string& nuget_id,
const std::string& nupkg_version)
{
@@ -44,6 +45,7 @@ namespace vcpkg::Export
+
)";
@@ -52,8 +54,10 @@ namespace vcpkg::Export
nuspec_file_content = Strings::replace_all(std::move(nuspec_file_content), "@VERSION@", nupkg_version);
nuspec_file_content =
Strings::replace_all(std::move(nuspec_file_content), "@RAW_EXPORTED_DIR@", raw_exported_dir);
- nuspec_file_content =
- Strings::replace_all(std::move(nuspec_file_content), "@TARGETS_REDIRECT_PATH@", targets_redirect_path);
+ nuspec_file_content = Strings::replace_all(
+ std::move(nuspec_file_content), "@TARGETS_REDIRECT_PATH@", targets_redirect_path.u8string());
+ nuspec_file_content = Strings::replace_all(
+ std::move(nuspec_file_content), "@PROPS_REDIRECT_PATH@", props_redirect_path.u8string());
return nuspec_file_content;
}
@@ -136,18 +140,23 @@ namespace vcpkg::Export
Files::Filesystem& fs = paths.get_filesystem();
const fs::path& nuget_exe = paths.get_tool_exe(Tools::NUGET);
+ std::error_code ec;
+ fs.create_directories(paths.buildsystems / "tmp", ec);
+
// This file will be placed in "build\native" in the nuget package. Therefore, go up two dirs.
const std::string targets_redirect_content =
create_targets_redirect("$(MSBuildThisFileDirectory)../../scripts/buildsystems/msbuild/vcpkg.targets");
const fs::path targets_redirect = paths.buildsystems / "tmp" / "vcpkg.export.nuget.targets";
-
- std::error_code ec;
- fs.create_directories(paths.buildsystems / "tmp", ec);
-
fs.write_contents(targets_redirect, targets_redirect_content, VCPKG_LINE_INFO);
- const std::string nuspec_file_content =
- create_nuspec_file_contents(raw_exported_dir.string(), targets_redirect.string(), nuget_id, nuget_version);
+ // This file will be placed in "build\native" in the nuget package. Therefore, go up two dirs.
+ const std::string props_redirect_content =
+ create_targets_redirect("$(MSBuildThisFileDirectory)../../scripts/buildsystems/msbuild/vcpkg.props");
+ const fs::path props_redirect = paths.buildsystems / "tmp" / "vcpkg.export.nuget.props";
+ fs.write_contents(props_redirect, props_redirect_content, VCPKG_LINE_INFO);
+
+ const std::string nuspec_file_content = create_nuspec_file_contents(
+ raw_exported_dir.string(), targets_redirect, props_redirect, nuget_id, nuget_version);
const fs::path nuspec_file_path = paths.buildsystems / "tmp" / "vcpkg.export.nuspec";
fs.write_contents(nuspec_file_path, nuspec_file_content, VCPKG_LINE_INFO);
@@ -235,6 +244,8 @@ namespace vcpkg::Export
{".vcpkg-root"},
{fs::path{"scripts"} / "buildsystems" / "msbuild" / "applocal.ps1"},
{fs::path{"scripts"} / "buildsystems" / "msbuild" / "vcpkg.targets"},
+ {fs::path{"scripts"} / "buildsystems" / "msbuild" / "vcpkg.props"},
+ {fs::path{"scripts"} / "buildsystems" / "msbuild" / "vcpkg-general.xml"},
{fs::path{"scripts"} / "buildsystems" / "vcpkg.cmake"},
{fs::path{"scripts"} / "cmake" / "vcpkg_get_windows_sdk.cmake"},
};
@@ -303,9 +314,6 @@ namespace vcpkg::Export
static constexpr StringLiteral OPTION_PREFAB_ENABLE_MAVEN = "--prefab-maven";
static constexpr StringLiteral OPTION_PREFAB_ENABLE_DEBUG = "--prefab-debug";
-
-
-
static constexpr std::array EXPORT_SWITCHES = {{
{OPTION_DRY_RUN, "Do not actually export"},
{OPTION_RAW, "Export to an uncompressed directory"},
@@ -333,7 +341,7 @@ namespace vcpkg::Export
"Specify the maintainer for the exported Chocolatey package (experimental feature)"},
{OPTION_CHOCOLATEY_VERSION_SUFFIX,
"Specify the version suffix to add for the exported Chocolatey package (experimental feature)"},
- {OPTION_PREFAB_GROUP_ID, "GroupId uniquely identifies your project according maven specifications"},
+ {OPTION_PREFAB_GROUP_ID, "GroupId uniquely identifies your project according maven specifications"},
{OPTION_PREFAB_ARTIFACT_ID, "Artifact Id is the name of the project according maven specifications"},
{OPTION_PREFAB_VERSION, "Version is the name of the project according maven specifications"},
{OPTION_PREFAB_SDK_MIN_VERSION, "Android minimum supported sdk version"},
@@ -386,10 +394,12 @@ namespace vcpkg::Export
});
}
- if (!ret.raw && !ret.nuget && !ret.ifw && !ret.zip && !ret.seven_zip && !ret.dry_run && !ret.chocolatey && !ret.prefab)
+ if (!ret.raw && !ret.nuget && !ret.ifw && !ret.zip && !ret.seven_zip && !ret.dry_run && !ret.chocolatey &&
+ !ret.prefab)
{
- System::print2(System::Color::error,
- "Must provide at least one export type: --raw --nuget --ifw --zip --7zip --chocolatey --prefab\n");
+ System::print2(
+ System::Color::error,
+ "Must provide at least one export type: --raw --nuget --ifw --zip --7zip --chocolatey --prefab\n");
System::print2(COMMAND_STRUCTURE.example_text);
Checks::exit_fail(VCPKG_LINE_INFO);
}
@@ -638,7 +648,8 @@ With a project open, go to Tools->NuGet Package Manager->Package Manager Console
Chocolatey::do_export(export_plan, paths, opts.chocolatey_options);
}
- if(opts.prefab){
+ if (opts.prefab)
+ {
Prefab::do_export(export_plan, paths, opts.prefab_options, default_triplet);
}
diff --git a/toolsrc/src/vcpkg/vcpkgpaths.cpp b/toolsrc/src/vcpkg/vcpkgpaths.cpp
index 2d933350be..ffc58b637c 100644
--- a/toolsrc/src/vcpkg/vcpkgpaths.cpp
+++ b/toolsrc/src/vcpkg/vcpkgpaths.cpp
@@ -81,7 +81,7 @@ namespace vcpkg
}
}
- #if defined(_WIN32)
+#if defined(_WIN32)
// fixup Windows drive letter to uppercase
const auto& nativeRoot = root.native();
if (nativeRoot.size() > 2 && (nativeRoot[0] >= L'a' && nativeRoot[0] <= L'z') && nativeRoot[1] == L':')
@@ -90,7 +90,7 @@ namespace vcpkg
uppercaseFirstLetter[0] = nativeRoot[0] - L'a' + L'A';
root = uppercaseFirstLetter;
}
- #endif // defined(_WIN32)
+#endif // defined(_WIN32)
Checks::check_exit(VCPKG_LINE_INFO, !root.empty(), "Error: Could not detect vcpkg-root.");
Debug::print("Using vcpkg-root: ", root.u8string(), '\n');
@@ -117,7 +117,9 @@ namespace vcpkg
tools = downloads / fs::u8path("tools");
buildsystems = scripts / fs::u8path("buildsystems");
- buildsystems_msbuild_targets = buildsystems / fs::u8path("msbuild") / fs::u8path("vcpkg.targets");
+ const auto msbuildDirectory = buildsystems / fs::u8path("msbuild");
+ buildsystems_msbuild_targets = msbuildDirectory / fs::u8path("vcpkg.targets");
+ buildsystems_msbuild_props = msbuildDirectory / fs::u8path("vcpkg.props");
vcpkg_dir = installed / fs::u8path("vcpkg");
vcpkg_dir_status_file = vcpkg_dir / fs::u8path("status");