summaryrefslogtreecommitdiffstats
path: root/Source/cmLocalGenerator.cxx
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2005-02-02 18:19:57 (GMT)
committerBill Hoffman <bill.hoffman@kitware.com>2005-02-02 18:19:57 (GMT)
commit35ec09480a32a98e4dda725a0fd1b7ba1e8b0b17 (patch)
tree9be6de049204514d9544f90715a3fffc6c75a316 /Source/cmLocalGenerator.cxx
parent0aa05c1f7b8b1d224138e3f03c7883cec47335aa (diff)
downloadCMake-35ec09480a32a98e4dda725a0fd1b7ba1e8b0b17.zip
CMake-35ec09480a32a98e4dda725a0fd1b7ba1e8b0b17.tar.gz
CMake-35ec09480a32a98e4dda725a0fd1b7ba1e8b0b17.tar.bz2
ENH: move AddFlags stuff up to LocalGenerator from LocalUnix generator
Diffstat (limited to 'Source/cmLocalGenerator.cxx')
-rw-r--r--Source/cmLocalGenerator.cxx71
1 files changed, 71 insertions, 0 deletions
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx
index 92cb202..8530f78 100644
--- a/Source/cmLocalGenerator.cxx
+++ b/Source/cmLocalGenerator.cxx
@@ -1267,3 +1267,74 @@ void cmLocalGenerator::OutputLinkLibraries(std::ostream& fout,
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;
+ }
+}
+