summaryrefslogtreecommitdiffstats
path: root/Source/cmOptionCommand.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'Source/cmOptionCommand.cxx')
-rw-r--r--Source/cmOptionCommand.cxx27
1 files changed, 18 insertions, 9 deletions
diff --git a/Source/cmOptionCommand.cxx b/Source/cmOptionCommand.cxx
index a86ad22..8c3b55f 100644
--- a/Source/cmOptionCommand.cxx
+++ b/Source/cmOptionCommand.cxx
@@ -46,20 +46,29 @@ bool cmOptionCommand::InitialPass(std::vector<std::string> const& args)
return false;
}
+ std::string initialValue = "Off";
// 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
- = m_Makefile->GetDefinition(args[0].c_str());
- if(!cacheValue)
+ cmCacheManager::CacheIterator it =
+ m_Makefile->GetCacheManager()->GetCacheIterator(args[0].c_str());
+ if(!it.IsAtEnd())
{
- std::string initialValue = "Off";
- if(args.size() == 3)
+ if ( it.GetType() != cmCacheManager::UNINITIALIZED )
{
- initialValue = args[2];
+ return true;
+ }
+ if ( it.GetValue() )
+ {
+ initialValue = it.GetValue();
}
- m_Makefile->AddCacheDefinition(args[0].c_str(),
- cmSystemTools::IsOn(initialValue.c_str()),
- args[1].c_str());
}
+ if(args.size() == 3)
+ {
+ initialValue = args[2];
+ }
+ m_Makefile->AddCacheDefinition(args[0].c_str(),
+ cmSystemTools::IsOn(initialValue.c_str()),
+ args[1].c_str());
+
return true;
}