Merge topic 'vs9-deprecate'

d7f440c5db Deprecate Visual Studio 9 2008 generator

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8181
diff --git a/Help/command/find_package.rst b/Help/command/find_package.rst
index c99c73d..de4cb88 100644
--- a/Help/command/find_package.rst
+++ b/Help/command/find_package.rst
@@ -370,7 +370,8 @@
 1. .. versionadded:: 3.12
     Search paths specified in the :variable:`<PackageName>_ROOT` CMake
     variable and the :envvar:`<PackageName>_ROOT` environment variable,
-    where ``<PackageName>`` is the package to be found.
+    where ``<PackageName>`` is the package to be found
+    (the case-preserved first argument to ``find_package``).
     The package root variables are maintained as a stack so if
     called from within a find module, root paths from the parent's find
     module will also be searched after paths for the current package.
diff --git a/Help/envvar/PackageName_ROOT.rst b/Help/envvar/PackageName_ROOT.rst
index 0cdd384..fa8c385 100644
--- a/Help/envvar/PackageName_ROOT.rst
+++ b/Help/envvar/PackageName_ROOT.rst
@@ -7,10 +7,10 @@
 
 Calls to :command:`find_package(<PackageName>)` will search in prefixes
 specified by the ``<PackageName>_ROOT`` environment variable, where
-``<PackageName>`` is the name given to the :command:`find_package` call
-and ``_ROOT`` is literal.  For example, ``find_package(Foo)`` will search
-prefixes specified in the ``Foo_ROOT`` environment variable (if set).
-See policy :policy:`CMP0074`.
+``<PackageName>`` is the (case-preserved) name given to the
+:command:`find_package` call and ``_ROOT`` is literal.
+For example, ``find_package(Foo)`` will search prefixes specified in the
+``Foo_ROOT`` environment variable (if set).  See policy :policy:`CMP0074`.
 
 This variable may hold a single prefix or a list of prefixes separated
 by ``:`` on UNIX or ``;`` on Windows (the same as the ``PATH`` environment
diff --git a/Help/manual/cmake-generator-expressions.7.rst b/Help/manual/cmake-generator-expressions.7.rst
index 8bb9dde..c3e87d7 100644
--- a/Help/manual/cmake-generator-expressions.7.rst
+++ b/Help/manual/cmake-generator-expressions.7.rst
@@ -1673,8 +1673,8 @@
   **On non-DLL platforms, this expression always evaluates to an empty string**.
 
   This generator expression can be used to copy all of the DLLs that a target
-  depends on into its output directory in a ``POST_BUILD`` custom command. For
-  example:
+  depends on into its output directory in a ``POST_BUILD`` custom command using
+  the :option:`cmake -E copy -t <cmake-E copy>` command. For example:
 
   .. code-block:: cmake
 
@@ -1683,7 +1683,7 @@
     add_executable(exe main.c)
     target_link_libraries(exe PRIVATE foo::foo foo::bar)
     add_custom_command(TARGET exe POST_BUILD
-      COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_RUNTIME_DLLS:exe> $<TARGET_FILE_DIR:exe>
+      COMMAND ${CMAKE_COMMAND} -E copy -t $<TARGET_FILE_DIR:exe> $<TARGET_RUNTIME_DLLS:exe>
       COMMAND_EXPAND_LISTS
     )
 
diff --git a/Help/variable/PackageName_ROOT.rst b/Help/variable/PackageName_ROOT.rst
index 98ba20e..6b17be3 100644
--- a/Help/variable/PackageName_ROOT.rst
+++ b/Help/variable/PackageName_ROOT.rst
@@ -5,10 +5,10 @@
 
 Calls to :command:`find_package(<PackageName>)` will search in prefixes
 specified by the ``<PackageName>_ROOT`` CMake variable, where
-``<PackageName>`` is the name given to the :command:`find_package` call
-and ``_ROOT`` is literal.  For example, ``find_package(Foo)`` will search
-prefixes specified in the ``Foo_ROOT`` CMake variable (if set).
-See policy :policy:`CMP0074`.
+``<PackageName>`` is the (case-preserved) name given to the
+:command:`find_package` call and ``_ROOT`` is literal.
+For example, ``find_package(Foo)`` will search prefixes specified in the
+``Foo_ROOT`` CMake variable (if set).  See policy :policy:`CMP0074`.
 
 This variable may hold a single prefix or a
 :ref:`semicolon-separated list <CMake Language Lists>` of multiple prefixes.
diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake
index d82dd37..1b77599 100644
--- a/Source/CMakeVersion.cmake
+++ b/Source/CMakeVersion.cmake
@@ -1,7 +1,7 @@
 # CMake version number components.
 set(CMake_VERSION_MAJOR 3)
 set(CMake_VERSION_MINOR 26)
-set(CMake_VERSION_PATCH 20230208)
+set(CMake_VERSION_PATCH 20230209)
 #set(CMake_VERSION_RC 0)
 set(CMake_VERSION_IS_DIRTY 0)
 
diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx
index 5e352b2..f83be26 100644
--- a/Source/cmGeneratorTarget.cxx
+++ b/Source/cmGeneratorTarget.cxx
@@ -1222,10 +1222,12 @@
     case cmStateEnums::GLOBAL_TARGET:
       return true;
     case cmStateEnums::INTERFACE_LIBRARY:
-      // An INTERFACE library is in the build system if it has SOURCES or
-      // HEADER_SETS.
+      // An INTERFACE library is in the build system if it has SOURCES,
+      // HEADER_SETS, or C++ module filesets.
       if (!this->SourceEntries.empty() ||
-          !this->Target->GetHeaderSetsEntries().empty()) {
+          !this->Target->GetHeaderSetsEntries().empty() ||
+          !this->Target->GetCxxModuleSetsEntries().empty() ||
+          !this->Target->GetCxxModuleHeaderSetsEntries().empty()) {
         return true;
       }
       break;
diff --git a/Source/cmakemain.cxx b/Source/cmakemain.cxx
index 1e02412..f4e602b 100644
--- a/Source/cmakemain.cxx
+++ b/Source/cmakemain.cxx
@@ -303,6 +303,13 @@
   for (decltype(inputArgs.size()) i = 0; i < inputArgs.size(); ++i) {
     std::string const& arg = inputArgs[i];
     bool matched = false;
+
+    // Only in script mode do we stop parsing instead
+    // of preferring the last mode flag provided
+    if (arg == "--" && workingMode == cmake::SCRIPT_MODE) {
+      parsedArgs = inputArgs;
+      break;
+    }
     for (auto const& m : arguments) {
       if (m.matches(arg)) {
         matched = true;
@@ -311,11 +318,6 @@
         }
         return 1; // failed to parse
       }
-      // Only in script mode do we stop parsing instead
-      // of preferring the last mode flag provided
-      if (arg == "--" && workingMode == cmake::SCRIPT_MODE) {
-        break;
-      }
     }
     if (!matched) {
       parsedArgs.emplace_back(av[i]);
diff --git a/Tests/RunCMake/CommandLine/P_P_in_arbitrary_args_2-stdout.txt b/Tests/RunCMake/CommandLine/P_P_in_arbitrary_args_2-stdout.txt
new file mode 100644
index 0000000..ad386bd
--- /dev/null
+++ b/Tests/RunCMake/CommandLine/P_P_in_arbitrary_args_2-stdout.txt
@@ -0,0 +1,10 @@
+^-- CMAKE_ARGC='6'
+-- CMAKE_ARGV1='-P'
+-- CMAKE_ARGV2='[^']*/Tests/RunCMake/CommandLine/P_arbitrary_args.cmake'
+-- CMAKE_ARGV3='--'
+-- CMAKE_ARGV4='-P'
+-- CMAKE_ARGV5='-o'
+-- CMAKE_ARGV6=''
+-- CMAKE_ARGV7=''
+-- CMAKE_ARGV8=''
+-- CMAKE_ARGV9=''$
diff --git a/Tests/RunCMake/CommandLine/RunCMakeTest.cmake b/Tests/RunCMake/CommandLine/RunCMakeTest.cmake
index 718a2a1..7ff417b 100644
--- a/Tests/RunCMake/CommandLine/RunCMakeTest.cmake
+++ b/Tests/RunCMake/CommandLine/RunCMakeTest.cmake
@@ -56,6 +56,7 @@
 run_cmake_command(P_args ${CMAKE_COMMAND} -P "${RunCMake_SOURCE_DIR}/P_args.cmake" relative/path "${RunCMake_SOURCE_DIR}")
 run_cmake_command(P_arbitrary_args ${CMAKE_COMMAND} -P "${RunCMake_SOURCE_DIR}/P_arbitrary_args.cmake" -- -DFOO -S -B --fresh --version)
 run_cmake_command(P_P_in_arbitrary_args ${CMAKE_COMMAND} -P "${RunCMake_SOURCE_DIR}/P_arbitrary_args.cmake" -- -P "${RunCMake_SOURCE_DIR}/non_existing.cmake")
+run_cmake_command(P_P_in_arbitrary_args_2 ${CMAKE_COMMAND} -P "${RunCMake_SOURCE_DIR}/P_arbitrary_args.cmake" -- -P -o)
 run_cmake_command(P_fresh ${CMAKE_COMMAND} -P "${RunCMake_SOURCE_DIR}/P_fresh.cmake" --fresh)
 
 run_cmake_command(build-no-dir
diff --git a/Utilities/cmcurl/lib/vtls/schannel.c b/Utilities/cmcurl/lib/vtls/schannel.c
index 90a6fe6..7eab954 100644
--- a/Utilities/cmcurl/lib/vtls/schannel.c
+++ b/Utilities/cmcurl/lib/vtls/schannel.c
@@ -220,7 +220,6 @@
   case CURL_SSLVERSION_MAX_NONE:
   case CURL_SSLVERSION_MAX_DEFAULT:
 
-#if 0 /* Disabled in CMake due to issue 24147 (curl issue 9431) */
     /* Windows Server 2022 and newer (including Windows 11) support TLS 1.3
        built-in. Previous builds of Windows 10 had broken TLS 1.3
        implementations that could be enabled via registry.
@@ -230,7 +229,6 @@
       ssl_version_max = CURL_SSLVERSION_MAX_TLSv1_3;
     }
     else /* Windows 10 and older */
-#endif
       ssl_version_max = CURL_SSLVERSION_MAX_TLSv1_2;
 
     break;
@@ -249,7 +247,6 @@
       break;
     case CURL_SSLVERSION_TLSv1_3:
 
-#if 0 /* Disabled in CMake due to issue 24147 (curl issue 9431) */
       /* Windows Server 2022 and newer */
       if(curlx_verify_windows_version(10, 0, 20348, PLATFORM_WINNT,
                                       VERSION_GREATER_THAN_EQUAL)) {
@@ -260,10 +257,6 @@
         failf(data, "schannel: TLS 1.3 not supported on Windows prior to 11");
         return CURLE_SSL_CONNECT_ERROR;
       }
-#else
-      failf(data, "schannel: TLS 1.3 is not yet supported");
-      return CURLE_SSL_CONNECT_ERROR;
-#endif
     }
   }
   return CURLE_OK;