ENH: better finding of mingw from msys, and delete CMakeFiles directory when cache is deleted
This commit is contained in:
parent
2cb68f6000
commit
e015df7d06
|
@ -41,7 +41,10 @@ IF(NOT CMAKE_C_COMPILER)
|
||||||
SET(CMAKE_C_COMPILER ${CMAKE_C_COMPILER_INIT} CACHE STRING "C compiler")
|
SET(CMAKE_C_COMPILER ${CMAKE_C_COMPILER_INIT} CACHE STRING "C compiler")
|
||||||
ENDIF(NOT CMAKE_C_COMPILER)
|
ENDIF(NOT CMAKE_C_COMPILER)
|
||||||
MARK_AS_ADVANCED(CMAKE_C_COMPILER)
|
MARK_AS_ADVANCED(CMAKE_C_COMPILER)
|
||||||
FIND_PROGRAM(CMAKE_AR NAMES ar PATHS /mingw/bin c:/mingw/bin /msys/1.0/bin c:/msys/1.0/bin )
|
GET_FILENAME_COMPONENT(COMPILER_LOCATION "${CMAKE_C_COMPILER}"
|
||||||
|
PATH)
|
||||||
|
|
||||||
|
FIND_PROGRAM(CMAKE_AR NAMES ar PATHS ${COMPILER_LOCATION} )
|
||||||
|
|
||||||
FIND_PROGRAM(CMAKE_RANLIB NAMES ranlib)
|
FIND_PROGRAM(CMAKE_RANLIB NAMES ranlib)
|
||||||
IF(NOT CMAKE_RANLIB)
|
IF(NOT CMAKE_RANLIB)
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
#include "cmSystemTools.h"
|
#include "cmSystemTools.h"
|
||||||
#include "cmCacheManager.h"
|
#include "cmCacheManager.h"
|
||||||
#include "cmMakefile.h"
|
#include "cmMakefile.h"
|
||||||
|
#include <cmsys/Directory.hxx>
|
||||||
|
|
||||||
#include <cmsys/RegularExpression.hxx>
|
#include <cmsys/RegularExpression.hxx>
|
||||||
|
|
||||||
|
@ -580,8 +581,26 @@ bool cmCacheManager::SaveCache(const char* path)
|
||||||
bool cmCacheManager::DeleteCache(const char* path)
|
bool cmCacheManager::DeleteCache(const char* path)
|
||||||
{
|
{
|
||||||
std::string cacheFile = path;
|
std::string cacheFile = path;
|
||||||
|
cmSystemTools::ConvertToUnixSlashes(cacheFile);
|
||||||
|
std::string cmakeFiles = cacheFile;
|
||||||
cacheFile += "/CMakeCache.txt";
|
cacheFile += "/CMakeCache.txt";
|
||||||
cmSystemTools::RemoveFile(cacheFile.c_str());
|
cmSystemTools::RemoveFile(cacheFile.c_str());
|
||||||
|
// now remove the files in the CMakeFiles directory
|
||||||
|
// this cleans up language cache files
|
||||||
|
cmsys::Directory dir;
|
||||||
|
cmakeFiles += "/CMakeFiles";
|
||||||
|
dir.Load(cmakeFiles.c_str());
|
||||||
|
for (unsigned long fileNum = 0; fileNum < dir.GetNumberOfFiles(); ++fileNum)
|
||||||
|
{
|
||||||
|
if(!cmSystemTools::
|
||||||
|
FileIsDirectory(dir.GetFile(fileNum)))
|
||||||
|
{
|
||||||
|
std::string fullPath = cmakeFiles;
|
||||||
|
fullPath += "/";
|
||||||
|
fullPath += dir.GetFile(fileNum);
|
||||||
|
cmSystemTools::RemoveFile(fullPath.c_str());
|
||||||
|
}
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,13 +25,36 @@ cmGlobalMSYSMakefileGenerator::cmGlobalMSYSMakefileGenerator()
|
||||||
m_ForceUnixPaths = true;
|
m_ForceUnixPaths = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string
|
||||||
|
cmGlobalMSYSMakefileGenerator::FindMinGW(std::string const& makeloc)
|
||||||
|
{
|
||||||
|
std::string fstab = makeloc;
|
||||||
|
fstab += "/../etc/fstab";
|
||||||
|
std::ifstream fin(fstab.c_str());
|
||||||
|
std::string path;
|
||||||
|
std::string mount;
|
||||||
|
while(fin)
|
||||||
|
{
|
||||||
|
fin >> path;
|
||||||
|
fin >> mount;
|
||||||
|
if(mount == "/mingw")
|
||||||
|
{
|
||||||
|
path += "/bin";
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
void cmGlobalMSYSMakefileGenerator::EnableLanguage(std::vector<std::string>const& l,
|
void cmGlobalMSYSMakefileGenerator::EnableLanguage(std::vector<std::string>const& l,
|
||||||
cmMakefile *mf)
|
cmMakefile *mf)
|
||||||
{
|
{
|
||||||
this->FindMakeProgram(mf);
|
this->FindMakeProgram(mf);
|
||||||
std::string makeProgram = mf->GetRequiredDefinition("CMAKE_MAKE_PROGRAM");
|
std::string makeProgram = mf->GetRequiredDefinition("CMAKE_MAKE_PROGRAM");
|
||||||
std::vector<std::string> locations;
|
std::vector<std::string> locations;
|
||||||
locations.push_back(cmSystemTools::GetProgramPath(makeProgram.c_str()));
|
std::string makeloc = cmSystemTools::GetProgramPath(makeProgram.c_str());
|
||||||
|
locations.push_back(makeloc);
|
||||||
|
locations.push_back(this->FindMinGW(makeloc));
|
||||||
locations.push_back("/mingw/bin");
|
locations.push_back("/mingw/bin");
|
||||||
locations.push_back("/msys/1.0/bin");
|
locations.push_back("/msys/1.0/bin");
|
||||||
locations.push_back("c:/mingw/bin");
|
locations.push_back("c:/mingw/bin");
|
||||||
|
|
|
@ -45,6 +45,9 @@ public:
|
||||||
* extension, pthreads, byte order etc.
|
* extension, pthreads, byte order etc.
|
||||||
*/
|
*/
|
||||||
virtual void EnableLanguage(std::vector<std::string>const& languages, cmMakefile *);
|
virtual void EnableLanguage(std::vector<std::string>const& languages, cmMakefile *);
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::string FindMinGW(std::string const& makeloc);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue