Merge topic 'iwyu-xcode' 67c75064d1 Source: Fix IWYU warnings in Xcode generators Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !6729
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b9b020b..7f38659 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml
@@ -742,6 +742,8 @@ - build:windows-vs2022-x64-ninja needs: - build:windows-vs2022-x64-ninja + variables: + CMAKE_CI_JOB_NIGHTLY_NINJA: "true" test:windows-vs2022-x64: extends:
diff --git a/.gitlab/ci/ninja-nightly.ps1 b/.gitlab/ci/ninja-nightly.ps1 new file mode 100755 index 0000000..071b077 --- /dev/null +++ b/.gitlab/ci/ninja-nightly.ps1
@@ -0,0 +1,9 @@ +$erroractionpreference = "stop" + +Invoke-Expression -Command .gitlab/ci/vcvarsall.ps1 +Set-Location -Path ".gitlab" +git clone https://github.com/ninja-build/ninja.git ninja-src +cmake -S ninja-src -B ninja-src/build -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release +cmake --build ninja-src/build --target ninja +Move-Item -Path "ninja-src\build\ninja.exe" -Destination . -Force +Remove-Item "ninja-src" -Recurse -Force
diff --git a/.gitlab/ci/ninja.ps1 b/.gitlab/ci/ninja.ps1 index 4c5333a..47bb056 100755 --- a/.gitlab/ci/ninja.ps1 +++ b/.gitlab/ci/ninja.ps1
@@ -1,5 +1,10 @@ $erroractionpreference = "stop" +if ("$env:CMAKE_CI_JOB_NIGHTLY_NINJA" -eq "true" -And "$env:CMAKE_CI_NIGHTLY" -eq "true") { + & .gitlab/ci/ninja-nightly.ps1 + exit $LASTEXITCODE +} + $version = "1.10.2" $sha256sum = "BBDE850D247D2737C5764C927D1071CBB1F1957DCABDA4A130FA8547C12C695F" $filename = "ninja-win"
diff --git a/.gitlab/ci/vcvarsall.ps1 b/.gitlab/ci/vcvarsall.ps1 index 57d3386..f91b100 100755 --- a/.gitlab/ci/vcvarsall.ps1 +++ b/.gitlab/ci/vcvarsall.ps1
@@ -1,6 +1,6 @@ $erroractionpreference = "stop" -cmd /c "`"$env:VCVARSALL`" $VCVARSPLATFORM -vcvars_ver=$VCVARSVERSION & set" | +cmd /c "`"$env:VCVARSALL`" $env:VCVARSPLATFORM -vcvars_ver=$env:VCVARSVERSION & set" | foreach { if ($_ -match "=") { $v = $_.split("=")
diff --git a/.gitlab/os-windows.yml b/.gitlab/os-windows.yml index 4ecc120..7c578aa 100644 --- a/.gitlab/os-windows.yml +++ b/.gitlab/os-windows.yml
@@ -151,13 +151,14 @@ ## Windows-specific scripts .before_script_windows: &before_script_windows - - Invoke-Expression -Command .gitlab/ci/wix.ps1 - - Invoke-Expression -Command .gitlab/ci/cmake.ps1 - - Invoke-Expression -Command .gitlab/ci/ninja.ps1 - $pwdpath = $pwd.Path + - powershell -File ".gitlab/ci/wix.ps1" - Set-Item -Force -Path "env:WIX" -Value "$pwdpath\.gitlab\wix" + - powershell -File ".gitlab/ci/cmake.ps1" + - Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab\cmake\bin;$env:PATH" + - powershell -File ".gitlab/ci/ninja.ps1" + - Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab;$env:PATH" - (& "$env:WIX\bin\light.exe" -help) | Select -First 1 - - Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab;$pwdpath\.gitlab\cmake\bin;$env:PATH" - cmake --version - ninja --version - cmake -P .gitlab/ci/download_qt.cmake
diff --git a/Modules/GoogleTest.cmake b/Modules/GoogleTest.cmake index efc33e3..f5f4f02 100644 --- a/Modules/GoogleTest.cmake +++ b/Modules/GoogleTest.cmake
@@ -516,7 +516,8 @@ string(CONCAT ctest_include_content "if(EXISTS \"$<TARGET_FILE:${TARGET}>\")" "\n" " if(NOT EXISTS \"${ctest_tests_file}\" OR" "\n" - " NOT \"${ctest_tests_file}\" IS_NEWER_THAN \"$<TARGET_FILE:${TARGET}>\")" "\n" + " NOT \"${ctest_tests_file}\" IS_NEWER_THAN \"$<TARGET_FILE:${TARGET}>\" OR\n" + " NOT \"${ctest_tests_file}\" IS_NEWER_THAN \"\${CMAKE_CURRENT_LIST_FILE}\")\n" " include(\"${_GOOGLETEST_DISCOVER_TESTS_SCRIPT}\")" "\n" " gtest_discover_tests_impl(" "\n" " TEST_EXECUTABLE" " [==[" "$<TARGET_FILE:${TARGET}>" "]==]" "\n"
diff --git a/Modules/Platform/Windows-Clang.cmake b/Modules/Platform/Windows-Clang.cmake index 1c32018..c4d6fd8 100644 --- a/Modules/Platform/Windows-Clang.cmake +++ b/Modules/Platform/Windows-Clang.cmake
@@ -56,7 +56,12 @@ set(CMAKE_${lang}_USE_RESPONSE_FILE_FOR_LIBRARIES 1) set(CMAKE_${lang}_USE_RESPONSE_FILE_FOR_INCLUDES 1) - set(CMAKE_${lang}_COMPILE_OPTIONS_IPO "-flto") + if(CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 3.9) + set(CMAKE_${lang}_COMPILE_OPTIONS_IPO "-flto=thin") + else() + set(CMAKE_${lang}_COMPILE_OPTIONS_IPO "-flto") + endif() + set(_CMAKE_${lang}_IPO_SUPPORTED_BY_CMAKE YES) set(_CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER YES) set(CMAKE_${lang}_ARCHIVE_CREATE_IPO "<CMAKE_AR> qc <TARGET> <LINK_FLAGS> <OBJECTS>")
diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index fef5691..5c01ca0 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 22) -set(CMake_VERSION_PATCH 20211115) +set(CMake_VERSION_PATCH 20211117) #set(CMake_VERSION_RC 0) set(CMake_VERSION_IS_DIRTY 0)
diff --git a/Tests/CMakeCommands/target_link_directories/CMakeLists.txt b/Tests/CMakeCommands/target_link_directories/CMakeLists.txt index bc7b9b2..a5f69f3 100644 --- a/Tests/CMakeCommands/target_link_directories/CMakeLists.txt +++ b/Tests/CMakeCommands/target_link_directories/CMakeLists.txt
@@ -10,31 +10,31 @@ add_library(target_link_directories_2 SHARED EXCLUDE_FROM_ALL LinkDirectoriesLib.c) target_link_directories(target_link_directories_2 PRIVATE /private/dir INTERFACE /interface/dir) get_target_property(result target_link_directories_2 LINK_DIRECTORIES) -if (NOT result MATCHES "/private/dir") +if (NOT result STREQUAL "/private/dir") message(SEND_ERROR "${result} target_link_directories not populated the LINK_DIRECTORIES target property") endif() get_target_property(result target_link_directories_2 INTERFACE_LINK_DIRECTORIES) -if (NOT result MATCHES "/interface/dir") +if (NOT result STREQUAL "/interface/dir") message(SEND_ERROR "target_link_directories not populated the INTERFACE_LINK_DIRECTORIES target property of shared library") endif() add_library(target_link_directories_3 STATIC EXCLUDE_FROM_ALL LinkDirectoriesLib.c) target_link_directories(target_link_directories_3 INTERFACE /interface/dir) get_target_property(result target_link_directories_3 INTERFACE_LINK_DIRECTORIES) -if (NOT result MATCHES "/interface/dir") +if (NOT result STREQUAL "/interface/dir") message(SEND_ERROR "target_link_directories not populated the INTERFACE_LINK_DIRECTORIES target property of static library") endif() add_library(target_link_directories_4 SHARED EXCLUDE_FROM_ALL LinkDirectoriesLib.c) target_link_directories(target_link_directories_4 PRIVATE relative/dir) get_target_property(result target_link_directories_4 LINK_DIRECTORIES) -if (NOT result MATCHES "${CMAKE_CURRENT_SOURCE_DIR}/relative/dir") +if (NOT result STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}/relative/dir") message(SEND_ERROR "target_link_directories not populated the LINK_DIRECTORIES with relative path") endif() add_subdirectory(subdir) target_link_directories(target_link_directories_5 PRIVATE relative/dir) get_target_property(result target_link_directories_5 LINK_DIRECTORIES) -if (NOT result MATCHES "${CMAKE_CURRENT_SOURCE_DIR}/relative/dir") +if (NOT result STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}/relative/dir") message(SEND_ERROR "target_link_directories not populated the LINK_DIRECTORIES with relative path") endif()
diff --git a/Tests/RunCMake/GoogleTest/GoogleTest-discovery-arg-change-basic-stdout.txt b/Tests/RunCMake/GoogleTest/GoogleTest-discovery-arg-change-basic-stdout.txt new file mode 100644 index 0000000..385159d --- /dev/null +++ b/Tests/RunCMake/GoogleTest/GoogleTest-discovery-arg-change-basic-stdout.txt
@@ -0,0 +1,7 @@ +Test project .*/Tests/RunCMake/GoogleTest/GoogleTest-discovery-arg-change + Test #1: basic\.case_foo + Test #2: basic\.case_bar + Test #3: basic\.disabled_case \(Disabled\) + Test #4: basic\.DISABLEDnot_really_case + +Total Tests: 4
diff --git a/Tests/RunCMake/GoogleTest/GoogleTest-discovery-arg-change-typed-stdout.txt b/Tests/RunCMake/GoogleTest/GoogleTest-discovery-arg-change-typed-stdout.txt new file mode 100644 index 0000000..095fdcd --- /dev/null +++ b/Tests/RunCMake/GoogleTest/GoogleTest-discovery-arg-change-typed-stdout.txt
@@ -0,0 +1,5 @@ +Test project .*/Tests/RunCMake/GoogleTest/GoogleTest-discovery-arg-change + Test #1: typed/short\.case + Test #2: typed/float\.case + +Total Tests: 2
diff --git a/Tests/RunCMake/GoogleTest/GoogleTest-skip-test-stdout.txt b/Tests/RunCMake/GoogleTest/GoogleTest-skip-test-stdout.txt new file mode 100644 index 0000000..d06cd0a --- /dev/null +++ b/Tests/RunCMake/GoogleTest/GoogleTest-skip-test-stdout.txt
@@ -0,0 +1,10 @@ +Test project .* + Start 36: skip_test.test1 +1/1 Test #36: skip_test.test1 \.+\*\*\*Skipped +[0-9.]+ sec + +100% tests passed, 0 tests failed out of 1 + +Total Test time \(real\) = +[0-9.]+ sec + +The following tests did not run: +.*36 - skip_test\.test1 \(Skipped\)
diff --git a/Tests/RunCMake/GoogleTest/GoogleTest-skip-timeout-stdout.txt b/Tests/RunCMake/GoogleTest/GoogleTest-skip-timeout-stdout.txt deleted file mode 100644 index eeecb6a..0000000 --- a/Tests/RunCMake/GoogleTest/GoogleTest-skip-timeout-stdout.txt +++ /dev/null
@@ -1,10 +0,0 @@ -Test project .* - Start 20: skip_test.test1 -1/1 Test #20: skip_test.test1 \.+\*\*\*Skipped +[0-9.]+ sec - -100% tests passed, 0 tests failed out of 1 - -Total Test time \(real\) = +[0-9.]+ sec - -The following tests did not run: -.*20 - skip_test\.test1 \(Skipped\)
diff --git a/Tests/RunCMake/GoogleTest/GoogleTestDiscoveryArgChange.cmake b/Tests/RunCMake/GoogleTest/GoogleTestDiscoveryArgChange.cmake new file mode 100644 index 0000000..e4e13c5 --- /dev/null +++ b/Tests/RunCMake/GoogleTest/GoogleTestDiscoveryArgChange.cmake
@@ -0,0 +1,14 @@ +enable_language(CXX) +include(GoogleTest) + +enable_testing() + +include(xcode_sign_adhoc.cmake) + +add_executable(fake_gtest fake_gtest.cpp) +xcode_sign_adhoc(fake_gtest) + +gtest_discover_tests( + fake_gtest + TEST_FILTER "${TEST_FILTER}*" +)
diff --git a/Tests/RunCMake/GoogleTest/RunCMakeTest.cmake b/Tests/RunCMake/GoogleTest/RunCMakeTest.cmake index c5c5925..33a4b43 100644 --- a/Tests/RunCMake/GoogleTest/RunCMakeTest.cmake +++ b/Tests/RunCMake/GoogleTest/RunCMakeTest.cmake
@@ -1,5 +1,12 @@ include(RunCMake) +if(RunCMake_GENERATOR STREQUAL "Borland Makefiles" OR + RunCMake_GENERATOR STREQUAL "Watcom WMake") + set(fs_delay 3) +else() + set(fs_delay 1.125) +endif() + function(run_GoogleTest DISCOVERY_MODE) # Use a single build tree for a few tests without cleaning. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/GoogleTest-build) @@ -153,6 +160,46 @@ ) endfunction() +function(run_GoogleTest_discovery_arg_change DISCOVERY_MODE) + # Use a single build tree for a few tests without cleaning. + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/GoogleTest-discovery-arg-change) + set(RunCMake_TEST_NO_CLEAN 1) + file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") + file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") + + run_cmake_with_options(GoogleTestDiscoveryArgChange + -DCMAKE_GTEST_DISCOVER_TESTS_DISCOVERY_MODE=${DISCOVERY_MODE} + -DTEST_FILTER=basic + ) + run_cmake_command(GoogleTest-discovery-arg-change-build + ${CMAKE_COMMAND} + --build . + --config Release + --target fake_gtest + ) + run_cmake_command(GoogleTest-discovery-arg-change-basic + ${CMAKE_CTEST_COMMAND} + -C Release + -N + ) + execute_process(COMMAND ${CMAKE_COMMAND} -E sleep ${fs_delay}) # handle 1s resolution + run_cmake_with_options(GoogleTestDiscoveryArgChange + -DCMAKE_GTEST_DISCOVER_TESTS_DISCOVERY_MODE=${DISCOVERY_MODE} + -DTEST_FILTER=typed + ) + run_cmake_command(GoogleTest-discovery-arg-change-build + ${CMAKE_COMMAND} + --build . + --config Release + --target fake_gtest + ) + run_cmake_command(GoogleTest-discovery-arg-change-typed + ${CMAKE_CTEST_COMMAND} + -C Release + -N + ) +endfunction() + function(run_GoogleTest_discovery_multi_config) # Use a single build tree for a few tests without cleaning. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/GoogleTest-discovery-multi-config) @@ -195,6 +242,10 @@ run_GoogleTestXML(${DISCOVERY_MODE}) message("Testing ${DISCOVERY_MODE} discovery mode via DISCOVERY_MODE option...") run_GoogleTest_discovery_timeout(${DISCOVERY_MODE}) + if(# VS 9 does not rebuild if POST_BUILD command changes. + NOT "${DISCOVERY_MODE};${RunCMake_GENERATOR}" MATCHES "^POST_BUILD;Visual Studio 9") + run_GoogleTest_discovery_arg_change(${DISCOVERY_MODE}) + endif() endforeach() if(RunCMake_GENERATOR_IS_MULTI_CONFIG)