mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-11 16:32:14 -06:00
KWSys 2020-02-17 (3e117fe1)
Code extracted from:
https://gitlab.kitware.com/utils/kwsys.git
at commit 3e117fe1e008aeca4a4f33a431b196848cc34e11 (master).
Upstream Shortlog
-----------------
Brad King (1):
c2420a42 SystemTools: Revert "CopyFileIfDifferent: Ensure that source is a file"
Julien Schueller (1):
c3acc96d CMake: Fix psapi lib name on case-sensitive fs
Sebastian Lipponer (2):
573713fa SystemTools: CopyFileIfDifferent: Ensure that source is a file
ea77593a SystemTools: CopyFileIfDifferent: Fix endless recursion
This commit is contained in:
committed by
Brad King
parent
9e27e52d4b
commit
96dd383ceb
@@ -536,7 +536,7 @@ IF(KWSYS_USE_SystemInformation)
|
||||
ENDIF()
|
||||
IF(WIN32)
|
||||
INCLUDE(CheckSymbolExists)
|
||||
SET(CMAKE_REQUIRED_LIBRARIES Psapi)
|
||||
SET(CMAKE_REQUIRED_LIBRARIES psapi)
|
||||
CHECK_SYMBOL_EXISTS(GetProcessMemoryInfo "windows.h;psapi.h" KWSYS_SYS_HAS_PSAPI)
|
||||
UNSET(CMAKE_REQUIRED_LIBRARIES)
|
||||
IF(KWSYS_SYS_HAS_PSAPI)
|
||||
|
||||
@@ -2186,12 +2186,15 @@ bool SystemTools::CopyFileIfDifferent(const std::string& source,
|
||||
// FilesDiffer does not handle file to directory compare
|
||||
if (SystemTools::FileIsDirectory(destination)) {
|
||||
const std::string new_destination = FileInDir(source, destination);
|
||||
return SystemTools::CopyFileIfDifferent(source, new_destination);
|
||||
}
|
||||
// source and destination are files so do a copy if they
|
||||
// are different
|
||||
if (SystemTools::FilesDiffer(source, destination)) {
|
||||
return SystemTools::CopyFileAlways(source, destination);
|
||||
if (!SystemTools::ComparePath(new_destination, destination)) {
|
||||
return SystemTools::CopyFileIfDifferent(source, new_destination);
|
||||
}
|
||||
} else {
|
||||
// source and destination are files so do a copy if they
|
||||
// are different
|
||||
if (SystemTools::FilesDiffer(source, destination)) {
|
||||
return SystemTools::CopyFileAlways(source, destination);
|
||||
}
|
||||
}
|
||||
// at this point the files must be the same so return true
|
||||
return true;
|
||||
|
||||
@@ -1074,6 +1074,15 @@ static bool CheckCopyFileIfDifferent()
|
||||
}
|
||||
}
|
||||
|
||||
if (!kwsys::SystemTools::MakeDirectory("dir_a") ||
|
||||
!kwsys::SystemTools::MakeDirectory("dir_b")) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!kwsys::SystemTools::CopyFileIfDifferent("dir_a/", "dir_b")) {
|
||||
ret = false;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user