From 6546305b010c372fdf7f7000e6139f5cb1b61354 Mon Sep 17 00:00:00 2001
From: halx99 <halx99@live.com>
Date: Wed, 15 Mar 2023 11:17:21 +0800
Subject: VS: Add CMAKE_VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION variable

Provide a way to initialize the `VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION`
target property on targets.  It sets `WindowsTargetPlatformMinVersion`
in `.vcxproj` files.
---
 Help/manual/cmake-variables.7.rst                            |  1 +
 Help/prop_tgt/VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION.rst     | 11 ++++++++---
 Help/release/dev/vs-windows-min-version.rst                  |  6 ++++++
 .../CMAKE_VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION.rst         | 12 ++++++++++++
 Source/cmTarget.cxx                                          |  1 +
 5 files changed, 28 insertions(+), 3 deletions(-)
 create mode 100644 Help/release/dev/vs-windows-min-version.rst
 create mode 100644 Help/variable/CMAKE_VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION.rst

diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst
index 99ea564..1b7113e 100644
--- a/Help/manual/cmake-variables.7.rst
+++ b/Help/manual/cmake-variables.7.rst
@@ -132,6 +132,7 @@ Variables that Provide Information
    /variable/CMAKE_VS_TARGET_FRAMEWORK_TARGETS_VERSION
    /variable/CMAKE_VS_TARGET_FRAMEWORK_VERSION
    /variable/CMAKE_VS_VERSION_BUILD_NUMBER
+   /variable/CMAKE_VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION
    /variable/CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION
    /variable/CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM
    /variable/CMAKE_XCODE_BUILD_SYSTEM
diff --git a/Help/prop_tgt/VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION.rst b/Help/prop_tgt/VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION.rst
index 50cf203..ef3ceb0 100644
--- a/Help/prop_tgt/VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION.rst
+++ b/Help/prop_tgt/VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION.rst
@@ -7,6 +7,11 @@ Visual Studio Windows Target Platform Minimum Version
 
 For Windows 10. Specifies the minimum version of the OS that is being
 targeted. For example ``10.0.10240.0``. If the value is not specified, the
-value of :variable:`CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION` will be used on
-WindowsStore projects otherwise the target platform minimum version will not
-be specified for the project.
+value of the :variable:`CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION` variable
+will be used on WindowsStore projects.  Otherwise the target platform
+minimum version will not be specified for the project.
+
+.. versionadded:: 3.27
+  This property is initialized by the value of the
+  :variable:`CMAKE_VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION` variable
+  if it is set when a target is created.
diff --git a/Help/release/dev/vs-windows-min-version.rst b/Help/release/dev/vs-windows-min-version.rst
new file mode 100644
index 0000000..cb39159
--- /dev/null
+++ b/Help/release/dev/vs-windows-min-version.rst
@@ -0,0 +1,6 @@
+vs-windows-min-version
+----------------------
+
+* The :variable:`CMAKE_VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION` variable
+  was added to initialize the :prop_tgt:`VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION`
+  target property on all targets when they are created.
diff --git a/Help/variable/CMAKE_VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION.rst b/Help/variable/CMAKE_VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION.rst
new file mode 100644
index 0000000..8ef54cd
--- /dev/null
+++ b/Help/variable/CMAKE_VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION.rst
@@ -0,0 +1,12 @@
+CMAKE_VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION
+--------------------------------------------
+
+.. versionadded:: 3.27
+
+Tell :ref:`Visual Studio Generators` to use the given
+Windows Target Platform Minimum Version.
+
+This variable is used to initialize the
+:prop_tgt:`VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION` property on all
+targets when they are created.  See that target property for
+additional information.
diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx
index ec87271..9d43c64 100644
--- a/Source/cmTarget.cxx
+++ b/Source/cmTarget.cxx
@@ -552,6 +552,7 @@ TargetProperty const StaticTargetProperties[] = {
   { "JOB_POOL_PRECOMPILE_HEADER"_s, IC::CanCompileSources },
   // -- Visual Studio
   { "VS_NO_COMPILE_BATCHING"_s, IC::CanCompileSources },
+  { "VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION"_s, IC::CanCompileSources},
 
   // Output location properties
   { "ARCHIVE_OUTPUT_DIRECTORY"_s, IC::CanCompileSources },
-- 
cgit v0.12