Browse Source

Merge topic 'file-CONFIGURE_DEPENDS-verify-CMP0009' into release-3.17

818ec34bdd file: GLOB_RECURSE VerifyGlobs.cmake should have CMP0009 set to new
b620dc566d file: Fix GLOB_RECURSE LIST_DIRECTORIES documentation regarding CMP0009
715f90bdd9 Tests: Perform minor cleanups in RunCMake.file test

Acked-by: Kitware Robot <[email protected]>
Acked-by: Kyle Edwards <[email protected]>
Merge-request: !4342
Brad King 6 years ago
parent
commit
10b834a3eb

+ 1 - 1
Help/command/file.rst

@@ -540,7 +540,7 @@ are only traversed if ``FOLLOW_SYMLINKS`` is given or policy
 By default ``GLOB_RECURSE`` omits directories from result list - setting
 ``LIST_DIRECTORIES`` to true adds directories to result list.
 If ``FOLLOW_SYMLINKS`` is given or policy :policy:`CMP0009` is not set to
-``OLD`` then ``LIST_DIRECTORIES`` treats symlinks as directories.
+``NEW`` then ``LIST_DIRECTORIES`` treats symlinks as directories.
 
 Examples of recursive globbing include::
 

+ 2 - 0
Source/cmGlobVerificationManager.cxx

@@ -38,6 +38,8 @@ bool cmGlobVerificationManager::SaveVerificationScript(const std::string& path)
                    << cmVersion::GetMajorVersion() << "."
                    << cmVersion::GetMinorVersion() << "\n";
 
+  verifyScriptFile << "cmake_policy(SET CMP0009 NEW)\n";
+
   for (auto const& i : this->Cache) {
     CacheEntryKey k = std::get<0>(i);
     CacheEntryValue v = std::get<1>(i);

+ 1 - 0
Tests/RunCMake/file/GLOB-CONFIGURE_DEPENDS-CMP0009-RerunCMake-build-stdout.txt

@@ -0,0 +1 @@
+test2/test_folder_symlink

+ 1 - 0
Tests/RunCMake/file/GLOB-CONFIGURE_DEPENDS-CMP0009-RerunCMake-rebuild-stdout.txt

@@ -0,0 +1 @@
+test2/test_folder_symlink

+ 1 - 0
Tests/RunCMake/file/GLOB-CONFIGURE_DEPENDS-CMP0009-RerunCMake-stdout.txt

@@ -0,0 +1 @@
+.*Running CMake on GLOB-CONFIGURE_DEPENDS-CMP0009-RerunCMake

+ 10 - 0
Tests/RunCMake/file/GLOB-CONFIGURE_DEPENDS-CMP0009-RerunCMake.cmake

@@ -0,0 +1,10 @@
+cmake_policy(SET CMP0009 NEW)
+message(STATUS "Running CMake on GLOB-CONFIGURE_DEPENDS-CMP0009-RerunCMake")
+file(GLOB_RECURSE
+  CONTENT_LIST
+  CONFIGURE_DEPENDS
+  LIST_DIRECTORIES false
+  RELATIVE "${CMAKE_CURRENT_BINARY_DIR}"
+  "${CMAKE_CURRENT_BINARY_DIR}/test2/*"
+  )
+add_custom_target(CONTENT_ECHO ALL ${CMAKE_COMMAND} -E echo ${CONTENT_LIST})

+ 17 - 2
Tests/RunCMake/file/RunCMakeTest.cmake

@@ -111,7 +111,7 @@ else()
   set(tf_1  "${RunCMake_TEST_BINARY_DIR}/test/1.txt")
   file(WRITE "${tf_1}" "1")
 
-  message(STATUS "GLOB-RerunCMake: first configuration...")
+  message(STATUS "GLOB-CONFIGURE_DEPENDS-RerunCMake: first configuration...")
   run_cmake(GLOB-CONFIGURE_DEPENDS-RerunCMake)
   run_cmake_command(GLOB-CONFIGURE_DEPENDS-RerunCMake-build ${CMAKE_COMMAND} --build .)
 
@@ -125,10 +125,25 @@ else()
 
   execute_process(COMMAND ${CMAKE_COMMAND} -E sleep ${fs_delay})
   message(STATUS "GLOB-CONFIGURE_DEPENDS-RerunCMake: remove first test file...")
-  file(REMOVE "${RunCMake_TEST_BINARY_DIR}/test/1.txt")
+  file(REMOVE "${tf_1}")
   run_cmake_command(GLOB-CONFIGURE_DEPENDS-RerunCMake-rebuild_second ${CMAKE_COMMAND} --build .)
   run_cmake_command(GLOB-CONFIGURE_DEPENDS-RerunCMake-nowork ${CMAKE_COMMAND} --build .)
 
+  if(NOT WIN32 OR CYGWIN)
+    message(STATUS "GLOB-CONFIGURE_DEPENDS-CMP0009-RerunCMake: link the first test directory into a new directory...")
+    file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}/test2")
+    execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink "${RunCMake_TEST_BINARY_DIR}/test" "${RunCMake_TEST_BINARY_DIR}/test2/test_folder_symlink")
+
+    message(STATUS "GLOB-CONFIGURE_DEPENDS-CMP0009-RerunCMake: first configuration...")
+    run_cmake(GLOB-CONFIGURE_DEPENDS-CMP0009-RerunCMake)
+    run_cmake_command(GLOB-CONFIGURE_DEPENDS-CMP0009-RerunCMake-build ${CMAKE_COMMAND} --build .)
+
+    message(STATUS "GLOB-CONFIGURE_DEPENDS-CMP0009-RerunCMake: add another file in the linked directory...")
+    set(tf_3  "${RunCMake_TEST_BINARY_DIR}/test/3.txt")
+    file(WRITE "${tf_3}" "3")
+    run_cmake_command(GLOB-CONFIGURE_DEPENDS-CMP0009-RerunCMake-rebuild ${CMAKE_COMMAND} --build .)
+  endif()
+
   unset(RunCMake_TEST_BINARY_DIR)
   unset(RunCMake_TEST_NO_CLEAN)
   unset(RunCMake_DEFAULT_stderr)