Commit e015df7d authored by Bill Hoffman's avatar Bill Hoffman
Browse files

ENH: better finding of mingw from msys, and delete CMakeFiles directory when cache is deleted

parent 2cb68f60
......@@ -41,7 +41,10 @@ IF(NOT CMAKE_C_COMPILER)
SET(CMAKE_C_COMPILER ${CMAKE_C_COMPILER_INIT} CACHE STRING "C compiler")
ENDIF(NOT 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)
IF(NOT CMAKE_RANLIB)
......
......@@ -19,6 +19,7 @@
#include "cmSystemTools.h"
#include "cmCacheManager.h"
#include "cmMakefile.h"
#include <cmsys/Directory.hxx>
#include <cmsys/RegularExpression.hxx>
......@@ -580,8 +581,26 @@ bool cmCacheManager::SaveCache(const char* path)
bool cmCacheManager::DeleteCache(const char* path)
{
std::string cacheFile = path;
cmSystemTools::ConvertToUnixSlashes(cacheFile);
std::string cmakeFiles = cacheFile;
cacheFile += "/CMakeCache.txt";
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;
}
......
......@@ -25,13 +25,36 @@ cmGlobalMSYSMakefileGenerator::cmGlobalMSYSMakefileGenerator()
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,
cmMakefile *mf)
{
this->FindMakeProgram(mf);
std::string makeProgram = mf->GetRequiredDefinition("CMAKE_MAKE_PROGRAM");
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("/msys/1.0/bin");
locations.push_back("c:/mingw/bin");
......
......@@ -45,6 +45,9 @@ public:
* extension, pthreads, byte order etc.
*/
virtual void EnableLanguage(std::vector<std::string>const& languages, cmMakefile *);
private:
std::string FindMinGW(std::string const& makeloc);
};
#endif
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment