Move global properties to cmState.

This commit is contained in:
Stephen Kelly 2015-04-11 14:17:46 +02:00 committed by Brad King
parent 0076b5d834
commit 9b5f80a83c
4 changed files with 70 additions and 41 deletions

View File

@ -191,6 +191,8 @@ void cmState::RemoveCacheEntryProperty(std::string const& key,
void cmState::Initialize() void cmState::Initialize()
{ {
this->GlobalProperties.clear();
this->PropertyDefinitions.clear(); this->PropertyDefinitions.clear();
this->DefineProperty this->DefineProperty
("RULE_LAUNCH_COMPILE", cmProperty::DIRECTORY, ("RULE_LAUNCH_COMPILE", cmProperty::DIRECTORY,
@ -384,3 +386,60 @@ void cmState::RemoveUserDefinedCommands()
} }
} }
} }
void cmState::SetGlobalProperty(const std::string& prop, const char* value)
{
this->GlobalProperties.SetProperty(prop, value, cmProperty::GLOBAL);
}
void cmState::AppendGlobalProperty(const std::string& prop,
const char* value, bool asString)
{
this->GlobalProperties.AppendProperty(prop, value,
cmProperty::GLOBAL, asString);
}
const char *cmState::GetGlobalProperty(const std::string& prop)
{
// watch for special properties
std::string output = "";
if ( prop == "CACHE_VARIABLES" )
{
std::vector<std::string> cacheKeys = this->GetCacheEntryKeys();
this->SetGlobalProperty("CACHE_VARIABLES", cmJoin(cacheKeys, ";").c_str());
}
else if ( prop == "COMMANDS" )
{
std::vector<std::string> commands = this->GetCommandNames();
this->SetGlobalProperty("COMMANDS", cmJoin(commands, ";").c_str());
}
else if ( prop == "IN_TRY_COMPILE" )
{
this->SetGlobalProperty("IN_TRY_COMPILE",
this->IsInTryCompile ? "1" : "0");
}
else if ( prop == "ENABLED_LANGUAGES" )
{
std::string langs;
langs = cmJoin(this->EnabledLanguages, ";");
this->SetGlobalProperty("ENABLED_LANGUAGES", langs.c_str());
}
#define STRING_LIST_ELEMENT(F) ";" #F
if (prop == "CMAKE_C_KNOWN_FEATURES")
{
return FOR_EACH_C_FEATURE(STRING_LIST_ELEMENT) + 1;
}
if (prop == "CMAKE_CXX_KNOWN_FEATURES")
{
return FOR_EACH_CXX_FEATURE(STRING_LIST_ELEMENT) + 1;
}
#undef STRING_LIST_ELEMENT
bool dummy = false;
return this->GlobalProperties.GetPropertyValue(prop, cmProperty::GLOBAL,
dummy);
}
bool cmState::GetGlobalPropertyAsBool(const std::string& prop)
{
return cmSystemTools::IsOn(this->GetGlobalProperty(prop));
}

View File

@ -14,6 +14,7 @@
#include "cmStandardIncludes.h" #include "cmStandardIncludes.h"
#include "cmPropertyDefinitionMap.h" #include "cmPropertyDefinitionMap.h"
#include "cmPropertyMap.h"
class cmake; class cmake;
class cmCommand; class cmCommand;
@ -88,10 +89,17 @@ public:
void RemoveUserDefinedCommands(); void RemoveUserDefinedCommands();
std::vector<std::string> GetCommandNames() const; std::vector<std::string> GetCommandNames() const;
void SetGlobalProperty(const std::string& prop, const char *value);
void AppendGlobalProperty(const std::string& prop,
const char *value,bool asString=false);
const char *GetGlobalProperty(const std::string& prop);
bool GetGlobalPropertyAsBool(const std::string& prop);
private: private:
std::map<cmProperty::ScopeType, cmPropertyDefinitionMap> PropertyDefinitions; std::map<cmProperty::ScopeType, cmPropertyDefinitionMap> PropertyDefinitions;
std::vector<std::string> EnabledLanguages; std::vector<std::string> EnabledLanguages;
std::map<std::string, cmCommand*> Commands; std::map<std::string, cmCommand*> Commands;
cmPropertyMap GlobalProperties;
cmake* CMakeInstance; cmake* CMakeInstance;
bool IsInTryCompile; bool IsInTryCompile;
}; };

View File

@ -188,8 +188,6 @@ cmake::~cmake()
void cmake::InitializeProperties() void cmake::InitializeProperties()
{ {
this->Properties.clear();
this->State->Initialize(); this->State->Initialize();
} }
@ -2187,52 +2185,18 @@ void cmake::GenerateGraphViz(const char* fileName) const
void cmake::SetProperty(const std::string& prop, const char* value) void cmake::SetProperty(const std::string& prop, const char* value)
{ {
this->Properties.SetProperty(prop, value, cmProperty::GLOBAL); this->State->SetGlobalProperty(prop, value);
} }
void cmake::AppendProperty(const std::string& prop, void cmake::AppendProperty(const std::string& prop,
const char* value, bool asString) const char* value, bool asString)
{ {
this->Properties.AppendProperty(prop, value, cmProperty::GLOBAL, asString); this->State->AppendGlobalProperty(prop, value, asString);
} }
const char *cmake::GetProperty(const std::string& prop) const char *cmake::GetProperty(const std::string& prop)
{ {
// watch for special properties return this->State->GetGlobalProperty(prop);
std::string output = "";
if ( prop == "CACHE_VARIABLES" )
{
std::vector<std::string> cacheKeys = this->State->GetCacheEntryKeys();
this->SetProperty("CACHE_VARIABLES", cmJoin(cacheKeys, ";").c_str());
}
else if ( prop == "COMMANDS" )
{
std::vector<std::string> commands = this->State->GetCommandNames();
this->SetProperty("COMMANDS", cmJoin(commands, ";").c_str());
}
else if ( prop == "IN_TRY_COMPILE" )
{
this->SetProperty("IN_TRY_COMPILE",
this->State->GetIsInTryCompile() ? "1" : "0");
}
else if ( prop == "ENABLED_LANGUAGES" )
{
std::string langs;
langs = cmJoin(this->State->GetEnabledLanguages(), ";");
this->SetProperty("ENABLED_LANGUAGES", langs.c_str());
}
#define STRING_LIST_ELEMENT(F) ";" #F
if (prop == "CMAKE_C_KNOWN_FEATURES")
{
return FOR_EACH_C_FEATURE(STRING_LIST_ELEMENT) + 1;
}
if (prop == "CMAKE_CXX_KNOWN_FEATURES")
{
return FOR_EACH_CXX_FEATURE(STRING_LIST_ELEMENT) + 1;
}
#undef STRING_LIST_ELEMENT
bool dummy = false;
return this->Properties.GetPropertyValue(prop, cmProperty::GLOBAL, dummy);
} }
bool cmake::GetPropertyAsBool(const std::string& prop) bool cmake::GetPropertyAsBool(const std::string& prop)

View File

@ -15,7 +15,6 @@
#include "cmListFileCache.h" #include "cmListFileCache.h"
#include "cmSystemTools.h" #include "cmSystemTools.h"
#include "cmPropertyMap.h"
#include "cmInstalledFile.h" #include "cmInstalledFile.h"
#include "cmCacheManager.h" #include "cmCacheManager.h"
#include "cmState.h" #include "cmState.h"
@ -336,7 +335,6 @@ protected:
void RunCheckForUnusedVariables(); void RunCheckForUnusedVariables();
void InitializeProperties(); void InitializeProperties();
int HandleDeleteCacheVariables(const std::string& var); int HandleDeleteCacheVariables(const std::string& var);
cmPropertyMap Properties;
typedef typedef
cmExternalMakefileProjectGenerator* (*CreateExtraGeneratorFunctionType)(); cmExternalMakefileProjectGenerator* (*CreateExtraGeneratorFunctionType)();