From 90a97d32df1a7809d755c47ed84c25fd2d46b4fe Mon Sep 17 00:00:00 2001 From: Florian Friesdorf Date: Wed, 29 Oct 2014 23:44:53 +0100 Subject: cygwin cmake --- .../tools/build-managers/cmake/2.8.11-cygwin.patch | 237 +++++++++++++++++++++ .../tools/build-managers/cmake/default.nix | 4 +- 2 files changed, 239 insertions(+), 2 deletions(-) create mode 100644 pkgs/development/tools/build-managers/cmake/2.8.11-cygwin.patch diff --git a/pkgs/development/tools/build-managers/cmake/2.8.11-cygwin.patch b/pkgs/development/tools/build-managers/cmake/2.8.11-cygwin.patch new file mode 100644 index 00000000000..e16dab32632 --- /dev/null +++ b/pkgs/development/tools/build-managers/cmake/2.8.11-cygwin.patch @@ -0,0 +1,237 @@ +--- cmake-2.8.10/Source/cmFileCommand.cxx 2012-10-31 10:32:06.000000000 -0500 ++++ cmake-2.8.10/Source/cmFileCommand.cxx 2013-03-16 22:55:11.306681100 -0500 +@@ -1002,7 +1002,7 @@ protected: + MatchProperties CollectMatchProperties(const char* file) + { + // Match rules are case-insensitive on some platforms. +-#if defined(_WIN32) || defined(__APPLE__) || defined(__CYGWIN__) ++#if defined(_WIN32) || defined(__APPLE__) + std::string lower = cmSystemTools::LowerCase(file); + const char* file_to_match = lower.c_str(); + #else +--- cmake-2.8.10/Source/cmInstallCommand.cxx 2012-10-31 10:32:06.000000000 -0500 ++++ cmake-2.8.10/Source/cmInstallCommand.cxx 2013-03-16 22:56:21.008667800 -0500 +@@ -1090,7 +1090,7 @@ cmInstallCommand::HandleDirectoryMode(st + { + literal_args += " REGEX \""; + // Match rules are case-insensitive on some platforms. +-#if defined(_WIN32) || defined(__APPLE__) || defined(__CYGWIN__) ++#if defined(_WIN32) || defined(__APPLE__) + std::string regex = cmSystemTools::LowerCase(args[i]); + #else + std::string regex = args[i]; +--- cmake-2.8.10/Source/kwsys/Glob.cxx 2012-10-31 10:32:06.000000000 -0500 ++++ cmake-2.8.10/Source/kwsys/Glob.cxx 2013-03-16 22:58:54.192429400 -0500 +@@ -37,7 +37,7 @@ + #include + 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 + # define KWSYS_GLOB_CASE_INDEPENDENT + #endif +--- cmake-2.8.11/Source/kwsys/SystemInformation.cxx 2013-05-15 12:38:13.000000000 -0500 ++++ cmake-2.8.11/Source/kwsys/SystemInformation.cxx 2013-07-08 01:57:31.216321800 -0500 +@@ -888,7 +888,7 @@ void SystemInformation::RunMemoryCheck() + // Hide implementation details in an anonymous namespace. + namespace { + // ***************************************************************************** +-#if defined(__linux) || defined(__APPLE__) ++#if defined(__linux) || defined(__APPLE__) || defined(__CYGWIN__) + int LoadLines( + FILE *file, + kwsys_stl::vector &lines) +@@ -918,7 +918,7 @@ int LoadLines( + return nRead; + } + +-# if defined(__linux) ++# if defined(__linux) || defined(__CYGWIN__) + // ***************************************************************************** + int LoadLines( + const char *fileName, +@@ -957,7 +957,7 @@ int NameValue( + } + #endif + +-#if defined(__linux) ++#if defined(__linux) || defined(__CYGWIN__) + // **************************************************************************** + template + int GetFieldsFromFile( +@@ -2869,7 +2869,6 @@ bool SystemInformationImplementation::Re + pos = buffer.find("processor\t",pos+1); + } + +-#ifdef __linux + // Find the largest physical id. + int maxId = -1; + kwsys_stl::string idc = +@@ -2893,14 +2892,6 @@ bool SystemInformationImplementation::Re + this->NumberOfPhysicalCPU=static_cast( + numberOfCoresPerCPU*(maxId+1)); + +-#else // __CYGWIN__ +- // does not have "physical id" entries, neither "cpu cores" +- // this has to be fixed for hyper-threading. +- kwsys_stl::string cpucount = +- this->ExtractValueFromCpuInfoFile(buffer,"cpu count"); +- this->NumberOfPhysicalCPU= +- this->NumberOfLogicalCPU = atoi(cpucount.c_str()); +-#endif + // gotta have one, and if this is 0 then we get a / by 0n + // better to have a bad answer than a crash + if(this->NumberOfPhysicalCPU <= 0) +@@ -3086,7 +3077,7 @@ SystemInformationImplementation::GetHost + GlobalMemoryStatusEx(&statex); + return statex.ullTotalPhys/1024; + # endif +-#elif defined(__linux) ++#elif defined(__linux) || defined(__CYGWIN__) + SystemInformation::LongLong memTotal=0; + int ierr=GetFieldFromFile("/proc/meminfo","MemTotal:",memTotal); + if (ierr) +@@ -3217,7 +3208,7 @@ SystemInformationImplementation::GetHost + GlobalMemoryStatusEx(&statex); + return (statex.ullTotalPhys - statex.ullAvailPhys)/1024; + # endif +-#elif defined(__linux) ++#elif defined(__linux) || defined(__CYGWIN__) + const char *names[3]={"MemTotal:","MemFree:",NULL}; + SystemInformation::LongLong values[2]={SystemInformation::LongLong(0)}; + int ierr=GetFieldsFromFile("/proc/meminfo",names,values); +@@ -3276,7 +3267,7 @@ SystemInformationImplementation::GetProc + return -2; + } + return pmc.WorkingSetSize/1024; +-#elif defined(__linux) ++#elif defined(__linux) || defined(__CYGWIN__) + SystemInformation::LongLong memUsed=0; + int ierr=GetFieldFromFile("/proc/self/status","VmRSS:",memUsed); + if (ierr) +@@ -3328,7 +3319,7 @@ SystemInformationImplementation::GetProc + { + #if defined(_WIN32) + return GetCurrentProcessId(); +-#elif defined(__linux) || defined(__APPLE__) ++#elif defined(__linux) || defined(__APPLE__) || defined(__CYGWIN__) + return getpid(); + #else + return -1; +--- cmake-2.8.10/Source/kwsys/SystemTools.cxx 2012-10-31 10:32:06.000000000 -0500 ++++ cmake-2.8.10/Source/kwsys/SystemTools.cxx 2013-03-16 22:52:11.830415600 -0500 +@@ -75,19 +75,12 @@ + // Windows API. + #if defined(_WIN32) + # include +-#elif defined (__CYGWIN__) +-# include +-# undef _WIN32 + #endif + + #if !KWSYS_CXX_HAS_ENVIRON_IN_STDLIB_H + extern char **environ; + #endif + +-#ifdef __CYGWIN__ +-extern "C" void cygwin_conv_to_win32_path(const char *path, char *win32_path); +-#endif +- + // getpwnam doesn't exist on Windows and Cray Xt3/Catamount + // same for TIOCGWINSZ + #if defined(_WIN32) || defined (__LIBCATAMOUNT__) +@@ -1068,7 +1061,7 @@ bool SystemTools::SameFile(const char* f + } + + //---------------------------------------------------------------------------- +-#if defined(_WIN32) || defined(__CYGWIN__) ++#if defined(_WIN32) + static bool WindowsFileExists(const char* filename) + { + WIN32_FILE_ATTRIBUTE_DATA fd; +@@ -1083,7 +1076,7 @@ bool SystemTools::FileExists(const char* + { + return false; + } +-#if defined(__CYGWIN__) ++#if 0 + // Convert filename to native windows path if possible. + char winpath[MAX_PATH]; + if(SystemTools::PathCygwinToWin32(filename, winpath)) +@@ -1111,7 +1104,7 @@ bool SystemTools::FileExists(const char* + } + + //---------------------------------------------------------------------------- +-#ifdef __CYGWIN__ ++#if 0 + bool SystemTools::PathCygwinToWin32(const char *path, char *win32_path) + { + SystemToolsTranslationMap::iterator i = +@@ -3894,7 +3887,7 @@ bool SystemTools::LocateFileInDir(const + bool SystemTools::FileIsFullPath(const char* in_name) + { + kwsys_stl::string name = in_name; +-#if defined(_WIN32) || defined(__CYGWIN__) ++#if defined(_WIN32) + // On Windows, the name must be at least two characters long. + if(name.length() < 2) + { +@@ -4712,9 +4705,6 @@ bool SystemTools::ParseURL( const kwsys_ + unsigned int SystemToolsManagerCount; + SystemToolsTranslationMap *SystemTools::TranslationMap; + SystemToolsTranslationMap *SystemTools::LongPathMap; +-#ifdef __CYGWIN__ +-SystemToolsTranslationMap *SystemTools::Cyg2Win32Map; +-#endif + + // SystemToolsManager manages the SystemTools singleton. + // SystemToolsManager should be included in any translation unit +@@ -4760,9 +4750,6 @@ void SystemTools::ClassInitialize() + // Allocate the translation map first. + SystemTools::TranslationMap = new SystemToolsTranslationMap; + SystemTools::LongPathMap = new SystemToolsTranslationMap; +-#ifdef __CYGWIN__ +- SystemTools::Cyg2Win32Map = new SystemToolsTranslationMap; +-#endif + + // Add some special translation paths for unix. These are not added + // for windows because drive letters need to be maintained. Also, +@@ -4817,9 +4804,6 @@ void SystemTools::ClassFinalize() + { + delete SystemTools::TranslationMap; + delete SystemTools::LongPathMap; +-#ifdef __CYGWIN__ +- delete SystemTools::Cyg2Win32Map; +-#endif + } + + +--- cmake-2.8.10/Source/kwsys/SystemTools.hxx.in 2012-10-31 10:32:06.000000000 -0500 ++++ cmake-2.8.10/Source/kwsys/SystemTools.hxx.in 2013-03-16 23:10:30.185237900 -0500 +@@ -277,15 +277,6 @@ public: + static bool FileExists(const char* filename); + + /** +- * 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 + */ + static unsigned long FileLength(const char *filename); +@@ -887,9 +878,6 @@ private: + */ + static SystemToolsTranslationMap *TranslationMap; + static SystemToolsTranslationMap *LongPathMap; +-#ifdef __CYGWIN__ +- static SystemToolsTranslationMap *Cyg2Win32Map; +-#endif + friend class SystemToolsManager; + }; + diff --git a/pkgs/development/tools/build-managers/cmake/default.nix b/pkgs/development/tools/build-managers/cmake/default.nix index 45bdeece45e..9f2ed0a7352 100644 --- a/pkgs/development/tools/build-managers/cmake/default.nix +++ b/pkgs/development/tools/build-managers/cmake/default.nix @@ -36,7 +36,7 @@ stdenv.mkDerivation rec { url = "http://public.kitware.com/Bug/file_download.php?" + "file_id=4981&type=bug"; sha256 = "16acmdr27adma7gs9rs0dxdiqppm15vl3vv3agy7y8s94wyh4ybv"; - }); + }) ++ stdenv.lib.optional stdenv.isCygwin ./2.8.11-cygwin.patch; buildInputs = [ bzip2 curl expat libarchive xz zlib ] @@ -52,8 +52,8 @@ stdenv.mkDerivation rec { [ "--docdir=/share/doc/${name}" "--mandir=/share/man" - "--system-libs" ] + ++ optional (!stdenv.isCygwin) "--system-libs" ++ optional (jsoncpp == null) "--no-system-jsoncpp" ++ optional useQt4 "--qt-gui" ++ ["--"] -- cgit 1.4.1