summaryrefslogtreecommitdiffstats
path: root/Source/cmGeneratorTarget.cxx
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2013-07-01 20:55:25 (GMT)
committerStephen Kelly <steveire@gmail.com>2013-07-02 14:40:02 (GMT)
commit83498d413530570f7ab9affee5b8301c888bf91e (patch)
tree08f4c2ce8a7ec31b8061369a4113af29fe504f33 /Source/cmGeneratorTarget.cxx
parentf1fcbe3fdedb0d04fe89423331c0f2789bfe911e (diff)
downloadCMake-83498d413530570f7ab9affee5b8301c888bf91e.zip
CMake-83498d413530570f7ab9affee5b8301c888bf91e.tar.gz
CMake-83498d413530570f7ab9affee5b8301c888bf91e.tar.bz2
Store system include directories in the cmTarget.
Entries from the cmMakefile are processed and maintained similarly to other include directories. The include_directories(SYSTEM) signature affects all following targets, and all prior targets in the same makefile.
Diffstat (limited to 'Source/cmGeneratorTarget.cxx')
-rw-r--r--Source/cmGeneratorTarget.cxx18
1 files changed, 17 insertions, 1 deletions
diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx
index 61ff8d5..9167b25 100644
--- a/Source/cmGeneratorTarget.cxx
+++ b/Source/cmGeneratorTarget.cxx
@@ -51,7 +51,23 @@ const char *cmGeneratorTarget::GetProperty(const char *prop)
bool cmGeneratorTarget::IsSystemIncludeDirectory(const char *dir,
const char *config)
{
- return this->Makefile->IsSystemIncludeDirectory(dir, config);
+ for (std::set<cmStdString>::const_iterator
+ it = this->Target->GetSystemIncludeDirectories().begin();
+ it != this->Target->GetSystemIncludeDirectories().end(); ++it)
+ {
+ cmListFileBacktrace lfbt;
+ cmGeneratorExpression ge(lfbt);
+
+ std::vector<std::string> incs;
+ cmSystemTools::ExpandListArgument(ge.Parse(*it)
+ ->Evaluate(this->Makefile,
+ config, false), incs);
+ if (std::find(incs.begin(), incs.end(), dir) != incs.end())
+ {
+ return true;
+ }
+ }
+ return false;
}
//----------------------------------------------------------------------------