diff options
author | Bill Hoffman <bill.hoffman@kitware.com> | 2001-02-19 20:13:48 (GMT) |
---|---|---|
committer | Bill Hoffman <bill.hoffman@kitware.com> | 2001-02-19 20:13:48 (GMT) |
commit | 89e037ee19ed033fee0830a0c56c7ae956265512 (patch) | |
tree | 7a98427243bde8b3e73210dee288784981b46f9c /Source/cmFindProgramCommand.cxx | |
parent | a4bbb55efdbb8d1b948b55248b54a3532f2f9d41 (diff) | |
download | CMake-89e037ee19ed033fee0830a0c56c7ae956265512.zip CMake-89e037ee19ed033fee0830a0c56c7ae956265512.tar.gz CMake-89e037ee19ed033fee0830a0c56c7ae956265512.tar.bz2 |
ENH: first pass at cache, clean up the unix generator, clean up configure.in some
Diffstat (limited to 'Source/cmFindProgramCommand.cxx')
-rw-r--r-- | Source/cmFindProgramCommand.cxx | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/Source/cmFindProgramCommand.cxx b/Source/cmFindProgramCommand.cxx index c3d3275..81678b3 100644 --- a/Source/cmFindProgramCommand.cxx +++ b/Source/cmFindProgramCommand.cxx @@ -14,6 +14,7 @@ =========================================================================*/ #include "cmFindProgramCommand.h" +#include "cmCacheManager.h" #include <stdlib.h> #include <stdio.h> @@ -26,13 +27,22 @@ bool cmFindProgramCommand::Invoke(std::vector<std::string>& args) this->SetError("called with incorrect number of arguments"); return false; } - - std::vector<std::string> path; - cmSystemTools::GetPath(path); - std::vector<std::string>::iterator i = args.begin(); + // Use the first argument as the name of something to be defined const char* define = (*i).c_str(); - i++; + i++; // move iterator to next arg + // Now check and see if the value has been stored in the cache + // already, if so use that value and don't look for the program + const char* cacheValue + = cmCacheManager::GetInstance()->GetCacheValue(define); + if(cacheValue) + { + m_Makefile->AddDefinition(define, cacheValue); + return true; + } + // if it is not in the cache, then search the system path + std::vector<std::string> path; + cmSystemTools::GetPath(path); for(; i != args.end(); ++i) { for(int k=0; k < path.size(); k++) @@ -45,6 +55,10 @@ bool cmFindProgramCommand::Invoke(std::vector<std::string>& args) #endif if(cmSystemTools::FileExists(tryPath.c_str())) { + // Save the value in the cache + cmCacheManager::GetInstance()->AddCacheEntry(define, + tryPath.c_str(), + cmCacheManager::FILEPATH); m_Makefile->AddDefinition(define, tryPath.c_str()); return true; } |