New upstream version 3.27.1
This commit is contained in:
		
							parent
							
								
									b7d3f47cc5
								
							
						
					
					
						commit
						354615eb8f
					
				@ -175,8 +175,8 @@ Updates
 | 
			
		||||
 | 
			
		||||
Changes made since CMake 3.26.0 include the following.
 | 
			
		||||
 | 
			
		||||
3.26.1, 3.26.2, 3.26.3, 3.26.4
 | 
			
		||||
------------------------------
 | 
			
		||||
3.26.1, 3.26.2, 3.26.3, 3.26.4, 3.26.5
 | 
			
		||||
--------------------------------------
 | 
			
		||||
 | 
			
		||||
* These versions made no changes to documented features or interfaces.
 | 
			
		||||
  Some implementation updates were made to support ecosystem changes
 | 
			
		||||
 | 
			
		||||
@ -256,3 +256,15 @@ Other Changes
 | 
			
		||||
 | 
			
		||||
* :ref:`Visual Studio Generators`, for VS 15.8 (2017) and newer, now
 | 
			
		||||
  build custom commands in parallel.  See policy :policy:`CMP0147`.
 | 
			
		||||
 | 
			
		||||
Updates
 | 
			
		||||
=======
 | 
			
		||||
 | 
			
		||||
Changes made since CMake 3.27.0 include the following.
 | 
			
		||||
 | 
			
		||||
3.27.1
 | 
			
		||||
------
 | 
			
		||||
 | 
			
		||||
* This version made no changes to documented features or interfaces.
 | 
			
		||||
  Some implementation updates were made to support ecosystem changes
 | 
			
		||||
  and/or fix regressions.
 | 
			
		||||
 | 
			
		||||
@ -1200,7 +1200,7 @@ if(CUDAToolkit_FOUND)
 | 
			
		||||
    endif()
 | 
			
		||||
  endif()
 | 
			
		||||
 | 
			
		||||
  _CUDAToolkit_find_and_add_import_lib(nvrtc_builtins DEPS cuda_driver)
 | 
			
		||||
  _CUDAToolkit_find_and_add_import_lib(nvrtc_builtins ALT nvrtc-builtins DEPS cuda_driver)
 | 
			
		||||
  _CUDAToolkit_find_and_add_import_lib(nvrtc DEPS nvrtc_builtins nvJitLink)
 | 
			
		||||
  if(CUDAToolkit_VERSION VERSION_GREATER_EQUAL 11.5.0)
 | 
			
		||||
    _CUDAToolkit_find_and_add_import_lib(nvrtc_builtins_static ALT nvrtc-builtins_static DEPS cuda_driver)
 | 
			
		||||
 | 
			
		||||
@ -230,7 +230,7 @@ else()
 | 
			
		||||
  set(_OPENSSL_FIND_PATH_SUFFIX "include")
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
if ((DEFINED OPENSSL_ROOT_DIR) OR (DEFINED ENV{OPENSSL_ROOT_DIR}))
 | 
			
		||||
if (OPENSSL_ROOT_DIR OR NOT "$ENV{OPENSSL_ROOT_DIR}" STREQUAL "")
 | 
			
		||||
  set(_OPENSSL_ROOT_HINTS HINTS ${OPENSSL_ROOT_DIR} ENV OPENSSL_ROOT_DIR)
 | 
			
		||||
  set(_OPENSSL_ROOT_PATHS NO_DEFAULT_PATH)
 | 
			
		||||
elseif (MSVC)
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
# CMake version number components.
 | 
			
		||||
set(CMake_VERSION_MAJOR 3)
 | 
			
		||||
set(CMake_VERSION_MINOR 27)
 | 
			
		||||
set(CMake_VERSION_PATCH 0)
 | 
			
		||||
set(CMake_VERSION_PATCH 1)
 | 
			
		||||
#set(CMake_VERSION_RC 0)
 | 
			
		||||
set(CMake_VERSION_IS_DIRTY 0)
 | 
			
		||||
 | 
			
		||||
@ -21,7 +21,7 @@ endif()
 | 
			
		||||
 | 
			
		||||
if(NOT CMake_VERSION_NO_GIT)
 | 
			
		||||
  # If this source was exported by 'git archive', use its commit info.
 | 
			
		||||
  set(git_info [==[784596bd08 CMake 3.27.0]==])
 | 
			
		||||
  set(git_info [==[b5c54d9c8a CMake 3.27.1]==])
 | 
			
		||||
 | 
			
		||||
  # Otherwise, try to identify the current development source version.
 | 
			
		||||
  if(NOT git_info MATCHES "^([0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]?[0-9a-f]?)[0-9a-f]* "
 | 
			
		||||
 | 
			
		||||
@ -758,11 +758,13 @@ bool cmCTestRunTest::ForkProcess()
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // An explicit TIMEOUT=0 test property means "no timeout".
 | 
			
		||||
  if (timeout && *timeout == std::chrono::duration<double>::zero()) {
 | 
			
		||||
    timeout = cm::nullopt;
 | 
			
		||||
  if (timeout) {
 | 
			
		||||
    if (*timeout == std::chrono::duration<double>::zero()) {
 | 
			
		||||
      timeout = cm::nullopt;
 | 
			
		||||
    }
 | 
			
		||||
  } else {
 | 
			
		||||
    // Check --timeout.
 | 
			
		||||
    if (!timeout && this->CTest->GetGlobalTimeout() > cmDuration::zero()) {
 | 
			
		||||
    if (this->CTest->GetGlobalTimeout() > cmDuration::zero()) {
 | 
			
		||||
      timeout = this->CTest->GetGlobalTimeout();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -143,7 +143,6 @@ bool cmCTestSubmitHandler::SubmitUsingHTTP(
 | 
			
		||||
  const std::string& remoteprefix, const std::string& url)
 | 
			
		||||
{
 | 
			
		||||
  CURL* curl;
 | 
			
		||||
  CURLcode res;
 | 
			
		||||
  FILE* ftpfile;
 | 
			
		||||
  char error_buffer[1024];
 | 
			
		||||
  // Set Content-Type to satisfy fussy modsecurity rules.
 | 
			
		||||
@ -211,8 +210,6 @@ bool cmCTestSubmitHandler::SubmitUsingHTTP(
 | 
			
		||||
      if (this->CTest->ShouldUseHTTP10()) {
 | 
			
		||||
        curl_easy_setopt(curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
 | 
			
		||||
      }
 | 
			
		||||
      // enable HTTP ERROR parsing
 | 
			
		||||
      curl_easy_setopt(curl, CURLOPT_FAILONERROR, 1);
 | 
			
		||||
      /* enable uploading */
 | 
			
		||||
      curl_easy_setopt(curl, CURLOPT_UPLOAD, 1);
 | 
			
		||||
 | 
			
		||||
@ -286,7 +283,7 @@ bool cmCTestSubmitHandler::SubmitUsingHTTP(
 | 
			
		||||
      upload_as += "&MD5=";
 | 
			
		||||
 | 
			
		||||
      if (cmIsOn(this->GetOption("InternalTest"))) {
 | 
			
		||||
        upload_as += "bad_md5sum";
 | 
			
		||||
        upload_as += "ffffffffffffffffffffffffffffffff";
 | 
			
		||||
      } else {
 | 
			
		||||
        upload_as +=
 | 
			
		||||
          cmSystemTools::ComputeFileHash(local_file, cmCryptoHash::AlgoMD5);
 | 
			
		||||
@ -338,7 +335,7 @@ bool cmCTestSubmitHandler::SubmitUsingHTTP(
 | 
			
		||||
      ::curl_easy_setopt(curl, CURLOPT_DEBUGDATA, &chunkDebug);
 | 
			
		||||
 | 
			
		||||
      // Now run off and do what you've been told!
 | 
			
		||||
      res = ::curl_easy_perform(curl);
 | 
			
		||||
      ::curl_easy_perform(curl);
 | 
			
		||||
 | 
			
		||||
      if (!chunk.empty()) {
 | 
			
		||||
        cmCTestOptionalLog(this->CTest, DEBUG,
 | 
			
		||||
@ -359,7 +356,11 @@ bool cmCTestSubmitHandler::SubmitUsingHTTP(
 | 
			
		||||
 | 
			
		||||
      // If curl failed for any reason, or checksum fails, wait and retry
 | 
			
		||||
      //
 | 
			
		||||
      if (res != CURLE_OK || this->HasErrors) {
 | 
			
		||||
      long response_code;
 | 
			
		||||
      curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response_code);
 | 
			
		||||
      bool successful_submission = response_code == 200;
 | 
			
		||||
 | 
			
		||||
      if (!successful_submission || this->HasErrors) {
 | 
			
		||||
        std::string retryDelay = *this->GetOption("RetryDelay");
 | 
			
		||||
        std::string retryCount = *this->GetOption("RetryCount");
 | 
			
		||||
 | 
			
		||||
@ -397,7 +398,7 @@ bool cmCTestSubmitHandler::SubmitUsingHTTP(
 | 
			
		||||
          chunkDebug.clear();
 | 
			
		||||
          this->HasErrors = false;
 | 
			
		||||
 | 
			
		||||
          res = ::curl_easy_perform(curl);
 | 
			
		||||
          ::curl_easy_perform(curl);
 | 
			
		||||
 | 
			
		||||
          if (!chunk.empty()) {
 | 
			
		||||
            cmCTestOptionalLog(this->CTest, DEBUG,
 | 
			
		||||
@ -408,14 +409,16 @@ bool cmCTestSubmitHandler::SubmitUsingHTTP(
 | 
			
		||||
            this->ParseResponse(chunk);
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          if (res == CURLE_OK && !this->HasErrors) {
 | 
			
		||||
          curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response_code);
 | 
			
		||||
          if (response_code == 200 && !this->HasErrors) {
 | 
			
		||||
            successful_submission = true;
 | 
			
		||||
            break;
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      fclose(ftpfile);
 | 
			
		||||
      if (res) {
 | 
			
		||||
      if (!successful_submission) {
 | 
			
		||||
        cmCTestLog(this->CTest, ERROR_MESSAGE,
 | 
			
		||||
                   "   Error when uploading file: " << local_file
 | 
			
		||||
                                                    << std::endl);
 | 
			
		||||
 | 
			
		||||
@ -170,9 +170,15 @@ std::vector<std::string> cmCommonTargetGenerator::GetLinkedTargetDirectories(
 | 
			
		||||
  cmGlobalCommonGenerator* const gg = this->GlobalCommonGenerator;
 | 
			
		||||
  if (cmComputeLinkInformation* cli =
 | 
			
		||||
        this->GeneratorTarget->GetLinkInformation(config)) {
 | 
			
		||||
    cmComputeLinkInformation::ItemVector const& items = cli->GetItems();
 | 
			
		||||
    for (auto const& item : items) {
 | 
			
		||||
      cmGeneratorTarget const* linkee = item.Target;
 | 
			
		||||
    std::vector<cmGeneratorTarget const*> targets;
 | 
			
		||||
    for (auto const& item : cli->GetItems()) {
 | 
			
		||||
      targets.push_back(item.Target);
 | 
			
		||||
    }
 | 
			
		||||
    for (auto const* target : cli->GetObjectLibrariesLinked()) {
 | 
			
		||||
      targets.push_back(target);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    for (auto const* linkee : targets) {
 | 
			
		||||
      if (linkee &&
 | 
			
		||||
          !linkee->IsImported()
 | 
			
		||||
          // Skip targets that build after this one in a static lib cycle.
 | 
			
		||||
 | 
			
		||||
@ -525,6 +525,12 @@ cmComputeLinkInformation::GetSharedLibrariesLinked() const
 | 
			
		||||
  return this->SharedLibrariesLinked;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const std::vector<const cmGeneratorTarget*>&
 | 
			
		||||
cmComputeLinkInformation::GetObjectLibrariesLinked() const
 | 
			
		||||
{
 | 
			
		||||
  return this->ObjectLibrariesLinked;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool cmComputeLinkInformation::Compute()
 | 
			
		||||
{
 | 
			
		||||
  // Skip targets that do not link.
 | 
			
		||||
@ -1147,8 +1153,12 @@ void cmComputeLinkInformation::AddItem(LinkEntry const& entry)
 | 
			
		||||
        this->AddItem(BT<std::string>(libName, item.Backtrace));
 | 
			
		||||
      }
 | 
			
		||||
    } else if (tgt->GetType() == cmStateEnums::OBJECT_LIBRARY) {
 | 
			
		||||
      // Ignore object library!
 | 
			
		||||
      // Its object-files should already have been extracted for linking.
 | 
			
		||||
      if (!tgt->HaveCxx20ModuleSources() && !tgt->HaveFortranSources(config)) {
 | 
			
		||||
        // Ignore object library!
 | 
			
		||||
        // Its object-files should already have been extracted for linking.
 | 
			
		||||
      } else {
 | 
			
		||||
        this->ObjectLibrariesLinked.push_back(entry.Target);
 | 
			
		||||
      }
 | 
			
		||||
    } else {
 | 
			
		||||
      // Decide whether to use an import library.
 | 
			
		||||
      cmStateEnums::ArtifactType artifact = tgt->HasImportLibrary(config)
 | 
			
		||||
 | 
			
		||||
@ -96,6 +96,8 @@ public:
 | 
			
		||||
  std::string GetRPathString(bool for_install) const;
 | 
			
		||||
  std::string GetChrpathString() const;
 | 
			
		||||
  std::set<cmGeneratorTarget const*> const& GetSharedLibrariesLinked() const;
 | 
			
		||||
  std::vector<cmGeneratorTarget const*> const& GetObjectLibrariesLinked()
 | 
			
		||||
    const;
 | 
			
		||||
  std::vector<cmGeneratorTarget const*> const& GetRuntimeDLLs() const
 | 
			
		||||
  {
 | 
			
		||||
    return this->RuntimeDLLs;
 | 
			
		||||
@ -132,6 +134,7 @@ private:
 | 
			
		||||
  std::vector<std::string> FrameworkPaths;
 | 
			
		||||
  std::vector<std::string> RuntimeSearchPath;
 | 
			
		||||
  std::set<cmGeneratorTarget const*> SharedLibrariesLinked;
 | 
			
		||||
  std::vector<cmGeneratorTarget const*> ObjectLibrariesLinked;
 | 
			
		||||
  std::vector<cmGeneratorTarget const*> RuntimeDLLs;
 | 
			
		||||
 | 
			
		||||
  // Context information.
 | 
			
		||||
 | 
			
		||||
@ -420,7 +420,7 @@ TargetProperty const StaticTargetProperties[] = {
 | 
			
		||||
  { "Fortran_FORMAT"_s, IC::CanCompileSources },
 | 
			
		||||
  { "Fortran_MODULE_DIRECTORY"_s, IC::CanCompileSources },
 | 
			
		||||
  { "Fortran_COMPILER_LAUNCHER"_s, IC::CanCompileSources },
 | 
			
		||||
  { "Fortran_PREPRPOCESS"_s, IC::CanCompileSources },
 | 
			
		||||
  { "Fortran_PREPROCESS"_s, IC::CanCompileSources },
 | 
			
		||||
  { "Fortran_VISIBILITY_PRESET"_s, IC::CanCompileSources },
 | 
			
		||||
  // ---- HIP
 | 
			
		||||
  COMMON_LANGUAGE_PROPERTIES(HIP),
 | 
			
		||||
 | 
			
		||||
@ -3290,7 +3290,7 @@ if(BUILD_TESTING)
 | 
			
		||||
      "${CMake_BINARY_DIR}/Tests/CTestTestChecksum/testOutput.log"
 | 
			
		||||
      )
 | 
			
		||||
    set_tests_properties(CTestTestChecksum PROPERTIES PASS_REGULAR_EXPRESSION
 | 
			
		||||
      "Submission failed: Checksum failed for file")
 | 
			
		||||
      "md5 mismatch")
 | 
			
		||||
 | 
			
		||||
    # these tests take a long time, make sure they have it
 | 
			
		||||
    # if timeouts have not already been set
 | 
			
		||||
 | 
			
		||||
@ -169,8 +169,11 @@ endif()
 | 
			
		||||
# extensions like '.F' and '.fpp'.
 | 
			
		||||
if(CMAKE_Fortran_COMPILE_OPTIONS_PREPROCESS_OFF AND
 | 
			
		||||
    NOT CMAKE_Fortran_COMPILER_ID MATCHES "(Flang|NAG|PGI|NVHPC|SunPro|XL)")
 | 
			
		||||
 | 
			
		||||
  set(CMAKE_Fortran_PREPROCESS OFF)
 | 
			
		||||
  add_library(no_preprocess_target STATIC no_preprocess_target_upper.F)
 | 
			
		||||
  target_compile_options(no_preprocess_target PRIVATE -DINTEGER=nonsense)
 | 
			
		||||
  unset(CMAKE_Fortran_PREPROCESS)
 | 
			
		||||
 | 
			
		||||
  add_library(no_preprocess_source STATIC no_preprocess_source_upper.F)
 | 
			
		||||
  target_compile_options(no_preprocess_source PRIVATE -DINTEGER=nonsense)
 | 
			
		||||
@ -181,6 +184,11 @@ if(CMAKE_Fortran_COMPILE_OPTIONS_PREPROCESS_OFF AND
 | 
			
		||||
    target_sources(no_preprocess_source PRIVATE no_preprocess_source_fpp.fpp)
 | 
			
		||||
  endif()
 | 
			
		||||
 | 
			
		||||
  set_property(TARGET no_preprocess_target PROPERTY Fortran_PREPROCESS OFF)
 | 
			
		||||
  set_property(SOURCE no_preprocess_source_upper.F no_preprocess_source_fpp.fpp PROPERTY Fortran_PREPROCESS OFF)
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
# Issue 25112
 | 
			
		||||
set(CMAKE_Fortran_MODULE_DIRECTORY "${PROJECT_BINARY_DIR}/include")
 | 
			
		||||
add_library(objmod OBJECT objmod.f90)
 | 
			
		||||
add_executable(objmain objmain.f90)
 | 
			
		||||
target_link_libraries(objmain PRIVATE objmod)
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										5
									
								
								Tests/FortranOnly/objmain.f90
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								Tests/FortranOnly/objmain.f90
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,5 @@
 | 
			
		||||
program main
 | 
			
		||||
    use objmod, only : hello
 | 
			
		||||
    implicit none
 | 
			
		||||
    call hello()
 | 
			
		||||
end program
 | 
			
		||||
							
								
								
									
										7
									
								
								Tests/FortranOnly/objmod.f90
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								Tests/FortranOnly/objmod.f90
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,7 @@
 | 
			
		||||
module objmod
 | 
			
		||||
    implicit none
 | 
			
		||||
contains
 | 
			
		||||
    subroutine hello()
 | 
			
		||||
        print '(a)', "hello world"
 | 
			
		||||
    end subroutine hello
 | 
			
		||||
end module objmod
 | 
			
		||||
@ -0,0 +1,6 @@
 | 
			
		||||
Test project [^
 | 
			
		||||
]*/Tests/RunCMake/CTestTimeout/PropertyOverridesScript-build
 | 
			
		||||
    Start 1: TestTimeout
 | 
			
		||||
1/1 Test #1: TestTimeout ......................   Passed +[1-9][0-9.]* sec
 | 
			
		||||
+
 | 
			
		||||
100% tests passed, 0 tests failed out of 1
 | 
			
		||||
@ -87,3 +87,10 @@ block()
 | 
			
		||||
  set(CASE_TEST_PREFIX_CODE "set(CTEST_TEST_TIMEOUT 2)")
 | 
			
		||||
  run_ctest_timeout(ZeroOverridesVar)
 | 
			
		||||
endblock()
 | 
			
		||||
 | 
			
		||||
block()
 | 
			
		||||
  set(TIMEOUT 4)
 | 
			
		||||
  set(CASE_TEST_PREFIX_CODE "set(CTEST_TEST_TIMEOUT 2)")
 | 
			
		||||
  set(CASE_CMAKELISTS_SUFFIX_CODE "set_property(TEST TestTimeout PROPERTY TIMEOUT 10)\n")
 | 
			
		||||
  run_ctest_timeout(PropertyOverridesScript)
 | 
			
		||||
endblock()
 | 
			
		||||
 | 
			
		||||
@ -142,6 +142,7 @@ string(REPLACE "," ";" CMake_TEST_MODULE_COMPILATION "${CMake_TEST_MODULE_COMPIL
 | 
			
		||||
if ("named" IN_LIST CMake_TEST_MODULE_COMPILATION)
 | 
			
		||||
  run_cxx_module_test(simple)
 | 
			
		||||
  run_cxx_module_test(library library-static -DBUILD_SHARED_LIBS=OFF)
 | 
			
		||||
  run_cxx_module_test(object-library)
 | 
			
		||||
  run_cxx_module_test(generated)
 | 
			
		||||
  run_cxx_module_test(deep-chain)
 | 
			
		||||
  run_cxx_module_test(duplicate)
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,4 @@
 | 
			
		||||
CMake Warning \(dev\) at CMakeLists.txt:[0-9]* \(target_sources\):
 | 
			
		||||
  CMake's C\+\+ module support is experimental.  It is meant only for
 | 
			
		||||
  experimentation and feedback to CMake developers.
 | 
			
		||||
This warning is for project developers.  Use -Wno-dev to suppress it.
 | 
			
		||||
@ -0,0 +1,22 @@
 | 
			
		||||
cmake_minimum_required(VERSION 3.24)
 | 
			
		||||
project(cxx_modules_objlib CXX)
 | 
			
		||||
 | 
			
		||||
include("${CMAKE_SOURCE_DIR}/../cxx-modules-rules.cmake")
 | 
			
		||||
 | 
			
		||||
add_library(objlib OBJECT)
 | 
			
		||||
target_sources(objlib
 | 
			
		||||
  PUBLIC
 | 
			
		||||
    FILE_SET CXX_MODULES
 | 
			
		||||
      BASE_DIRS
 | 
			
		||||
        "${CMAKE_CURRENT_SOURCE_DIR}"
 | 
			
		||||
      FILES
 | 
			
		||||
        importable.cxx)
 | 
			
		||||
target_compile_features(objlib PUBLIC cxx_std_20)
 | 
			
		||||
 | 
			
		||||
add_executable(objmain)
 | 
			
		||||
target_sources(objmain
 | 
			
		||||
  PRIVATE
 | 
			
		||||
    main.cxx)
 | 
			
		||||
target_link_libraries(objmain PRIVATE objlib)
 | 
			
		||||
 | 
			
		||||
add_test(NAME objmain COMMAND objmain)
 | 
			
		||||
@ -0,0 +1,6 @@
 | 
			
		||||
export module importable;
 | 
			
		||||
 | 
			
		||||
export int from_import()
 | 
			
		||||
{
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,6 @@
 | 
			
		||||
import importable;
 | 
			
		||||
 | 
			
		||||
int main(int argc, char* argv[])
 | 
			
		||||
{
 | 
			
		||||
  return from_import();
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user