mirror of
https://github.com/Kitware/CMake.git
synced 2026-04-22 22:31:18 -05:00
Merge branch 'upstream-KWSys' into update-kwsys
# By KWSys Upstream * upstream-KWSys: KWSys 2020-08-05 (185dd56e)
This commit is contained in:
@@ -3,7 +3,9 @@
|
|||||||
|
|
||||||
set(CTEST_PROJECT_NAME "KWSys")
|
set(CTEST_PROJECT_NAME "KWSys")
|
||||||
set(CTEST_NIGHTLY_START_TIME "21:00:00 EDT")
|
set(CTEST_NIGHTLY_START_TIME "21:00:00 EDT")
|
||||||
set(CTEST_DROP_METHOD "http")
|
if (NOT CTEST_DROP_METHOD STREQUAL "https")
|
||||||
|
set(CTEST_DROP_METHOD "http")
|
||||||
|
endif ()
|
||||||
set(CTEST_DROP_SITE "open.cdash.org")
|
set(CTEST_DROP_SITE "open.cdash.org")
|
||||||
set(CTEST_DROP_LOCATION "/submit.php?project=PublicDashboard")
|
set(CTEST_DROP_LOCATION "/submit.php?project=PublicDashboard")
|
||||||
set(CTEST_DROP_SITE_CDASH TRUE)
|
set(CTEST_DROP_SITE_CDASH TRUE)
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
namespace KWSYS_NAMESPACE {
|
namespace KWSYS_NAMESPACE {
|
||||||
#if defined(_WIN32) || defined(__APPLE__) || defined(__CYGWIN__)
|
#if defined(_WIN32) || defined(__APPLE__)
|
||||||
// On Windows and Apple, no difference between lower and upper case
|
// On Windows and Apple, no difference between lower and upper case
|
||||||
# define KWSYS_GLOB_CASE_INDEPENDENT
|
# define KWSYS_GLOB_CASE_INDEPENDENT
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -863,7 +863,7 @@ void SystemInformation::RunMemoryCheck()
|
|||||||
// Hide implementation details in an anonymous namespace.
|
// Hide implementation details in an anonymous namespace.
|
||||||
namespace {
|
namespace {
|
||||||
// *****************************************************************************
|
// *****************************************************************************
|
||||||
#if defined(__linux) || defined(__APPLE__)
|
#if defined(__linux) || defined(__APPLE__) || defined(__CYGWIN__)
|
||||||
int LoadLines(FILE* file, std::vector<std::string>& lines)
|
int LoadLines(FILE* file, std::vector<std::string>& lines)
|
||||||
{
|
{
|
||||||
// Load each line in the given file into a the vector.
|
// Load each line in the given file into a the vector.
|
||||||
@@ -893,7 +893,7 @@ int LoadLines(FILE* file, std::vector<std::string>& lines)
|
|||||||
return nRead;
|
return nRead;
|
||||||
}
|
}
|
||||||
|
|
||||||
# if defined(__linux)
|
# if defined(__linux) || defined(__CYGWIN__)
|
||||||
// *****************************************************************************
|
// *****************************************************************************
|
||||||
int LoadLines(const char* fileName, std::vector<std::string>& lines)
|
int LoadLines(const char* fileName, std::vector<std::string>& lines)
|
||||||
{
|
{
|
||||||
@@ -926,7 +926,7 @@ int NameValue(std::vector<std::string> const& lines, std::string const& name,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__linux)
|
#if defined(__linux) || defined(__CYGWIN__)
|
||||||
// ****************************************************************************
|
// ****************************************************************************
|
||||||
template <typename T>
|
template <typename T>
|
||||||
int GetFieldsFromFile(const char* fileName, const char** fieldNames, T* values)
|
int GetFieldsFromFile(const char* fileName, const char** fieldNames, T* values)
|
||||||
@@ -3393,7 +3393,7 @@ bool SystemInformationImplementation::RetreiveInformationFromCpuInfoFile()
|
|||||||
pos = buffer.find("processor\t", pos + 1);
|
pos = buffer.find("processor\t", pos + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __linux
|
#if defined(__linux) || defined(__CYGWIN__)
|
||||||
// Count sockets.
|
// Count sockets.
|
||||||
std::set<int> PhysicalIDs;
|
std::set<int> PhysicalIDs;
|
||||||
std::string idc = this->ExtractValueFromCpuInfoFile(buffer, "physical id");
|
std::string idc = this->ExtractValueFromCpuInfoFile(buffer, "physical id");
|
||||||
@@ -3414,8 +3414,8 @@ bool SystemInformationImplementation::RetreiveInformationFromCpuInfoFile()
|
|||||||
this->NumberOfPhysicalCPU =
|
this->NumberOfPhysicalCPU =
|
||||||
NumberOfCoresPerSocket * (unsigned int)NumberOfSockets;
|
NumberOfCoresPerSocket * (unsigned int)NumberOfSockets;
|
||||||
|
|
||||||
#else // __CYGWIN__
|
#else
|
||||||
// does not have "physical id" entries, neither "cpu cores"
|
// For systems which do not have "physical id" entries, neither "cpu cores"
|
||||||
// this has to be fixed for hyper-threading.
|
// this has to be fixed for hyper-threading.
|
||||||
std::string cpucount =
|
std::string cpucount =
|
||||||
this->ExtractValueFromCpuInfoFile(buffer, "cpu count");
|
this->ExtractValueFromCpuInfoFile(buffer, "cpu count");
|
||||||
@@ -3597,7 +3597,7 @@ long long SystemInformationImplementation::GetHostMemoryTotal()
|
|||||||
GlobalMemoryStatusEx(&statex);
|
GlobalMemoryStatusEx(&statex);
|
||||||
return statex.ullTotalPhys / 1024;
|
return statex.ullTotalPhys / 1024;
|
||||||
# endif
|
# endif
|
||||||
#elif defined(__linux)
|
#elif defined(__linux) || defined(__CYGWIN__)
|
||||||
long long memTotal = 0;
|
long long memTotal = 0;
|
||||||
int ierr = GetFieldFromFile("/proc/meminfo", "MemTotal:", memTotal);
|
int ierr = GetFieldFromFile("/proc/meminfo", "MemTotal:", memTotal);
|
||||||
if (ierr) {
|
if (ierr) {
|
||||||
@@ -3712,6 +3712,16 @@ long long SystemInformationImplementation::GetHostMemoryUsed()
|
|||||||
GlobalMemoryStatusEx(&statex);
|
GlobalMemoryStatusEx(&statex);
|
||||||
return (statex.ullTotalPhys - statex.ullAvailPhys) / 1024;
|
return (statex.ullTotalPhys - statex.ullAvailPhys) / 1024;
|
||||||
# endif
|
# endif
|
||||||
|
#elif defined(__CYGWIN__)
|
||||||
|
const char* names[3] = { "MemTotal:", "MemFree:", nullptr };
|
||||||
|
long long values[2] = { 0 };
|
||||||
|
int ierr = GetFieldsFromFile("/proc/meminfo", names, values);
|
||||||
|
if (ierr) {
|
||||||
|
return ierr;
|
||||||
|
}
|
||||||
|
long long& memTotal = values[0];
|
||||||
|
long long& memFree = values[1];
|
||||||
|
return memTotal - memFree;
|
||||||
#elif defined(__linux)
|
#elif defined(__linux)
|
||||||
// First try to use MemAvailable, but it only works on newer kernels
|
// First try to use MemAvailable, but it only works on newer kernels
|
||||||
const char* names2[3] = { "MemTotal:", "MemAvailable:", nullptr };
|
const char* names2[3] = { "MemTotal:", "MemAvailable:", nullptr };
|
||||||
@@ -3773,7 +3783,7 @@ long long SystemInformationImplementation::GetProcMemoryUsed()
|
|||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
return pmc.WorkingSetSize / 1024;
|
return pmc.WorkingSetSize / 1024;
|
||||||
#elif defined(__linux)
|
#elif defined(__linux) || defined(__CYGWIN__)
|
||||||
long long memUsed = 0;
|
long long memUsed = 0;
|
||||||
int ierr = GetFieldFromFile("/proc/self/status", "VmRSS:", memUsed);
|
int ierr = GetFieldFromFile("/proc/self/status", "VmRSS:", memUsed);
|
||||||
if (ierr) {
|
if (ierr) {
|
||||||
@@ -3850,7 +3860,8 @@ long long SystemInformationImplementation::GetProcessId()
|
|||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
return GetCurrentProcessId();
|
return GetCurrentProcessId();
|
||||||
#elif defined(__linux) || defined(__APPLE__) || defined(__OpenBSD__) || \
|
#elif defined(__linux) || defined(__APPLE__) || defined(__OpenBSD__) || \
|
||||||
defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__)
|
defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) || \
|
||||||
|
defined(__CYGWIN__)
|
||||||
return getpid();
|
return getpid();
|
||||||
#else
|
#else
|
||||||
return -1;
|
return -1;
|
||||||
|
|||||||
@@ -96,19 +96,12 @@
|
|||||||
# if defined(_MSC_VER) && _MSC_VER >= 1800
|
# if defined(_MSC_VER) && _MSC_VER >= 1800
|
||||||
# define KWSYS_WINDOWS_DEPRECATED_GetVersionEx
|
# define KWSYS_WINDOWS_DEPRECATED_GetVersionEx
|
||||||
# endif
|
# endif
|
||||||
#elif defined(__CYGWIN__)
|
|
||||||
# include <windows.h>
|
|
||||||
# undef _WIN32
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !KWSYS_CXX_HAS_ENVIRON_IN_STDLIB_H
|
#if !KWSYS_CXX_HAS_ENVIRON_IN_STDLIB_H
|
||||||
extern char** environ;
|
extern char** environ;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __CYGWIN__
|
|
||||||
# include <sys/cygwin.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// getpwnam doesn't exist on Windows and Cray Xt3/Catamount
|
// getpwnam doesn't exist on Windows and Cray Xt3/Catamount
|
||||||
// same for TIOCGWINSZ
|
// same for TIOCGWINSZ
|
||||||
#if defined(_WIN32) || defined(__LIBCATAMOUNT__) || \
|
#if defined(_WIN32) || defined(__LIBCATAMOUNT__) || \
|
||||||
@@ -1290,15 +1283,7 @@ bool SystemTools::PathExists(const std::string& path)
|
|||||||
if (path.empty()) {
|
if (path.empty()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
#if defined(__CYGWIN__)
|
#if defined(_WIN32)
|
||||||
// Convert path to native windows path if possible.
|
|
||||||
char winpath[MAX_PATH];
|
|
||||||
if (SystemTools::PathCygwinToWin32(path.c_str(), winpath)) {
|
|
||||||
return (GetFileAttributesA(winpath) != INVALID_FILE_ATTRIBUTES);
|
|
||||||
}
|
|
||||||
struct stat st;
|
|
||||||
return lstat(path.c_str(), &st) == 0;
|
|
||||||
#elif defined(_WIN32)
|
|
||||||
return (GetFileAttributesW(Encoding::ToWindowsExtendedPath(path).c_str()) !=
|
return (GetFileAttributesW(Encoding::ToWindowsExtendedPath(path).c_str()) !=
|
||||||
INVALID_FILE_ATTRIBUTES);
|
INVALID_FILE_ATTRIBUTES);
|
||||||
#else
|
#else
|
||||||
@@ -1320,14 +1305,7 @@ bool SystemTools::FileExists(const std::string& filename)
|
|||||||
if (filename.empty()) {
|
if (filename.empty()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
#if defined(__CYGWIN__)
|
#if defined(_WIN32)
|
||||||
// Convert filename to native windows path if possible.
|
|
||||||
char winpath[MAX_PATH];
|
|
||||||
if (SystemTools::PathCygwinToWin32(filename.c_str(), winpath)) {
|
|
||||||
return (GetFileAttributesA(winpath) != INVALID_FILE_ATTRIBUTES);
|
|
||||||
}
|
|
||||||
return access(filename.c_str(), R_OK) == 0;
|
|
||||||
#elif defined(_WIN32)
|
|
||||||
DWORD attr =
|
DWORD attr =
|
||||||
GetFileAttributesW(Encoding::ToWindowsExtendedPath(filename).c_str());
|
GetFileAttributesW(Encoding::ToWindowsExtendedPath(filename).c_str());
|
||||||
if (attr == INVALID_FILE_ATTRIBUTES) {
|
if (attr == INVALID_FILE_ATTRIBUTES) {
|
||||||
@@ -1433,24 +1411,6 @@ int SystemTools::Stat(const std::string& path, SystemTools::Stat_t* buf)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __CYGWIN__
|
|
||||||
bool SystemTools::PathCygwinToWin32(const char* path, char* win32_path)
|
|
||||||
{
|
|
||||||
auto itr = SystemToolsStatics->Cyg2Win32Map.find(path);
|
|
||||||
if (itr != SystemToolsStatics->Cyg2Win32Map.end()) {
|
|
||||||
strncpy(win32_path, itr->second.c_str(), MAX_PATH);
|
|
||||||
} else {
|
|
||||||
if (cygwin_conv_path(CCP_POSIX_TO_WIN_A, path, win32_path, MAX_PATH) !=
|
|
||||||
0) {
|
|
||||||
win32_path[0] = 0;
|
|
||||||
}
|
|
||||||
SystemToolsStatics->Cyg2Win32Map.insert(
|
|
||||||
SystemToolsStatic::StringMap::value_type(path, win32_path));
|
|
||||||
}
|
|
||||||
return win32_path[0] != 0;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
bool SystemTools::Touch(const std::string& filename, bool create)
|
bool SystemTools::Touch(const std::string& filename, bool create)
|
||||||
{
|
{
|
||||||
if (!SystemTools::FileExists(filename)) {
|
if (!SystemTools::FileExists(filename)) {
|
||||||
|
|||||||
@@ -331,15 +331,6 @@ public:
|
|||||||
static int Stat(const char* path, Stat_t* buf);
|
static int Stat(const char* path, Stat_t* buf);
|
||||||
static int Stat(const std::string& path, Stat_t* buf);
|
static int Stat(const std::string& path, Stat_t* buf);
|
||||||
|
|
||||||
/**
|
|
||||||
* Converts Cygwin path to Win32 path. Uses dictionary container for
|
|
||||||
* caching and calls to cygwin_conv_to_win32_path from Cygwin dll
|
|
||||||
* for actual translation. Returns true on success, else false.
|
|
||||||
*/
|
|
||||||
#ifdef __CYGWIN__
|
|
||||||
static bool PathCygwinToWin32(const char* path, char* win32_path);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return file length
|
* Return file length
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user