summaryrefslogtreecommitdiffstats
path: root/Source/cmMakefileTargetGenerator.cxx
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2013-06-27 16:04:02 (GMT)
committerBrad King <brad.king@kitware.com>2013-06-27 16:57:32 (GMT)
commitd221eac81261679d3580849218220290fcd122df (patch)
tree15df696e0e790c05387fd0441d52110e16a71ec1 /Source/cmMakefileTargetGenerator.cxx
parentb6385cabec5356b471dc37bd999d1803555ba386 (diff)
downloadCMake-d221eac81261679d3580849218220290fcd122df.zip
CMake-d221eac81261679d3580849218220290fcd122df.tar.gz
CMake-d221eac81261679d3580849218220290fcd122df.tar.bz2
Refactor target COMPILE_OPTIONS and COMPILE_FLAGS handling
Replace the cmLocalGenerator GetCompileOptions method with an AddCompileOptions method since all call sites of the former simply append the result to a flags string anyway. Add a "lang" argument to AddCompileOptions and move the CMAKE_<LANG>_FLAGS_REGEX filter into it. Move the call sites in each generator to a location that has both the language and configuration available. In the Makefile generator this also moves the flags from build.make to flags.make where they belong.
Diffstat (limited to 'Source/cmMakefileTargetGenerator.cxx')
-rw-r--r--Source/cmMakefileTargetGenerator.cxx50
1 files changed, 4 insertions, 46 deletions
diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx
index f31b1a8..1492dfa 100644
--- a/Source/cmMakefileTargetGenerator.cxx
+++ b/Source/cmMakefileTargetGenerator.cxx
@@ -285,6 +285,10 @@ std::string cmMakefileTargetGenerator::GetFlags(const std::string &l)
this->LocalGenerator->
AppendFlags(flags,this->GetFrameworkFlags().c_str());
+ // Add target-specific flags.
+ this->LocalGenerator->AddCompileOptions(flags, this->Target,
+ lang, this->ConfigName);
+
ByLanguageMap::value_type entry(l, flags);
i = this->FlagsByLanguage.insert(entry).first;
}
@@ -335,25 +339,12 @@ void cmMakefileTargetGenerator::WriteTargetLanguageFlags()
this->Makefile->GetSafeDefinition(compiler.c_str()) << "\n";
}
- std::string targetFlags;
for(std::set<cmStdString>::const_iterator l = languages.begin();
l != languages.end(); ++l)
{
*this->FlagFileStream << *l << "_FLAGS = " << this->GetFlags(*l) << "\n\n";
*this->FlagFileStream << *l << "_DEFINES = " << this->GetDefines(*l) <<
"\n\n";
- std::string targetLangFlags;
- this->LocalGenerator->GetCompileOptions(targetLangFlags, this->Target,
- this->LocalGenerator->ConfigurationName.c_str());
- if (!targetFlags.empty() && targetFlags != targetLangFlags)
- {
- targetFlags += " " + targetLangFlags;
- }
- }
-
- if (!targetFlags.empty())
- {
- *this->FlagFileStream << "# TARGET_FLAGS = " << targetFlags << "\n\n";
}
}
@@ -542,39 +533,6 @@ cmMakefileTargetGenerator
std::string configUpper =
cmSystemTools::UpperCase(this->LocalGenerator->ConfigurationName);
- std::string targetFlags;
- this->LocalGenerator->GetCompileOptions(targetFlags, this->Target,
- configUpper.c_str());
- if (!targetFlags.empty())
- {
- std::string langIncludeExpr = "CMAKE_";
- langIncludeExpr += lang;
- langIncludeExpr += "_FLAG_REGEX";
- const char* regex = this->Makefile->
- GetDefinition(langIncludeExpr.c_str());
- if(regex)
- {
- cmsys::RegularExpression r(regex);
- std::vector<std::string> args;
- cmSystemTools::ParseWindowsCommandLine(
- targetFlags.c_str(),
- args);
- for(std::vector<std::string>::iterator i = args.begin();
- i != args.end(); ++i)
- {
- if(r.find(i->c_str()))
- {
- this->LocalGenerator->AppendFlags
- (flags, i->c_str());
- }
- }
- }
- else
- {
- this->LocalGenerator->AppendFlags(flags, targetFlags.c_str());
- }
- }
-
// Add Fortran format flags.
if(strcmp(lang, "Fortran") == 0)
{