Ver Fonte

Merge topic 'cmake-e-rm'

2d0100fac7 replace remove and remove_directory with rm in tests
5239fc5c75 cmake -E: Add rm with improved semantics over remove and remove_directory

Acked-by: Kitware Robot <[email protected]>
Merge-request: !3949
Kyle Edwards há 6 anos atrás
pai
commit
5695b0464b
70 ficheiros alterados com 287 adições e 54 exclusões
  1. 20 4
      Help/manual/cmake.1.rst
  2. 12 0
      Help/release/dev/command_rm.rst
  3. 1 1
      Modules/CMakeAddFortranSubdirectory.cmake
  4. 3 3
      Modules/ExternalProject.cmake
  5. 1 1
      Modules/FindCUDA.cmake
  6. 3 3
      Modules/FindCUDA/run_nvcc.cmake
  7. 1 1
      Modules/Platform/Generic-SDCC-C.cmake
  8. 1 1
      Modules/Platform/Windows-GNU.cmake
  9. 1 1
      Source/cmLocalUnixMakefileGenerator3.cxx
  10. 1 1
      Source/cmNinjaNormalTargetGenerator.cxx
  11. 82 10
      Source/cmcmd.cxx
  12. 3 3
      Tests/CMakeTestMultipleConfigures/RunCMake.cmake
  13. 1 1
      Tests/CPackComponentsDEB/CMakeLists.txt
  14. 1 1
      Tests/Complex/CMakeLists.txt
  15. 1 1
      Tests/Complex/Library/CMakeLists.txt
  16. 1 1
      Tests/ComplexOneConfig/CMakeLists.txt
  17. 1 1
      Tests/ComplexOneConfig/Library/CMakeLists.txt
  18. 2 2
      Tests/CustomCommand/CMakeLists.txt
  19. 1 1
      Tests/ExportImport/CMakeLists.txt
  20. 2 2
      Tests/FortranOnly/CMakeLists.txt
  21. 1 1
      Tests/JavaExportImport/CMakeLists.txt
  22. 1 1
      Tests/LinkDirectory/CMakeLists.txt
  23. 1 1
      Tests/MacRuntimePath/CMakeLists.txt
  24. 1 1
      Tests/RunCMake/CMakeLists.txt
  25. 1 1
      Tests/RunCMake/CTestResourceAllocation/ResourceCommon.cmake
  26. 1 0
      Tests/RunCMake/CommandLine/E_rm_bad_argument-result.txt
  27. 1 0
      Tests/RunCMake/CommandLine/E_rm_bad_argument-stderr.txt
  28. 3 0
      Tests/RunCMake/CommandLine/E_rm_directory_link_existing-check.cmake
  29. 1 0
      Tests/RunCMake/CommandLine/E_rm_directory_link_existing-result.txt
  30. 1 0
      Tests/RunCMake/CommandLine/E_rm_empty_file_specified-stderr.txt
  31. 8 0
      Tests/RunCMake/CommandLine/E_rm_empty_file_specified.cmake
  32. 3 0
      Tests/RunCMake/CommandLine/E_rm_file_force_existing-check.cmake
  33. 1 0
      Tests/RunCMake/CommandLine/E_rm_file_force_existing-result.txt
  34. 1 0
      Tests/RunCMake/CommandLine/E_rm_file_force_non_existing-result.txt
  35. 3 0
      Tests/RunCMake/CommandLine/E_rm_file_link_existing-check.cmake
  36. 1 0
      Tests/RunCMake/CommandLine/E_rm_file_link_existing-result.txt
  37. 1 0
      Tests/RunCMake/CommandLine/E_rm_file_link_non_existing-result.txt
  38. 3 0
      Tests/RunCMake/CommandLine/E_rm_file_non_force_existing-check.cmake
  39. 1 0
      Tests/RunCMake/CommandLine/E_rm_file_non_force_existing-result.txt
  40. 1 0
      Tests/RunCMake/CommandLine/E_rm_file_non_force_non_existing-result.txt
  41. 1 0
      Tests/RunCMake/CommandLine/E_rm_file_non_force_non_existing-stderr.txt
  42. 3 0
      Tests/RunCMake/CommandLine/E_rm_file_recursive_existing-check.cmake
  43. 1 0
      Tests/RunCMake/CommandLine/E_rm_file_recursive_existing-result.txt
  44. 1 0
      Tests/RunCMake/CommandLine/E_rm_file_recursive_non_existing-result.txt
  45. 1 0
      Tests/RunCMake/CommandLine/E_rm_file_recursive_non_existing-stderr.txt
  46. 3 0
      Tests/RunCMake/CommandLine/E_rm_force_recursive_directory_with_files-check.cmake
  47. 1 0
      Tests/RunCMake/CommandLine/E_rm_force_recursive_directory_with_files-result.txt
  48. 1 0
      Tests/RunCMake/CommandLine/E_rm_force_recursive_non_existing_file-result.txt
  49. 1 0
      Tests/RunCMake/CommandLine/E_rm_no_file_specified-result.txt
  50. 1 0
      Tests/RunCMake/CommandLine/E_rm_no_file_specified-stderr.txt
  51. 3 0
      Tests/RunCMake/CommandLine/E_rm_non_recursive_directory-two-directories-check.cmake
  52. 1 0
      Tests/RunCMake/CommandLine/E_rm_non_recursive_directory-two-directories-result.txt
  53. 2 0
      Tests/RunCMake/CommandLine/E_rm_non_recursive_directory-two-directories-stderr.txt
  54. 3 0
      Tests/RunCMake/CommandLine/E_rm_recursive_directory-two-directories-check.cmake
  55. 1 0
      Tests/RunCMake/CommandLine/E_rm_recursive_directory-two-directories-result.txt
  56. 3 0
      Tests/RunCMake/CommandLine/E_rm_recursive_directory_link_existing-check.cmake
  57. 1 0
      Tests/RunCMake/CommandLine/E_rm_recursive_directory_link_existing-result.txt
  58. 3 0
      Tests/RunCMake/CommandLine/E_rm_recursive_file_link_existing-check.cmake
  59. 1 0
      Tests/RunCMake/CommandLine/E_rm_recursive_file_link_existing-result.txt
  60. 1 0
      Tests/RunCMake/CommandLine/E_rm_recursive_file_link_non_existing-result.txt
  61. 70 0
      Tests/RunCMake/CommandLine/RunCMakeTest.cmake
  62. 1 1
      Tests/RunCMake/ParseImplicitData/mingw.org-C-GNU-4.9.3.input
  63. 1 1
      Tests/RunCMake/ParseImplicitData/mingw.org-CXX-GNU-4.9.3.input
  64. 1 1
      Tests/StagingPrefix/CMakeLists.txt
  65. 1 1
      Tests/SubDir/Examples/example1/CMakeLists.txt
  66. 1 1
      Tests/SubDirSpaces/Some Examples/example1/CMakeLists.txt
  67. 2 2
      Tests/VSMidl/CMakeLists.txt
  68. 1 1
      Utilities/CMakeLists.txt
  69. 1 1
      Utilities/cmcurl/CMake/cmake_uninstall.cmake.in
  70. 1 1
      cmake_uninstall.cmake.in

+ 20 - 4
Help/manual/cmake.1.rst

@@ -554,22 +554,38 @@ Available commands are:
      7a0b54896fe5e70cca6dd643ad6f672614b189bf26f8153061c4d219474b05dad08c4e729af9f4b009f1a1a280cb625454bf587c690f4617c27e3aebdf3b7a2d  file2.txt
 
 ``remove [-f] <file>...``
-  Remove the file(s). If any of the listed files already do not
-  exist, the command returns a non-zero exit code, but no message
-  is logged. The ``-f`` option changes the behavior to return a
+  .. deprecated:: 3.17
+
+  Remove the file(s). The planned behaviour was that if any of the
+  listed files already do not exist, the command returns a non-zero exit code,
+  but no message is logged. The ``-f`` option changes the behavior to return a
   zero exit code (i.e. success) in such situations instead.
   ``remove`` does not follow symlinks. That means it remove only symlinks
   and not files it point to.
 
+  The implementation was buggy and always returned 0. It cannot be fixed without
+  breaking backwards compatibility. Use ``rm`` instead.
+
 ``remove_directory <dir>...``
-  Remove ``<dir>`` directories and their contents.  If a directory does
+  .. deprecated:: 3.17
+
+  Remove ``<dir>`` directories and their contents. If a directory does
   not exist it will be silently ignored.  If ``<dir>`` is a symlink to
   a directory, just the symlink will be removed.
+  Use ``rm`` instead.
 
 ``rename <oldname> <newname>``
   Rename a file or directory (on one volume). If file with the ``<newname>`` name
   already exists, then it will be silently replaced.
 
+``rm [-rRf] <file> <dir>...``
+  Remove the files ``<file>`` or directories ``dir``.
+  Use ``-r`` or ``-R`` to remove directories and their contents recursively.
+  If any of the listed files/directories do not exist, the command returns a
+  non-zero exit code, but no message is logged. The ``-f`` option changes
+  the behavior to return a zero exit code (i.e. success) in such
+  situations instead.
+
 ``server``
   Launch :manual:`cmake-server(7)` mode.
 

+ 12 - 0
Help/release/dev/command_rm.rst

@@ -0,0 +1,12 @@
+Command-Line
+--------------------
+
+* :manual:`cmake(1)` gained a ``rm`` command line
+  option that can be used to remove directories (with ``-r`` or ``-R`` flag)
+  and files.
+  If the ``-f`` flag is not specified, attempting to remove a file that
+  doesn't exist returns an non-zero error code.
+  This command deprecates ``remove`` and ``remove_directory``.
+  The ``remove`` implementation was buggy and always returned 0 when ``force``
+  flag was not present and a file didn't exist. It cannot be fixed without
+  breaking backwards compatibility so we introduced ``rm``.

+ 1 - 1
Modules/CMakeAddFortranSubdirectory.cmake

@@ -155,7 +155,7 @@ function(cmake_add_fortran_subdirectory subdir)
   # make the external project always run make with each build
   externalproject_add_step(${project_name}_build forcebuild
     COMMAND ${CMAKE_COMMAND}
-    -E remove
+    -E rm -f
     ${CMAKE_CURRENT_BUILD_DIR}/${project_name}-prefix/src/${project_name}-stamp/${project_name}-build
     DEPENDEES configure
     DEPENDERS build

+ 3 - 3
Modules/ExternalProject.cmake

@@ -1120,7 +1120,7 @@ if(NOT \"${gitclone_infofile}\" IS_NEWER_THAN \"${gitclone_stampfile}\")
 endif()
 
 execute_process(
-  COMMAND \${CMAKE_COMMAND} -E remove_directory \"${source_dir}\"
+  COMMAND \${CMAKE_COMMAND} -E rm -rf \"${source_dir}\"
   RESULT_VARIABLE error_code
   )
 if(error_code)
@@ -1196,7 +1196,7 @@ if(NOT \"${hgclone_infofile}\" IS_NEWER_THAN \"${hgclone_stampfile}\")
 endif()
 
 execute_process(
-  COMMAND \${CMAKE_COMMAND} -E remove_directory \"${source_dir}\"
+  COMMAND \${CMAKE_COMMAND} -E rm -rf \"${source_dir}\"
   RESULT_VARIABLE error_code
   )
 if(error_code)
@@ -2580,7 +2580,7 @@ function(_ep_add_download_command name)
     if(IS_DIRECTORY "${url}")
       get_filename_component(abs_dir "${url}" ABSOLUTE)
       set(comment "Performing download step (DIR copy) for '${name}'")
-      set(cmd   ${CMAKE_COMMAND} -E remove_directory ${source_dir}
+      set(cmd   ${CMAKE_COMMAND} -E rm -rf ${source_dir}
         COMMAND ${CMAKE_COMMAND} -E copy_directory ${abs_dir} ${source_dir})
     else()
       get_property(no_extract TARGET "${name}" PROPERTY _EP_DOWNLOAD_NO_EXTRACT SET)

+ 1 - 1
Modules/FindCUDA.cmake

@@ -2006,7 +2006,7 @@ macro(CUDA_BUILD_CLEAN_TARGET)
     string(TOUPPER ${cuda_clean_target_name} cuda_clean_target_name)
   endif()
   add_custom_target(${cuda_clean_target_name}
-    COMMAND ${CMAKE_COMMAND} -E remove ${CUDA_ADDITIONAL_CLEAN_FILES})
+    COMMAND ${CMAKE_COMMAND} -E rm -f ${CUDA_ADDITIONAL_CLEAN_FILES})
 
   # Clear out the variable, so the next time we configure it will be empty.
   # This is useful so that the files won't persist in the list after targets

+ 3 - 3
Modules/FindCUDA/run_nvcc.cmake

@@ -174,7 +174,7 @@ endmacro()
 # Delete the target file
 cuda_execute_process(
   "Removing ${generated_file}"
-  COMMAND "${CMAKE_COMMAND}" -E remove "${generated_file}"
+  COMMAND "${CMAKE_COMMAND}" -E rm -f "${generated_file}"
   )
 
 # For CUDA 2.3 and below, -G -M doesn't work, so remove the -G flag
@@ -241,7 +241,7 @@ endif()
 # Delete the temporary file
 cuda_execute_process(
   "Removing ${cmake_dependency_file}.tmp and ${NVCC_generated_dependency_file}"
-  COMMAND "${CMAKE_COMMAND}" -E remove "${cmake_dependency_file}.tmp" "${NVCC_generated_dependency_file}"
+  COMMAND "${CMAKE_COMMAND}" -E rm -f "${cmake_dependency_file}.tmp" "${NVCC_generated_dependency_file}"
   )
 
 if(CUDA_result)
@@ -267,7 +267,7 @@ if(CUDA_result)
   # Since nvcc can sometimes leave half done files make sure that we delete the output file.
   cuda_execute_process(
     "Removing ${generated_file}"
-    COMMAND "${CMAKE_COMMAND}" -E remove "${generated_file}"
+    COMMAND "${CMAKE_COMMAND}" -E rm -f "${generated_file}"
     )
   message(FATAL_ERROR "Error generating file ${generated_file}")
 else()

+ 1 - 1
Modules/Platform/Generic-SDCC-C.cmake

@@ -47,7 +47,7 @@ set(CMAKE_C_LINK_EXECUTABLE "<CMAKE_C_COMPILER> <FLAGS> <OBJECTS> -o <TARGET> <C
 
 # needs sdcc 2.7.0 + sddclib from cvs
 set(CMAKE_C_CREATE_STATIC_LIBRARY
-      "\"${CMAKE_COMMAND}\" -E remove <TARGET>"
+      "\"${CMAKE_COMMAND}\" -E rm -f <TARGET>"
       "<CMAKE_AR> -a <TARGET> <LINK_FLAGS> <OBJECTS> ")
 
 # not supported by sdcc

+ 1 - 1
Modules/Platform/Windows-GNU.cmake

@@ -124,7 +124,7 @@ macro(__windows_compiler_gnu lang)
       string(REPLACE "<OBJECTS>" "-Wl,--whole-archive <OBJECT_DIR>/objects.a -Wl,--no-whole-archive"
         CMAKE_${lang}_${rule} "${CMAKE_${lang}_${rule}}")
       set(CMAKE_${lang}_${rule}
-        "<CMAKE_COMMAND> -E remove -f <OBJECT_DIR>/objects.a"
+        "<CMAKE_COMMAND> -E rm -f <OBJECT_DIR>/objects.a"
         "<CMAKE_AR> cr <OBJECT_DIR>/objects.a <OBJECTS>"
         "${CMAKE_${lang}_${rule}}"
         )

+ 1 - 1
Source/cmLocalUnixMakefileGenerator3.cxx

@@ -629,7 +629,7 @@ void cmLocalUnixMakefileGenerator3::WriteMakeVariables(
     << "# The command to remove a file.\n"
     << "RM = "
     << cmakeShellCommand
-    << " -E remove -f\n"
+    << " -E rm -f\n"
     << "\n";
   makefileStream
     << "# Escaping for special characters.\n"

+ 1 - 1
Source/cmNinjaNormalTargetGenerator.cxx

@@ -486,7 +486,7 @@ std::vector<std::string> cmNinjaNormalTargetGenerator::ComputeLinkCmd()
         std::string cmakeCommand =
           this->GetLocalGenerator()->ConvertToOutputFormat(
             cmSystemTools::GetCMakeCommand(), cmOutputConverter::SHELL);
-        linkCmds.push_back(cmakeCommand + " -E remove $TARGET_FILE");
+        linkCmds.push_back(cmakeCommand + " -E rm -f $TARGET_FILE");
       }
       // TODO: Use ARCHIVE_APPEND for archives over a certain size.
       {

+ 82 - 10
Source/cmcmd.cxx

@@ -107,10 +107,12 @@ void CMakeCommandUsage(const char* program)
     << "  sha384sum <file>...       - create SHA384 checksum of files\n"
     << "  sha512sum <file>...       - create SHA512 checksum of files\n"
     << "  remove [-f] <file>...     - remove the file(s), use -f to force "
-       "it\n"
-    << "  remove_directory <dir>... - remove directories and their contents\n"
+       "it (deprecated: use rm instead)\n"
+    << "  remove_directory <dir>... - remove directories and their contents (deprecated: use rm instead)\n"
     << "  rename oldname newname    - rename a file or directory "
        "(on one volume)\n"
+    << "  rm [-rRf] <file/dir>...    - remove files or directories, use -f to "
+       "force it, r or R to remove directories and their contents recursively\n"
     << "  server                    - start cmake in server mode\n"
     << "  sleep <number>...         - sleep for given number of seconds\n"
     << "  tar [cxt][vf][zjJ] file.tar [file/dir1 file/dir2 ...]\n"
@@ -172,6 +174,24 @@ static bool cmTarFilesFrom(std::string const& file,
   return true;
 }
 
+static bool cmRemoveDirectory(const std::string& dir, bool recursive = true)
+{
+  if (cmSystemTools::FileIsSymlink(dir)) {
+    if (!cmSystemTools::RemoveFile(dir)) {
+      std::cerr << "Error removing directory symlink \"" << dir << "\".\n";
+      return false;
+    }
+  } else if (!recursive) {
+    std::cerr << "Error removing directory \"" << dir
+              << "\" without recursive option.\n";
+    return false;
+  } else if (!cmSystemTools::RemoveADirectory(dir)) {
+    std::cerr << "Error removing directory \"" << dir << "\".\n";
+    return false;
+  }
+  return true;
+}
+
 static int HandleIWYU(const std::string& runCmd,
                       const std::string& /* sourceFile */,
                       const std::vector<std::string>& orig_cmd)
@@ -706,14 +726,7 @@ int cmcmd::ExecuteCMakeCommand(std::vector<std::string> const& args)
       bool return_value = false;
       for (auto const& arg : cmMakeRange(args).advance(2)) {
         if (cmSystemTools::FileIsDirectory(arg)) {
-          if (cmSystemTools::FileIsSymlink(arg)) {
-            if (!cmSystemTools::RemoveFile(arg)) {
-              std::cerr << "Error removing directory symlink \"" << arg
-                        << "\".\n";
-              return_value = true;
-            }
-          } else if (!cmSystemTools::RemoveADirectory(arg)) {
-            std::cerr << "Error removing directory \"" << arg << "\".\n";
+          if (!cmRemoveDirectory(arg)) {
             return_value = true;
           }
         }
@@ -739,6 +752,65 @@ int cmcmd::ExecuteCMakeCommand(std::vector<std::string> const& args)
       return 0;
     }
 
+    // Remove directories or files with rm
+    if (args[1] == "rm" && args.size() > 2) {
+      // If an error occurs, we want to continue removing the remaining
+      // files/directories.
+      int return_value = 0;
+      bool force = false;
+      bool recursive = false;
+      bool doing_options = true;
+      bool at_least_one_file = false;
+      for (auto const& arg : cmMakeRange(args).advance(2)) {
+        if (doing_options && cmHasLiteralPrefix(arg, "-")) {
+          if (arg == "--") {
+            doing_options = false;
+          }
+          if (arg.find('f') != std::string::npos) {
+            force = true;
+          }
+          if (arg.find_first_of("rR") != std::string::npos) {
+            recursive = true;
+          }
+          if (arg.find_first_not_of("-frR") != std::string::npos) {
+            cmSystemTools::Error("Unknown -E rm argument: " + arg);
+            return 1;
+          }
+        } else {
+          if (arg.empty()) {
+            continue;
+          }
+          at_least_one_file = true;
+          // Complain if the -f option was not given and
+          // either file does not exist or
+          // file could not be removed and still exists
+          bool file_exists_or_forced_remove = cmSystemTools::FileExists(arg) ||
+            cmSystemTools::FileIsSymlink(arg) || force;
+          if (cmSystemTools::FileIsDirectory(arg)) {
+            if (!cmRemoveDirectory(arg, recursive)) {
+              return_value = 1;
+            }
+          } else if ((!file_exists_or_forced_remove) ||
+                     (!cmSystemTools::RemoveFile(arg) &&
+                      cmSystemTools::FileExists(arg))) {
+            if (!file_exists_or_forced_remove) {
+              cmSystemTools::Error(
+                "File to remove does not exist and force is not set: " + arg);
+            } else {
+              cmSystemTools::Error("File can't be removed and still exist: " +
+                                   arg);
+            }
+            return_value = 1;
+          }
+        }
+      }
+      if (!at_least_one_file) {
+        cmSystemTools::Error("Missing file/directory to remove");
+        return 1;
+      }
+      return return_value;
+    }
+
     // Touch file
     if (args[1] == "touch" && args.size() > 2) {
       for (auto const& arg : cmMakeRange(args).advance(2)) {

+ 3 - 3
Tests/CMakeTestMultipleConfigures/RunCMake.cmake

@@ -21,11 +21,11 @@ set(N 7)
 
 # First setup source and binary trees:
 #
-execute_process(COMMAND ${CMAKE_COMMAND} -E remove_directory
+execute_process(COMMAND ${CMAKE_COMMAND} -E rm -rf
   ${dir}/Source
 )
 
-execute_process(COMMAND ${CMAKE_COMMAND} -E remove_directory
+execute_process(COMMAND ${CMAKE_COMMAND} -E rm -rf
   ${dir}/Build
 )
 
@@ -69,7 +69,7 @@ foreach(i RANGE 1 ${N})
 
   # Save this iteration of the Build directory:
   #
-  execute_process(COMMAND ${CMAKE_COMMAND} -E remove_directory
+  execute_process(COMMAND ${CMAKE_COMMAND} -E rm -rf
     ${dir}/b${i}
     )
   execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory

+ 1 - 1
Tests/CPackComponentsDEB/CMakeLists.txt

@@ -104,7 +104,7 @@ install(FILES ${CPackComponentsDEB_BINARY_DIR}/symtest
         COMPONENT applications)
 
 if(EXISTS "./dirtest")
-  execute_process(COMMAND ${CMAKE_COMMAND} -E remove_directory ./dirtest)
+  execute_process(COMMAND ${CMAKE_COMMAND} -E rm -rf ./dirtest)
 endif()
 # NOTE: directory left empty on purpose
 execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ./dirtest)

+ 1 - 1
Tests/Complex/CMakeLists.txt

@@ -324,7 +324,7 @@ if (WIN32)
       ${file}
       "[${hkey}]" DOC "Registry_Test_Path")
     exec_program(${CMAKE_COMMAND} ARGS "-E delete_regv \"${hkey}\"")
-    exec_program(${CMAKE_COMMAND} ARGS "-E remove \"${dir}/${file}\"")
+    exec_program(${CMAKE_COMMAND} ARGS "-E rm -f \"${dir}/${file}\"")
   endif ()
 endif ()
 

+ 1 - 1
Tests/Complex/Library/CMakeLists.txt

@@ -131,7 +131,7 @@ if("${CMAKE_GENERATOR}" MATCHES "Makefile" AND CMAKE_MAKE_PROGRAM)
 
     # Custom target to try preprocessing invocation.
     add_custom_target(test_preprocess ${MAYBE_ALL}
-      COMMAND ${CMAKE_COMMAND} -E remove CMakeFiles/create_file.dir/create_file.i
+      COMMAND ${CMAKE_COMMAND} -E rm -f CMakeFiles/create_file.dir/create_file.i
       COMMAND ${CMAKE_MAKE_PROGRAM} create_file.i
       COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/test_preprocess.cmake
       WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}

+ 1 - 1
Tests/ComplexOneConfig/CMakeLists.txt

@@ -281,7 +281,7 @@ if (WIN32)
       ${file}
       "[${hkey}]" DOC "Registry_Test_Path")
     exec_program(${CMAKE_COMMAND} ARGS "-E delete_regv \"${hkey}\"")
-    exec_program(${CMAKE_COMMAND} ARGS "-E remove \"${dir}/${file}\"")
+    exec_program(${CMAKE_COMMAND} ARGS "-E rm -f \"${dir}/${file}\"")
   endif ()
 endif ()
 

+ 1 - 1
Tests/ComplexOneConfig/Library/CMakeLists.txt

@@ -131,7 +131,7 @@ if("${CMAKE_GENERATOR}" MATCHES "Makefile" AND CMAKE_MAKE_PROGRAM)
 
     # Custom target to try preprocessing invocation.
     add_custom_target(test_preprocess ${MAYBE_ALL}
-      COMMAND ${CMAKE_COMMAND} -E remove CMakeFiles/create_file.dir/create_file.i
+      COMMAND ${CMAKE_COMMAND} -E rm -f CMakeFiles/create_file.dir/create_file.i
       COMMAND ${CMAKE_MAKE_PROGRAM} create_file.i
       COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/test_preprocess.cmake
       WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}

+ 2 - 2
Tests/CustomCommand/CMakeLists.txt

@@ -70,7 +70,7 @@ add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/doc1.h APPEND
   COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/doc1temp.h
                                    ${PROJECT_BINARY_DIR}/doc1.h
   COMMAND ${CMAKE_COMMAND} -E echo " Removing doc1temp.h."
-  COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJECT_BINARY_DIR}/doc1temp.h
+  COMMAND ${CMAKE_COMMAND} -E rm -f ${PROJECT_BINARY_DIR}/doc1temp.h
   )
 
 # Add custom command to generate foo.h.
@@ -412,7 +412,7 @@ add_custom_target(do_check_command_line ALL
 add_dependencies(do_check_command_line check_command_line)
 
 add_custom_target(pre_check_command_line
-  COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_CURRENT_BINARY_DIR}/check_mark.txt
+  COMMAND ${CMAKE_COMMAND} -E rm -f ${CMAKE_CURRENT_BINARY_DIR}/check_mark.txt
   )
 add_dependencies(do_check_command_line pre_check_command_line)
 

+ 1 - 1
Tests/ExportImport/CMakeLists.txt

@@ -7,7 +7,7 @@ endif()
 # Wipe out the install tree to make sure the exporter works.
 add_custom_command(
   OUTPUT ${ExportImport_BINARY_DIR}/CleanupProject
-  COMMAND ${CMAKE_COMMAND} -E remove_directory ${ExportImport_BINARY_DIR}/Root
+  COMMAND ${CMAKE_COMMAND} -E rm -rf ${ExportImport_BINARY_DIR}/Root
   )
 add_custom_target(CleanupTarget ALL DEPENDS ${ExportImport_BINARY_DIR}/CleanupProject)
 set_property(

+ 2 - 2
Tests/FortranOnly/CMakeLists.txt

@@ -103,11 +103,11 @@ if("${CMAKE_GENERATOR}" MATCHES "Makefile" AND CMAKE_MAKE_PROGRAM)
 
     # Custom target to try preprocessing invocation.
     add_custom_target(test_preprocess ${MAYBE_ALL}
-      COMMAND ${CMAKE_COMMAND} -E remove CMakeFiles/preprocess.dir/preprocess.F.i
+      COMMAND ${CMAKE_COMMAND} -E rm -f CMakeFiles/preprocess.dir/preprocess.F.i
       COMMAND ${CMAKE_MAKE_PROGRAM} preprocess.i
       COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/test_preprocess.cmake
       # Remove bogus file some compilers leave behind.
-      COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_CURRENT_SOURCE_DIR}/preprocess.s
+      COMMAND ${CMAKE_COMMAND} -E rm -f ${CMAKE_CURRENT_SOURCE_DIR}/preprocess.s
       WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
       )
   endif()

+ 1 - 1
Tests/JavaExportImport/CMakeLists.txt

@@ -9,7 +9,7 @@ find_package(Java COMPONENTS Development)
 # Wipe out the install tree to make sure the exporter works.
 add_custom_command(
   OUTPUT ${JavaExportImport_BINARY_DIR}/CleanupProject
-  COMMAND ${CMAKE_COMMAND} -E remove_directory ${JavaExportImport_BINARY_DIR}/Root
+  COMMAND ${CMAKE_COMMAND} -E rm -rf ${JavaExportImport_BINARY_DIR}/Root
   )
 add_custom_target(CleanupTarget ALL DEPENDS ${JavaExportImport_BINARY_DIR}/CleanupProject)
 set_property(

+ 1 - 1
Tests/LinkDirectory/CMakeLists.txt

@@ -33,7 +33,7 @@ ExternalProject_Add(ExternalTarget
 # directly because it does not know the full paths to the libraries.
 # (The purpose of this test is to check that link_directories works.)
 ExternalProject_Add_Step(ExternalTarget cleanup
-  COMMAND ${CMAKE_COMMAND} -E remove_directory ${LinkDirectory_BINARY_DIR}/bin
+  COMMAND ${CMAKE_COMMAND} -E rm -rf ${LinkDirectory_BINARY_DIR}/bin
   DEPENDEES download
   DEPENDERS configure
   DEPENDS mylibA mylibB

+ 1 - 1
Tests/MacRuntimePath/CMakeLists.txt

@@ -7,7 +7,7 @@ endif()
 # Wipe out the install tree to make sure the exporter works.
 add_custom_command(
   OUTPUT ${MacRuntimePath_BINARY_DIR}/CleanupProject
-  COMMAND ${CMAKE_COMMAND} -E remove_directory ${MacRuntimePath_BINARY_DIR}/Root
+  COMMAND ${CMAKE_COMMAND} -E rm -rf ${MacRuntimePath_BINARY_DIR}/Root
   )
 add_custom_target(CleanupTarget ALL DEPENDS ${MacRuntimePath_BINARY_DIR}/CleanupProject)
 set_property(

+ 1 - 1
Tests/RunCMake/CMakeLists.txt

@@ -445,7 +445,7 @@ add_RunCMake_test(target_include_directories)
 add_RunCMake_test(target_sources)
 add_RunCMake_test(CheckModules)
 add_RunCMake_test(CheckIPOSupported)
-add_RunCMake_test(CommandLine -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME})
+add_RunCMake_test(CommandLine -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME} -DCYGWIN=${CYGWIN})
 add_RunCMake_test(CommandLineTar)
 
 if(CMAKE_PLATFORM_NO_VERSIONED_SONAME OR (NOT CMAKE_SHARED_LIBRARY_SONAME_FLAG AND NOT CMAKE_SHARED_LIBRARY_SONAME_C_FLAG))

+ 1 - 1
Tests/RunCMake/CTestResourceAllocation/ResourceCommon.cmake

@@ -1,6 +1,6 @@
 function(setup_resource_tests)
   if(CTEST_RESOURCE_ALLOC_ENABLED)
-    add_test(NAME ResourceSetup COMMAND "${CMAKE_COMMAND}" -E remove -f "${CMAKE_BINARY_DIR}/ctresalloc.log")
+    add_test(NAME ResourceSetup COMMAND "${CMAKE_COMMAND}" -E rm -f "${CMAKE_BINARY_DIR}/ctresalloc.log")
   endif()
 endfunction()
 

+ 1 - 0
Tests/RunCMake/CommandLine/E_rm_bad_argument-result.txt

@@ -0,0 +1 @@
+1

+ 1 - 0
Tests/RunCMake/CommandLine/E_rm_bad_argument-stderr.txt

@@ -0,0 +1 @@
+^CMake Error: Unknown -E rm argument: -rd$

+ 3 - 0
Tests/RunCMake/CommandLine/E_rm_directory_link_existing-check.cmake

@@ -0,0 +1,3 @@
+if(NOT EXISTS ${out}/dir/existing.txt)
+  set(RunCMake_TEST_FAILED "${out}/dir/existing.txt should exist (we only removed the link to dir folder)")
+endif()

+ 1 - 0
Tests/RunCMake/CommandLine/E_rm_directory_link_existing-result.txt

@@ -0,0 +1 @@
+0

+ 1 - 0
Tests/RunCMake/CommandLine/E_rm_empty_file_specified-stderr.txt

@@ -0,0 +1 @@
+^CMake Error: Missing file/directory to remove$

+ 8 - 0
Tests/RunCMake/CommandLine/E_rm_empty_file_specified.cmake

@@ -0,0 +1,8 @@
+execute_process(
+  COMMAND ${CMAKE_COMMAND} -E rm ""
+  RESULT_VARIABLE actual_result
+  )
+
+if(NOT "${actual_result}" EQUAL "1")
+  message(SEND_ERROR "cmake -E rm \"\" should have returned 1, got ${actual_result}")
+endif()

+ 3 - 0
Tests/RunCMake/CommandLine/E_rm_file_force_existing-check.cmake

@@ -0,0 +1,3 @@
+if(EXISTS ${out}/existing.txt)
+  set(RunCMake_TEST_FAILED "${out}/existing.txt not removed")
+endif()

+ 1 - 0
Tests/RunCMake/CommandLine/E_rm_file_force_existing-result.txt

@@ -0,0 +1 @@
+0

+ 1 - 0
Tests/RunCMake/CommandLine/E_rm_file_force_non_existing-result.txt

@@ -0,0 +1 @@
+0

+ 3 - 0
Tests/RunCMake/CommandLine/E_rm_file_link_existing-check.cmake

@@ -0,0 +1,3 @@
+if(NOT EXISTS ${out}/existing.txt)
+  set(RunCMake_TEST_FAILED "${out}/existing.txt should exist (we only removed the link)")
+endif()

+ 1 - 0
Tests/RunCMake/CommandLine/E_rm_file_link_existing-result.txt

@@ -0,0 +1 @@
+0

+ 1 - 0
Tests/RunCMake/CommandLine/E_rm_file_link_non_existing-result.txt

@@ -0,0 +1 @@
+0

+ 3 - 0
Tests/RunCMake/CommandLine/E_rm_file_non_force_existing-check.cmake

@@ -0,0 +1,3 @@
+if(EXISTS ${out}/existing.txt)
+  set(RunCMake_TEST_FAILED "${out}/existing.txt not removed")
+endif()

+ 1 - 0
Tests/RunCMake/CommandLine/E_rm_file_non_force_existing-result.txt

@@ -0,0 +1 @@
+0

+ 1 - 0
Tests/RunCMake/CommandLine/E_rm_file_non_force_non_existing-result.txt

@@ -0,0 +1 @@
+1

+ 1 - 0
Tests/RunCMake/CommandLine/E_rm_file_non_force_non_existing-stderr.txt

@@ -0,0 +1 @@
+^CMake Error: File to remove does not exist and force is not set: .*/rm_tests/not_existing.txt

+ 3 - 0
Tests/RunCMake/CommandLine/E_rm_file_recursive_existing-check.cmake

@@ -0,0 +1,3 @@
+if(EXISTS ${out}/existing.txt)
+  set(RunCMake_TEST_FAILED "${out}/existing.txt not removed")
+endif()

+ 1 - 0
Tests/RunCMake/CommandLine/E_rm_file_recursive_existing-result.txt

@@ -0,0 +1 @@
+0

+ 1 - 0
Tests/RunCMake/CommandLine/E_rm_file_recursive_non_existing-result.txt

@@ -0,0 +1 @@
+1

+ 1 - 0
Tests/RunCMake/CommandLine/E_rm_file_recursive_non_existing-stderr.txt

@@ -0,0 +1 @@
+^CMake Error: File to remove does not exist and force is not set: .*/rm_tests/not_existing.txt

+ 3 - 0
Tests/RunCMake/CommandLine/E_rm_force_recursive_directory_with_files-check.cmake

@@ -0,0 +1,3 @@
+if(EXISTS ${out})
+  set(RunCMake_TEST_FAILED "${out} not removed")
+endif()

+ 1 - 0
Tests/RunCMake/CommandLine/E_rm_force_recursive_directory_with_files-result.txt

@@ -0,0 +1 @@
+0

+ 1 - 0
Tests/RunCMake/CommandLine/E_rm_force_recursive_non_existing_file-result.txt

@@ -0,0 +1 @@
+0

+ 1 - 0
Tests/RunCMake/CommandLine/E_rm_no_file_specified-result.txt

@@ -0,0 +1 @@
+1

+ 1 - 0
Tests/RunCMake/CommandLine/E_rm_no_file_specified-stderr.txt

@@ -0,0 +1 @@
+^CMake Error: Missing file/directory to remove$

+ 3 - 0
Tests/RunCMake/CommandLine/E_rm_non_recursive_directory-two-directories-check.cmake

@@ -0,0 +1,3 @@
+if(NOT EXISTS ${out}/d1 OR NOT EXISTS ${out}/d2)
+  set(RunCMake_TEST_FAILED "${out}/d1 or ${out}/d2 is removed but should not")
+endif()

+ 1 - 0
Tests/RunCMake/CommandLine/E_rm_non_recursive_directory-two-directories-result.txt

@@ -0,0 +1 @@
+1

+ 2 - 0
Tests/RunCMake/CommandLine/E_rm_non_recursive_directory-two-directories-stderr.txt

@@ -0,0 +1,2 @@
+^Error removing directory ".*/rm_tests/d1" without recursive option\.
+Error removing directory ".*/rm_tests/d2" without recursive option\.$

+ 3 - 0
Tests/RunCMake/CommandLine/E_rm_recursive_directory-two-directories-check.cmake

@@ -0,0 +1,3 @@
+if(EXISTS ${out}/d1 OR EXISTS ${out}/d2)
+  set(RunCMake_TEST_FAILED "${out}/d1 or ${out}/d2 should be removed")
+endif()

+ 1 - 0
Tests/RunCMake/CommandLine/E_rm_recursive_directory-two-directories-result.txt

@@ -0,0 +1 @@
+0

+ 3 - 0
Tests/RunCMake/CommandLine/E_rm_recursive_directory_link_existing-check.cmake

@@ -0,0 +1,3 @@
+if(NOT EXISTS ${out}/dir/existing.txt)
+  set(RunCMake_TEST_FAILED "${out}/dir/existing.txt should exist (we only removed the link to dir folder)")
+endif()

+ 1 - 0
Tests/RunCMake/CommandLine/E_rm_recursive_directory_link_existing-result.txt

@@ -0,0 +1 @@
+0

+ 3 - 0
Tests/RunCMake/CommandLine/E_rm_recursive_file_link_existing-check.cmake

@@ -0,0 +1,3 @@
+if(NOT EXISTS ${out}/existing.txt)
+  set(RunCMake_TEST_FAILED "${out}/existing.txt should exist (we only removed the link)")
+endif()

+ 1 - 0
Tests/RunCMake/CommandLine/E_rm_recursive_file_link_existing-result.txt

@@ -0,0 +1 @@
+0

+ 1 - 0
Tests/RunCMake/CommandLine/E_rm_recursive_file_link_non_existing-result.txt

@@ -0,0 +1 @@
+0

+ 70 - 0
Tests/RunCMake/CommandLine/RunCMakeTest.cmake

@@ -388,6 +388,76 @@ endif()
 unset(out)
 unset(outfile)
 
+set(out ${RunCMake_BINARY_DIR}/rm_tests)
+file(REMOVE_RECURSE "${out}")
+file(MAKE_DIRECTORY ${out})
+file(TOUCH ${out}/existing.txt)
+run_cmake_command(E_rm_file_force_existing
+  ${CMAKE_COMMAND} -E rm -f ${out}/existing.txt)
+file(TOUCH ${out}/existing.txt)
+run_cmake_command(E_rm_file_non_force_existing
+  ${CMAKE_COMMAND} -E rm ${out}/existing.txt)
+run_cmake_command(E_rm_file_force_non_existing
+  ${CMAKE_COMMAND} -E rm -f ${out}/not_existing.txt)
+run_cmake_command(E_rm_file_non_force_non_existing
+  ${CMAKE_COMMAND} -E rm ${out}/not_existing.txt)
+
+file(TOUCH ${out}/existing.txt)
+run_cmake_command(E_rm_file_recursive_existing
+  ${CMAKE_COMMAND} -E rm -r ${out}/existing.txt)
+run_cmake_command(E_rm_file_recursive_non_existing
+  ${CMAKE_COMMAND} -E rm -r ${out}/not_existing.txt)
+
+file(MAKE_DIRECTORY ${out}/d1 ${out}/d2)
+run_cmake_command(E_rm_non_recursive_directory-two-directories
+  ${CMAKE_COMMAND} -E rm ${out}/d1 ${out}/d2)
+
+run_cmake_command(E_rm_recursive_directory-two-directories
+  ${CMAKE_COMMAND} -E rm -R ${out}/d1 ${out}/d2)
+
+run_cmake_command(E_rm_no_file_specified
+  ${CMAKE_COMMAND} -E rm -rf)
+
+run_cmake_command(E_rm_empty_file_specified
+  ${CMAKE_COMMAND} -P ${RunCMake_SOURCE_DIR}/E_rm_empty_file_specified.cmake)
+
+run_cmake_command(E_rm_bad_argument
+  ${CMAKE_COMMAND} -E rm -rd ${out}/d1 ${out}/d2)
+
+file(MAKE_DIRECTORY ${out}/d1 ${out}/d2)
+file(WRITE ${out}/test.txt "")
+run_cmake_command(E_rm_force_recursive_directory_with_files
+  ${CMAKE_COMMAND} -E rm -rf ${out}/)
+
+run_cmake_command(E_rm_force_recursive_non_existing_file
+  ${CMAKE_COMMAND} -E rm -Rf ${out}/test.txt)
+
+if(NOT WIN32 AND NOT CYGWIN)
+  file(MAKE_DIRECTORY ${out})
+  file(TOUCH ${out}/existing.txt)
+  file(MAKE_DIRECTORY ${out}/dir)
+  file(TOUCH ${out}/dir/existing.txt) # add a file in the folder
+  file(CREATE_LINK ${out}/dir ${out}/link_dir SYMBOLIC)
+  file(CREATE_LINK ${out}/existing.txt ${out}/existing_file_link.txt SYMBOLIC)
+  file(CREATE_LINK ${out}/non_existing.txt ${out}/non_existing_file_link.txt SYMBOLIC)
+  run_cmake_command(E_rm_file_link_existing
+    ${CMAKE_COMMAND} -E rm ${out}/existing_file_link.txt)
+  run_cmake_command(E_rm_directory_link_existing
+    ${CMAKE_COMMAND} -E rm ${out}/link_dir)
+  run_cmake_command(E_rm_file_link_non_existing
+    ${CMAKE_COMMAND} -E rm ${out}/non_existing_file_link.txt)
+
+  file(CREATE_LINK ${out}/dir ${out}/link_dir SYMBOLIC)
+  file(CREATE_LINK ${out}/existing.txt ${out}/existing_file_link.txt SYMBOLIC)
+  file(CREATE_LINK ${out}/non_existing.txt ${out}/non_existing_file_link.txt SYMBOLIC)
+  run_cmake_command(E_rm_recursive_file_link_existing
+    ${CMAKE_COMMAND} -E rm -R ${out}/existing_file_link.txt)
+  run_cmake_command(E_rm_recursive_directory_link_existing
+    ${CMAKE_COMMAND} -E rm -r ${out}/link_dir)
+  run_cmake_command(E_rm_recursive_file_link_non_existing
+    ${CMAKE_COMMAND} -E rm -r ${out}/non_existing_file_link.txt)
+endif()
+unset(out)
 
 run_cmake_command(E_env-no-command0 ${CMAKE_COMMAND} -E env)
 run_cmake_command(E_env-no-command1 ${CMAKE_COMMAND} -E env TEST_ENV=1)

+ 1 - 1
Tests/RunCMake/ParseImplicitData/mingw.org-C-GNU-4.9.3.input

@@ -53,7 +53,7 @@ LIBRARY_PATH=c:/DoesNotExist/mingw/bin/../lib/gcc/mingw32/4.9.3/;c:/DoesNotExist
 COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles\cmTC_ab097.dir\CMakeCCompilerABI.c.obj' '-c' '-mtune=generic' '-march=i586'
 Linking C executable cmTC_ab097.exe
 "C:\CMake\bin\cmake.exe" -E cmake_link_script CMakeFiles\cmTC_ab097.dir\link.txt --verbose=1
-"C:\CMake\bin\cmake.exe" -E remove -f CMakeFiles\cmTC_ab097.dir/objects.a
+"C:\CMake\bin\cmake.exe" -E rm -f CMakeFiles\cmTC_ab097.dir/objects.a
 C:\DoesNotExist\MinGW\bin\ar.exe cr CMakeFiles\cmTC_ab097.dir/objects.a @CMakeFiles\cmTC_ab097.dir\objects1.rsp
 C:\DoesNotExist\MinGW\bin\gcc.exe  -v    -Wl,--whole-archive CMakeFiles\cmTC_ab097.dir/objects.a -Wl,--no-whole-archive  -o cmTC_ab097.exe -Wl,--out-implib,libcmTC_ab097.dll.a -Wl,--major-image-version,0,--minor-image-version,0
 Using built-in specs.

+ 1 - 1
Tests/RunCMake/ParseImplicitData/mingw.org-CXX-GNU-4.9.3.input

@@ -59,7 +59,7 @@ LIBRARY_PATH=c:/DoesNotExist/mingw/bin/../lib/gcc/mingw32/4.9.3/;c:/DoesNotExist
 COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles\cmTC_2b790.dir\CMakeCXXCompilerABI.cpp.obj' '-c' '-shared-libgcc' '-mtune=generic' '-march=i586'
 Linking CXX executable cmTC_2b790.exe
 "C:\CMake\bin\cmake.exe" -E cmake_link_script CMakeFiles\cmTC_2b790.dir\link.txt --verbose=1
-"C:\CMake\bin\cmake.exe" -E remove -f CMakeFiles\cmTC_2b790.dir/objects.a
+"C:\CMake\bin\cmake.exe" -E rm -f CMakeFiles\cmTC_2b790.dir/objects.a
 C:\DoesNotExist\MinGW\bin\ar.exe cr CMakeFiles\cmTC_2b790.dir/objects.a @CMakeFiles\cmTC_2b790.dir\objects1.rsp
 C:\DoesNotExist\MinGW\bin\g++.exe  -v    -Wl,--whole-archive CMakeFiles\cmTC_2b790.dir/objects.a -Wl,--no-whole-archive  -o cmTC_2b790.exe -Wl,--out-implib,libcmTC_2b790.dll.a -Wl,--major-image-version,0,--minor-image-version,0
 Using built-in specs.

+ 1 - 1
Tests/StagingPrefix/CMakeLists.txt

@@ -5,7 +5,7 @@ project(StagingPrefix)
 # Wipe out the install tree
 add_custom_command(
   OUTPUT ${CMAKE_BINARY_DIR}/CleanupProject
-  COMMAND ${CMAKE_COMMAND} -E remove_directory
+  COMMAND ${CMAKE_COMMAND} -E rm -rf
     ${CMAKE_BINARY_DIR}/ConsumerBuild
     ${CMAKE_BINARY_DIR}/ProducerBuild
     ${CMAKE_BINARY_DIR}/stage

+ 1 - 1
Tests/SubDir/Examples/example1/CMakeLists.txt

@@ -3,5 +3,5 @@ project(example1)
 add_executable(example1 example1.cxx)
 
 add_custom_command(TARGET example1 POST_BUILD
-  COMMAND "${CMAKE_COMMAND}" ARGS -E remove ${SUBDIR_BINARY_DIR}/ShouldBeHere
+  COMMAND "${CMAKE_COMMAND}" ARGS -E rm -f ${SUBDIR_BINARY_DIR}/ShouldBeHere
   COMMENT "Remove marker file that should exist because this should not be run")

+ 1 - 1
Tests/SubDirSpaces/Some Examples/example1/CMakeLists.txt

@@ -3,5 +3,5 @@ project(example1)
 add_executable(example1 example1.cxx)
 
 add_custom_command(TARGET example1 POST_BUILD
-  COMMAND "${CMAKE_COMMAND}" ARGS -E remove ${SUBDIR_BINARY_DIR}/ShouldBeHere
+  COMMAND "${CMAKE_COMMAND}" ARGS -E rm -f ${SUBDIR_BINARY_DIR}/ShouldBeHere
   COMMENT "Remove marker file that should exist because this should not be run")

+ 2 - 2
Tests/VSMidl/CMakeLists.txt

@@ -56,8 +56,8 @@ set(source_dir "${base_dir}/src")
 #
 ExternalProject_Add(clean-${PROJECT_NAME}
   DOWNLOAD_COMMAND ""
-  CONFIGURE_COMMAND ${CMAKE_COMMAND} -E remove_directory "${source_dir}"
-  BUILD_COMMAND ${CMAKE_COMMAND} -E remove_directory "${binary_dir}"
+  CONFIGURE_COMMAND ${CMAKE_COMMAND} -E rm -rf "${source_dir}"
+  BUILD_COMMAND ${CMAKE_COMMAND} -E rm -rf "${binary_dir}"
   INSTALL_COMMAND ""
   )
 

+ 1 - 1
Utilities/CMakeLists.txt

@@ -13,7 +13,7 @@ if(CMAKE_DOC_TARBALL)
   endif()
   add_custom_command(
     OUTPUT ${dir}.stamp
-    COMMAND cmake -E remove_directory ${dir}
+    COMMAND cmake -E rm -rf ${dir}
     COMMAND cmake -E tar xf ${CMAKE_DOC_TARBALL}
     COMMAND cmake -E touch ${dir}.stamp
     DEPENDS ${CMAKE_DOC_TARBALL}

+ 1 - 1
Utilities/cmcurl/CMake/cmake_uninstall.cmake.in

@@ -13,7 +13,7 @@ foreach(file ${files})
   message(STATUS "Uninstalling $ENV{DESTDIR}${file}")
   if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
     exec_program(
-      "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
+      "@CMAKE_COMMAND@" ARGS "-E rm -f \"$ENV{DESTDIR}${file}\""
       OUTPUT_VARIABLE rm_out
       RETURN_VALUE rm_retval
       )

+ 1 - 1
cmake_uninstall.cmake.in

@@ -8,7 +8,7 @@ foreach(file ${files})
   message(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"")
   if(EXISTS "$ENV{DESTDIR}${file}")
     exec_program(
-      "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
+      "@CMAKE_COMMAND@" ARGS "-E rm -f \"$ENV{DESTDIR}${file}\""
       OUTPUT_VARIABLE rm_out
       RETURN_VALUE rm_retval
       )