diff --git a/Auxiliary/vim/syntax/cmake.vim b/Auxiliary/vim/syntax/cmake.vim index 5d412c29f..b504e4edd 100644 --- a/Auxiliary/vim/syntax/cmake.vim +++ b/Auxiliary/vim/syntax/cmake.vim @@ -2636,7 +2636,6 @@ syn keyword cmakeKWadd_test contained \ SKIP_REGULAR_EXPRESSION \ TARGET_FILE \ WILL_FAIL - \ WILL_FALL \ WORKING_DIRECTORY syn keyword cmakeKWblock contained diff --git a/Help/command/add_test.rst b/Help/command/add_test.rst index 557c858b8..2a3c759d7 100644 --- a/Help/command/add_test.rst +++ b/Help/command/add_test.rst @@ -80,7 +80,7 @@ directory the test is created in. If the test command exits with code ``0`` the test passes. Non-zero exit code is a "failed" test. The test property :prop_test:`WILL_FAIL` inverts this logic. Note that system-level test failures such as segmentation faults or -heap errors will still fail the test even if ``WILL_FALL`` is true. Output +heap errors will still fail the test even if ``WILL_FAIL`` is true. Output written to stdout or stderr is captured by :manual:`ctest(1)` and only affects the pass/fail status via the :prop_test:`PASS_REGULAR_EXPRESSION`, :prop_test:`FAIL_REGULAR_EXPRESSION`, or :prop_test:`SKIP_REGULAR_EXPRESSION` diff --git a/Help/release/3.30.rst b/Help/release/3.30.rst index 558b1ea91..2d5724990 100644 --- a/Help/release/3.30.rst +++ b/Help/release/3.30.rst @@ -248,9 +248,9 @@ Updates Changes made since CMake 3.30.0 include the following. -3.30.1 ------- +3.30.1, 3.30.2 +-------------- -* This version made no changes to documented features or interfaces. +* These versions made no changes to documented features or interfaces. Some implementation updates were made to support ecosystem changes and/or fix regressions. diff --git a/Modules/CMakeDetermineCompilerABI.cmake b/Modules/CMakeDetermineCompilerABI.cmake index 671a0b6a5..4a75e25a9 100644 --- a/Modules/CMakeDetermineCompilerABI.cmake +++ b/Modules/CMakeDetermineCompilerABI.cmake @@ -99,7 +99,7 @@ function(CMAKE_DETERMINE_COMPILER_ABI lang src) # Load the resulting information strings. if(CMAKE_${lang}_ABI_COMPILED) message(CHECK_PASS "done") - if(CMAKE_HOST_APPLE AND CMAKE_SYSTEM_NAME STREQUAL "Darwin") + if(CMAKE_HOST_APPLE AND CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND NOT CMAKE_OSX_ARCHITECTURES MATCHES "\\$") file(READ_MACHO "${BIN}" ARCHITECTURES archs CAPTURE_ERROR macho_error) # undocumented file() subcommand if (NOT macho_error) # sort and prune the list of found architectures diff --git a/Modules/CMakeSwiftInformation.cmake b/Modules/CMakeSwiftInformation.cmake index 60df6a208..869a50863 100644 --- a/Modules/CMakeSwiftInformation.cmake +++ b/Modules/CMakeSwiftInformation.cmake @@ -134,7 +134,7 @@ if(CMAKE_Swift_COMPILATION_MODE_DEFAULT) endif() if(NOT CMAKE_Swift_CREATE_SHARED_LIBRARY) - set(CMAKE_Swift_CREATE_SHARED_LIBRARY " ${CMAKE_Swift_PARALLEL_FLAGS} -emit-library ${CMAKE_Swift_IMPLIB_LINKER_FLAGS} -o ") + set(CMAKE_Swift_CREATE_SHARED_LIBRARY " ${CMAKE_Swift_PARALLEL_FLAGS} -emit-library ${CMAKE_Swift_IMPLIB_LINKER_FLAGS} -o ") endif() if(NOT CMAKE_Swift_CREATE_SHARED_MODULE) diff --git a/Modules/ExternalProject/shared_internal_commands.cmake b/Modules/ExternalProject/shared_internal_commands.cmake index db144541e..a709670cf 100644 --- a/Modules/ExternalProject/shared_internal_commands.cmake +++ b/Modules/ExternalProject/shared_internal_commands.cmake @@ -1394,7 +1394,7 @@ hash=${hash} DEPENDS \${depends} DEPENDEES mkdir ${log} - ${uses_terminal} + ${uses_terminal} )" ) endfunction() @@ -1495,10 +1495,10 @@ function(_ep_add_update_command name) set(svn_interactive_args "--non-interactive") endif() set(svn_user_pw_args "") - if(DEFINED svn_username) + if(DEFINED _EP_SVN_USERNAME) set(svn_user_pw_args ${svn_user_pw_args} "--username=${svn_username}") endif() - if(DEFINED svn_password) + if(DEFINED _EP_SVN_PASSWORD) set(svn_user_pw_args ${svn_user_pw_args} "--password=${svn_password}") endif() if(svn_trust_cert) @@ -1535,6 +1535,12 @@ function(_ep_add_update_command name) set(comment "Performing update step for '${name}'") set(comment_disconnected "Performing disconnected update step for '${name}'") + if(update_disconnected) + set(can_fetch_default NO) + else() + set(can_fetch_default YES) + endif() + set(git_tag "${_EP_GIT_TAG}") if(NOT git_tag) set(git_tag "master") @@ -1602,11 +1608,6 @@ function(_ep_add_update_command name) set(always 1) if(arg_SCRIPT_FILE) - if(update_disconnected) - set(can_fetch_default NO) - else() - set(can_fetch_default YES) - endif() set(step_script_contents "include(\"${update_script}\")") endif() @@ -1719,7 +1720,7 @@ Update to Mercurial >= 2.1.1. DEPENDEES download DEPENDS \${file_deps} ${log} - ${uses_terminal} + ${uses_terminal} )" ) if(update_disconnected) @@ -1740,7 +1741,7 @@ Update to Mercurial >= 2.1.1. DEPENDEES download DEPENDS \${file_deps} ${log} - ${uses_terminal} + ${uses_terminal} )" ) endif() @@ -1831,7 +1832,7 @@ function(_ep_add_patch_command name) DEPENDEES update DEPENDS \${patch_info_file} ${log} - ${uses_terminal} + ${uses_terminal} )" ) @@ -1844,7 +1845,7 @@ function(_ep_add_patch_command name) DEPENDEES update_disconnected DEPENDS \${patch_info_file} ${log} - ${uses_terminal} + ${uses_terminal} )" ) endif() diff --git a/Modules/FindPython/Support.cmake b/Modules/FindPython/Support.cmake index 0f9d56845..1386117c9 100644 --- a/Modules/FindPython/Support.cmake +++ b/Modules/FindPython/Support.cmake @@ -904,7 +904,7 @@ function (_PYTHON_VALIDATE_INTERPRETER) # interpreter does not exist anymore set_property (CACHE _${_PYTHON_PREFIX}_Interpreter_REASON_FAILURE PROPERTY VALUE "Cannot find the interpreter \"${_${_PYTHON_PREFIX}_EXECUTABLE}\"") set_property (CACHE _${_PYTHON_PREFIX}_EXECUTABLE PROPERTY VALUE "${_PYTHON_PREFIX}_EXECUTABLE-NOTFOUND") - if (WIN32) + if (WIN32 AND DEFINED CACHE{_${_PYTHON_PREFIX}_EXECUTABLE_DEBUG}) set_property (CACHE _${_PYTHON_PREFIX}_EXECUTABLE_DEBUG PROPERTY VALUE "${_PYTHON_PREFIX}_EXECUTABLE_DEBUG-NOTFOUND") endif() return() @@ -935,7 +935,7 @@ function (_PYTHON_VALIDATE_INTERPRETER) # interpreter is not usable set_property (CACHE _${_PYTHON_PREFIX}_Interpreter_REASON_FAILURE PROPERTY VALUE "Cannot use the interpreter \"${_${_PYTHON_PREFIX}_EXECUTABLE}\"") set_property (CACHE _${_PYTHON_PREFIX}_EXECUTABLE PROPERTY VALUE "${_PYTHON_PREFIX}_EXECUTABLE-NOTFOUND") - if (WIN32) + if (WIN32 AND DEFINED CACHE{_${_PYTHON_PREFIX}_EXECUTABLE_DEBUG}) set_property (CACHE _${_PYTHON_PREFIX}_EXECUTABLE_DEBUG PROPERTY VALUE "${_PYTHON_PREFIX}_EXECUTABLE_DEBUG-NOTFOUND") endif() return() @@ -963,6 +963,9 @@ function (_PYTHON_VALIDATE_INTERPRETER) # interpreter has wrong version set_property (CACHE _${_PYTHON_PREFIX}_Interpreter_REASON_FAILURE PROPERTY VALUE "Wrong version for the interpreter \"${_${_PYTHON_PREFIX}_EXECUTABLE}\"") set_property (CACHE _${_PYTHON_PREFIX}_EXECUTABLE PROPERTY VALUE "${_PYTHON_PREFIX}_EXECUTABLE-NOTFOUND") + if (WIN32 AND DEFINED CACHE{_${_PYTHON_PREFIX}_EXECUTABLE_DEBUG}) + set_property (CACHE _${_PYTHON_PREFIX}_EXECUTABLE_DEBUG PROPERTY VALUE "${_PYTHON_PREFIX}_EXECUTABLE_DEBUG-NOTFOUND") + endif() return() else() # check that version is OK @@ -972,6 +975,9 @@ function (_PYTHON_VALIDATE_INTERPRETER) OR NOT version VERSION_GREATER_EQUAL _PVI_VERSION) set_property (CACHE _${_PYTHON_PREFIX}_Interpreter_REASON_FAILURE PROPERTY VALUE "Wrong version for the interpreter \"${_${_PYTHON_PREFIX}_EXECUTABLE}\"") set_property (CACHE _${_PYTHON_PREFIX}_EXECUTABLE PROPERTY VALUE "${_PYTHON_PREFIX}_EXECUTABLE-NOTFOUND") + if (WIN32 AND DEFINED CACHE{_${_PYTHON_PREFIX}_EXECUTABLE_DEBUG}) + set_property (CACHE _${_PYTHON_PREFIX}_EXECUTABLE_DEBUG PROPERTY VALUE "${_PYTHON_PREFIX}_EXECUTABLE_DEBUG-NOTFOUND") + endif() return() endif() endif() @@ -984,6 +990,9 @@ function (_PYTHON_VALIDATE_INTERPRETER) # interpreter has invalid version set_property (CACHE _${_PYTHON_PREFIX}_Interpreter_REASON_FAILURE PROPERTY VALUE "Wrong version for the interpreter \"${_${_PYTHON_PREFIX}_EXECUTABLE}\"") set_property (CACHE _${_PYTHON_PREFIX}_EXECUTABLE PROPERTY VALUE "${_PYTHON_PREFIX}_EXECUTABLE-NOTFOUND") + if (WIN32 AND DEFINED CACHE{_${_PYTHON_PREFIX}_EXECUTABLE_DEBUG}) + set_property (CACHE _${_PYTHON_PREFIX}_EXECUTABLE_DEBUG PROPERTY VALUE "${_PYTHON_PREFIX}_EXECUTABLE_DEBUG-NOTFOUND") + endif() return() endif() endif() @@ -1006,6 +1015,9 @@ function (_PYTHON_VALIDATE_INTERPRETER) set_property (CACHE _${_PYTHON_PREFIX}_Interpreter_REASON_FAILURE PROPERTY VALUE "Wrong major version for the interpreter \"${_${_PYTHON_PREFIX}_EXECUTABLE}\"") endif() set_property (CACHE _${_PYTHON_PREFIX}_EXECUTABLE PROPERTY VALUE "${_PYTHON_PREFIX}_EXECUTABLE-NOTFOUND") + if (WIN32 AND DEFINED CACHE{_${_PYTHON_PREFIX}_EXECUTABLE_DEBUG}) + set_property (CACHE _${_PYTHON_PREFIX}_EXECUTABLE_DEBUG PROPERTY VALUE "${_PYTHON_PREFIX}_EXECUTABLE_DEBUG-NOTFOUND") + endif() return() endif() endif() @@ -1030,6 +1042,9 @@ function (_PYTHON_VALIDATE_INTERPRETER) set_property (CACHE _${_PYTHON_PREFIX}_Interpreter_REASON_FAILURE PROPERTY VALUE "Wrong architecture for the interpreter \"${_${_PYTHON_PREFIX}_EXECUTABLE}\"") endif() set_property (CACHE _${_PYTHON_PREFIX}_EXECUTABLE PROPERTY VALUE "${_PYTHON_PREFIX}_EXECUTABLE-NOTFOUND") + if (WIN32 AND DEFINED CACHE{_${_PYTHON_PREFIX}_EXECUTABLE_DEBUG}) + set_property (CACHE _${_PYTHON_PREFIX}_EXECUTABLE_DEBUG PROPERTY VALUE "${_PYTHON_PREFIX}_EXECUTABLE_DEBUG-NOTFOUND") + endif() return() endif() @@ -1056,6 +1071,9 @@ function (_PYTHON_VALIDATE_INTERPRETER) set_property (CACHE _${_PYTHON_PREFIX}_Interpreter_REASON_FAILURE PROPERTY VALUE "Wrong architecture for the interpreter \"${_${_PYTHON_PREFIX}_EXECUTABLE}\"") endif() set_property (CACHE _${_PYTHON_PREFIX}_EXECUTABLE PROPERTY VALUE "${_PYTHON_PREFIX}_EXECUTABLE-NOTFOUND") + if (WIN32 AND DEFINED CACHE{_${_PYTHON_PREFIX}_EXECUTABLE_DEBUG}) + set_property (CACHE _${_PYTHON_PREFIX}_EXECUTABLE_DEBUG PROPERTY VALUE "${_PYTHON_PREFIX}_EXECUTABLE_DEBUG-NOTFOUND") + endif() return() endif() endif() diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 50073bc71..804363f53 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 30) -set(CMake_VERSION_PATCH 1) +set(CMake_VERSION_PATCH 2) #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 [==[cd386f6425 CMake 3.30.1]==]) + set(git_info [==[d88682dff6 CMake 3.30.2]==]) # 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]* " diff --git a/Source/CPack/cmCPackExternalGenerator.cxx b/Source/CPack/cmCPackExternalGenerator.cxx index 52eacaa05..76cb876b9 100644 --- a/Source/CPack/cmCPackExternalGenerator.cxx +++ b/Source/CPack/cmCPackExternalGenerator.cxx @@ -15,6 +15,7 @@ #include "cmCPackComponentGroup.h" #include "cmCPackLog.h" +#include "cmGeneratedFileStream.h" #include "cmList.h" #include "cmMakefile.h" #include "cmSystemTools.h" @@ -48,17 +49,19 @@ int cmCPackExternalGenerator::PackageFiles() filename = this->packageFileNames[0]; } - cmsys::ofstream fout(filename.c_str()); - std::unique_ptr jout(builder.newStreamWriter()); + { + cmGeneratedFileStream fout(filename); + std::unique_ptr jout(builder.newStreamWriter()); - Json::Value root(Json::objectValue); + Json::Value root(Json::objectValue); - if (!this->Generator->WriteToJSON(root)) { - return 0; - } + if (!this->Generator->WriteToJSON(root)) { + return 0; + } - if (jout->write(root, &fout)) { - return 0; + if (jout->write(root, &fout)) { + return 0; + } } cmValue packageScript = this->GetOption("CPACK_EXTERNAL_PACKAGE_SCRIPT"); diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 41a3f1004..730a7b413 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -307,6 +307,7 @@ if(BUILD_TESTING) execute_process( COMMAND xcodebuild -version OUTPUT_VARIABLE _version + ERROR_VARIABLE _stderr RESULT_VARIABLE _failed ) if(NOT _failed AND _version MATCHES "^Xcode ([0-9]+(\\.[0-9]+)*)") diff --git a/Tests/RunCMake/Swift/SwiftLibraryModuleCommand-check-stdout-darwin.txt b/Tests/RunCMake/Swift/SwiftLibraryModuleCommand-check-stdout-darwin.txt new file mode 100644 index 000000000..20c656d60 --- /dev/null +++ b/Tests/RunCMake/Swift/SwiftLibraryModuleCommand-check-stdout-darwin.txt @@ -0,0 +1,13 @@ +.*swiftc(.exe)? [^ +]* -parse-as-library -static -emit-module [^ +]* -module-name StaticLibrary [^ +]* +.*swiftc(.exe)? [^ +]* -parse-as-library -emit-module [^ +]* -module-name DynamicLibrary [^ +]* +.*swiftc(.exe)? [^ +]* -emit-library [^ +]* -Xlinker -install_name -Xlinker @rpath/libDynamicLibrary.dylib -o ([A-Za-z]+/)?libDynamicLibrary.dylib [^ +]* +.*swiftc(.exe)? -j [0-9]+ -num-threads [0-9]+ -c -module-name Executable diff --git a/Tests/RunCMake/Swift/SwiftLibraryModuleCommand-check-stdout-windows.txt b/Tests/RunCMake/Swift/SwiftLibraryModuleCommand-check-stdout-windows.txt new file mode 100644 index 000000000..220a80560 --- /dev/null +++ b/Tests/RunCMake/Swift/SwiftLibraryModuleCommand-check-stdout-windows.txt @@ -0,0 +1,13 @@ +.*swiftc(.exe)? [^ +]* -parse-as-library -static -emit-module [^ +]* -module-name StaticLibrary [^ +]* +.*swiftc(.exe)? [^ +]* -parse-as-library -emit-module [^ +]* -module-name DynamicLibrary [^ +]* +.*swiftc(.exe)? [^ +]* -emit-library [^ +]* -Xlinker -implib:DynamicLibrary.lib +-o ([A-Za-z]+/)?DynamicLibrary.dll [^ +]* +.*swiftc(.exe)? -j [0-9]+ -num-threads [0-9]+ -c -module-name Executable diff --git a/Tests/RunCMake/Swift/SwiftLibraryModuleCommand-check-stdout.txt b/Tests/RunCMake/Swift/SwiftLibraryModuleCommand-check-stdout.txt index 7e7fc7dee..c3530aab5 100644 --- a/Tests/RunCMake/Swift/SwiftLibraryModuleCommand-check-stdout.txt +++ b/Tests/RunCMake/Swift/SwiftLibraryModuleCommand-check-stdout.txt @@ -1,5 +1,13 @@ -.*swiftc(.exe)? .* -parse-as-library -static -emit-module .* -module-name StaticLibrary [^ +.*swiftc(.exe)? [^ +]* -parse-as-library -static -emit-module [^ +]* -module-name StaticLibrary [^ ]* -.*swiftc(.exe)? .* -parse-as-library -emit-module .* -module-name DynamicLibrary [^ +.*swiftc(.exe)? [^ +]* -parse-as-library -emit-module [^ +]* -module-name DynamicLibrary [^ ]* -.*swiftc(.exe)? .* -j [0-9]* -num-threads [0-9]* -c -module-name Executable +.*swiftc(.exe)? [^ +]* -emit-library [^ +]* -Xlinker -soname -Xlinker libDynamicLibrary.so -o ([A-Za-z]+/)?libDynamicLibrary.so [^ +]* +.*swiftc(.exe)? -j [0-9]+ -num-threads [0-9]+ -c -module-name Executable diff --git a/Tests/RunCMake/Swift/SwiftLibraryModuleCommand.cmake b/Tests/RunCMake/Swift/SwiftLibraryModuleCommand.cmake index af4aede0b..700edf0bb 100644 --- a/Tests/RunCMake/Swift/SwiftLibraryModuleCommand.cmake +++ b/Tests/RunCMake/Swift/SwiftLibraryModuleCommand.cmake @@ -6,6 +6,7 @@ enable_language(Swift) add_library(StaticLibrary STATIC L.swift) add_library(DynamicLibrary SHARED L.swift) +set_target_properties(DynamicLibrary PROPERTIES INSTALL_NAME_DIR "@rpath") add_executable(Executable E.swift) add_dependencies(DynamicLibrary StaticLibrary) diff --git a/Tests/RunCMake/XcodeProject/ArchsStandard-stdout.txt b/Tests/RunCMake/XcodeProject/ArchsStandard-stdout.txt new file mode 100644 index 000000000..460b33c45 --- /dev/null +++ b/Tests/RunCMake/XcodeProject/ArchsStandard-stdout.txt @@ -0,0 +1 @@ +-- Detecting C compiler ABI info - done diff --git a/Tests/RunCMake/XcodeProject/ArchsStandard.cmake b/Tests/RunCMake/XcodeProject/ArchsStandard.cmake new file mode 100644 index 000000000..56d9e644d --- /dev/null +++ b/Tests/RunCMake/XcodeProject/ArchsStandard.cmake @@ -0,0 +1,4 @@ +if(NOT CMAKE_OSX_ARCHITECTURES STREQUAL "$(ARCHS_STANDARD)") + message(FATAL_ERROR "CMAKE_OSX_ARCHITECTURES is not $(ARCHS_STANDARD)") +endif() +enable_language(C) diff --git a/Tests/RunCMake/XcodeProject/RunCMakeTest.cmake b/Tests/RunCMake/XcodeProject/RunCMakeTest.cmake index c124950ea..5e2266633 100644 --- a/Tests/RunCMake/XcodeProject/RunCMakeTest.cmake +++ b/Tests/RunCMake/XcodeProject/RunCMakeTest.cmake @@ -9,6 +9,8 @@ function(RunClean) endfunction() RunClean() +run_cmake_with_options(ArchsStandard "-DCMAKE_OSX_ARCHITECTURES=$(ARCHS_STANDARD)") + run_cmake(ExplicitCMakeLists) run_cmake(ImplicitCMakeLists) run_cmake(InterfaceLibSources) diff --git a/Tests/RunCMake/file-DOWNLOAD/bad-hostname-stdout.txt b/Tests/RunCMake/file-DOWNLOAD/bad-hostname-stdout.txt index 12278e0fb..4aa7e93a9 100644 --- a/Tests/RunCMake/file-DOWNLOAD/bad-hostname-stdout.txt +++ b/Tests/RunCMake/file-DOWNLOAD/bad-hostname-stdout.txt @@ -1 +1 @@ --- status='6;"Couldn't resolve host name"' +-- status='6;"(Could not resolve hostname|Couldn't resolve host name)"' diff --git a/bootstrap b/bootstrap index 49b91d578..88878fed1 100755 --- a/bootstrap +++ b/bootstrap @@ -1811,7 +1811,7 @@ else cmake_c_flags="${cmake_c_flags} ${use_uv_flags}" cmake_cxx_flags="${cmake_cxx_flags} ${use_uv_flags}" else - use_librhash_ldflags="-luv" + use_uv_ldflags="-luv" fi libs="${libs} ${use_uv_ldflags}" fi @@ -1838,7 +1838,7 @@ else use_jsoncpp_ldflags="`pkg-config --libs jsoncpp`" cmake_cxx_flags="${cmake_cxx_flags} ${use_jsoncpp_flags}" else - use_librhash_ldflags="-ljsoncpp" + use_jsoncpp_ldflags="-ljsoncpp" fi libs="${libs} ${use_jsoncpp_ldflags}" fi