VS: Delay platform definitions until system name is known

Move the definition of CMAKE_VS_PLATFORM_NAME and other variables that
are not needed by CMakeDetermineSystem out of the AddPlatformDefinitions
method and into a SetSystemName method.  The latter may later use
CMAKE_SYSTEM_NAME to decide what platform-specific definitions to add.
This commit is contained in:
Brad King 2014-07-17 16:34:21 -04:00
parent d3d9218a52
commit 6e176e6d9e
6 changed files with 19 additions and 9 deletions

View File

@ -125,10 +125,11 @@ cmGlobalVisualStudio10Generator::SetGeneratorToolset(std::string const& ts,
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
void cmGlobalVisualStudio10Generator::AddPlatformDefinitions(cmMakefile* mf) bool cmGlobalVisualStudio10Generator::SetSystemName(std::string const& s,
cmMakefile* mf)
{ {
cmGlobalVisualStudio8Generator::AddPlatformDefinitions(mf);
this->AddVSPlatformToolsetDefinition(mf); this->AddVSPlatformToolsetDefinition(mf);
return this->cmGlobalVisualStudio8Generator::SetSystemName(s, mf);
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------

View File

@ -31,6 +31,7 @@ public:
virtual bool MatchesGeneratorName(const std::string& name) const; virtual bool MatchesGeneratorName(const std::string& name) const;
virtual bool SetGeneratorToolset(std::string const& ts, cmMakefile* mf); virtual bool SetGeneratorToolset(std::string const& ts, cmMakefile* mf);
virtual bool SetSystemName(std::string const& s, cmMakefile* mf);
virtual void GenerateBuildCommand( virtual void GenerateBuildCommand(
std::vector<std::string>& makeCommand, std::vector<std::string>& makeCommand,
@ -43,8 +44,6 @@ public:
std::vector<std::string> const& makeOptions = std::vector<std::string>() std::vector<std::string> const& makeOptions = std::vector<std::string>()
); );
virtual void AddPlatformDefinitions(cmMakefile* mf);
///! create the correct local generator ///! create the correct local generator
virtual cmLocalGenerator *CreateLocalGenerator(); virtual cmLocalGenerator *CreateLocalGenerator();

View File

@ -80,7 +80,6 @@ void cmGlobalVisualStudio7Generator
{ {
mf->AddDefinition("CMAKE_GENERATOR_RC", "rc"); mf->AddDefinition("CMAKE_GENERATOR_RC", "rc");
mf->AddDefinition("CMAKE_GENERATOR_NO_COMPILER_ENV", "1"); mf->AddDefinition("CMAKE_GENERATOR_NO_COMPILER_ENV", "1");
this->AddPlatformDefinitions(mf);
if(!mf->GetDefinition("CMAKE_CONFIGURATION_TYPES")) if(!mf->GetDefinition("CMAKE_CONFIGURATION_TYPES"))
{ {
mf->AddCacheDefinition( mf->AddCacheDefinition(
@ -260,7 +259,8 @@ cmLocalGenerator *cmGlobalVisualStudio7Generator::CreateLocalGenerator()
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
void cmGlobalVisualStudio7Generator::AddPlatformDefinitions(cmMakefile* mf) bool cmGlobalVisualStudio7Generator::SetSystemName(std::string const& s,
cmMakefile* mf)
{ {
if(this->PlatformName == "x64") if(this->PlatformName == "x64")
{ {
@ -273,6 +273,7 @@ void cmGlobalVisualStudio7Generator::AddPlatformDefinitions(cmMakefile* mf)
mf->AddDefinition("CMAKE_VS_PLATFORM_NAME", this->GetPlatformName().c_str()); mf->AddDefinition("CMAKE_VS_PLATFORM_NAME", this->GetPlatformName().c_str());
mf->AddDefinition("CMAKE_VS_INTEL_Fortran_PROJECT_VERSION", mf->AddDefinition("CMAKE_VS_INTEL_Fortran_PROJECT_VERSION",
this->GetIntelProjectVersion()); this->GetIntelProjectVersion());
return this->cmGlobalVisualStudioGenerator::SetSystemName(s, mf);
} }
void cmGlobalVisualStudio7Generator::GenerateConfigurations(cmMakefile* mf) void cmGlobalVisualStudio7Generator::GenerateConfigurations(cmMakefile* mf)

View File

@ -44,7 +44,7 @@ public:
///! Create a local generator appropriate to this Global Generator ///! Create a local generator appropriate to this Global Generator
virtual cmLocalGenerator *CreateLocalGenerator(); virtual cmLocalGenerator *CreateLocalGenerator();
virtual void AddPlatformDefinitions(cmMakefile* mf); virtual bool SetSystemName(std::string const& s, cmMakefile* mf);
/** Get the documentation entry for this generator. */ /** Get the documentation entry for this generator. */
static void GetDocumentation(cmDocumentationEntry& entry); static void GetDocumentation(cmDocumentationEntry& entry);

View File

@ -132,11 +132,18 @@ cmLocalGenerator *cmGlobalVisualStudio8Generator::CreateLocalGenerator()
return lg; return lg;
} }
//----------------------------------------------------------------------------
void cmGlobalVisualStudio8Generator
::EnableLanguage(std::vector<std::string>const & lang,
cmMakefile *mf, bool optional)
{
this->AddPlatformDefinitions(mf);
cmGlobalVisualStudio7Generator::EnableLanguage(lang, mf, optional);
}
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
void cmGlobalVisualStudio8Generator::AddPlatformDefinitions(cmMakefile* mf) void cmGlobalVisualStudio8Generator::AddPlatformDefinitions(cmMakefile* mf)
{ {
cmGlobalVisualStudio71Generator::AddPlatformDefinitions(mf);
if(this->TargetsWindowsCE()) if(this->TargetsWindowsCE())
{ {
mf->AddDefinition("CMAKE_VS_WINCE_VERSION", mf->AddDefinition("CMAKE_VS_WINCE_VERSION",

View File

@ -36,6 +36,8 @@ public:
///! Create a local generator appropriate to this Global Generator ///! Create a local generator appropriate to this Global Generator
virtual cmLocalGenerator *CreateLocalGenerator(); virtual cmLocalGenerator *CreateLocalGenerator();
virtual void EnableLanguage(std::vector<std::string>const& languages,
cmMakefile *, bool optional);
virtual void AddPlatformDefinitions(cmMakefile* mf); virtual void AddPlatformDefinitions(cmMakefile* mf);
/** /**