ENH: move AddFlags stuff up to LocalGenerator from LocalUnix generator

This commit is contained in:
Bill Hoffman 2005-02-02 13:19:57 -05:00
parent 0aa05c1f7b
commit 35ec09480a
4 changed files with 76 additions and 73 deletions

View File

@ -1267,3 +1267,74 @@ void cmLocalGenerator::OutputLinkLibraries(std::ostream& fout,
fout << m_Makefile->GetDefinition("CMAKE_STANDARD_LIBRARIES") << " "; fout << m_Makefile->GetDefinition("CMAKE_STANDARD_LIBRARIES") << " ";
} }
} }
//----------------------------------------------------------------------------
void cmLocalGenerator::AddLanguageFlags(std::string& flags,
const char* lang)
{
// Add language-specific flags.
std::string flagsVar = "CMAKE_";
flagsVar += lang;
flagsVar += "_FLAGS";
this->AddConfigVariableFlags(flags, flagsVar.c_str());
}
//----------------------------------------------------------------------------
void cmLocalGenerator::AddSharedFlags(std::string& flags,
const char* lang,
bool shared)
{
std::string flagsVar;
// Add flags for dealing with shared libraries for this language.
if(shared)
{
flagsVar = "CMAKE_SHARED_LIBRARY_";
flagsVar += lang;
flagsVar += "_FLAGS";
this->AppendFlags(flags, m_Makefile->GetDefinition(flagsVar.c_str()));
}
// Add flags specific to shared builds.
if(cmSystemTools::IsOn(m_Makefile->GetDefinition("BUILD_SHARED_LIBS")))
{
flagsVar = "CMAKE_SHARED_BUILD_";
flagsVar += lang;
flagsVar += "_FLAGS";
this->AppendFlags(flags, m_Makefile->GetDefinition(flagsVar.c_str()));
}
}
//----------------------------------------------------------------------------
void cmLocalGenerator::AddConfigVariableFlags(std::string& flags,
const char* var)
{
// Add the flags from the variable itself.
std::string flagsVar = var;
this->AppendFlags(flags, m_Makefile->GetDefinition(flagsVar.c_str()));
// Add the flags from the build-type specific variable.
const char* buildType = m_Makefile->GetDefinition("CMAKE_BUILD_TYPE");
if(buildType && *buildType)
{
flagsVar += "_";
flagsVar += cmSystemTools::UpperCase(buildType);
this->AppendFlags(flags, m_Makefile->GetDefinition(flagsVar.c_str()));
}
}
//----------------------------------------------------------------------------
void cmLocalGenerator::AppendFlags(std::string& flags,
const char* newFlags)
{
if(newFlags && *newFlags)
{
if(flags.size())
{
flags += " ";
}
flags += newFlags;
}
}

View File

@ -94,6 +94,11 @@ public:
void SetParent(cmLocalGenerator* g) { m_Parent = g;} void SetParent(cmLocalGenerator* g) { m_Parent = g;}
protected: protected:
void AddLanguageFlags(std::string& flags, const char* lang);
void AddSharedFlags(std::string& flags, const char* lang, bool shared);
void AddConfigVariableFlags(std::string& flags, const char* var);
void AppendFlags(std::string& flags, const char* newFlags);
///! Fill out these strings for the given target. Libraries to link, flags, and linkflags. ///! Fill out these strings for the given target. Libraries to link, flags, and linkflags.
void GetTargetFlags(std::string& linkLibs, void GetTargetFlags(std::string& linkLibs,
std::string& flags, std::string& flags,

View File

@ -2307,75 +2307,6 @@ bool cmLocalUnixMakefileGenerator2::ComparePath(const char* c1, const char* c2)
#endif #endif
} }
//----------------------------------------------------------------------------
void cmLocalUnixMakefileGenerator2::AddLanguageFlags(std::string& flags,
const char* lang)
{
// Add language-specific flags.
std::string flagsVar = "CMAKE_";
flagsVar += lang;
flagsVar += "_FLAGS";
this->AddConfigVariableFlags(flags, flagsVar.c_str());
}
//----------------------------------------------------------------------------
void cmLocalUnixMakefileGenerator2::AddSharedFlags(std::string& flags,
const char* lang,
bool shared)
{
std::string flagsVar;
// Add flags for dealing with shared libraries for this language.
if(shared)
{
flagsVar = "CMAKE_SHARED_LIBRARY_";
flagsVar += lang;
flagsVar += "_FLAGS";
this->AppendFlags(flags, m_Makefile->GetDefinition(flagsVar.c_str()));
}
// Add flags specific to shared builds.
if(cmSystemTools::IsOn(m_Makefile->GetDefinition("BUILD_SHARED_LIBS")))
{
flagsVar = "CMAKE_SHARED_BUILD_";
flagsVar += lang;
flagsVar += "_FLAGS";
this->AppendFlags(flags, m_Makefile->GetDefinition(flagsVar.c_str()));
}
}
//----------------------------------------------------------------------------
void cmLocalUnixMakefileGenerator2::AddConfigVariableFlags(std::string& flags,
const char* var)
{
// Add the flags from the variable itself.
std::string flagsVar = var;
this->AppendFlags(flags, m_Makefile->GetDefinition(flagsVar.c_str()));
// Add the flags from the build-type specific variable.
const char* buildType = m_Makefile->GetDefinition("CMAKE_BUILD_TYPE");
if(buildType && *buildType)
{
flagsVar += "_";
flagsVar += cmSystemTools::UpperCase(buildType);
this->AppendFlags(flags, m_Makefile->GetDefinition(flagsVar.c_str()));
}
}
//----------------------------------------------------------------------------
void cmLocalUnixMakefileGenerator2::AppendFlags(std::string& flags,
const char* newFlags)
{
if(newFlags && *newFlags)
{
if(flags.size())
{
flags += " ";
}
flags += newFlags;
}
}
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
void void
cmLocalUnixMakefileGenerator2 cmLocalUnixMakefileGenerator2

View File

@ -159,10 +159,6 @@ protected:
void SplitFullPath(const char* p, std::vector<std::string>& components); void SplitFullPath(const char* p, std::vector<std::string>& components);
bool ComparePath(const char* c1, const char* c2); bool ComparePath(const char* c1, const char* c2);
void AddLanguageFlags(std::string& flags, const char* lang);
void AddSharedFlags(std::string& flags, const char* lang, bool shared);
void AddConfigVariableFlags(std::string& flags, const char* var);
void AppendFlags(std::string& flags, const char* newFlags);
void AppendTargetDepends(std::vector<std::string>& depends, void AppendTargetDepends(std::vector<std::string>& depends,
const cmTarget& target); const cmTarget& target);
void AppendAnyDepend(std::vector<std::string>& depends, const char* name); void AppendAnyDepend(std::vector<std::string>& depends, const char* name);