summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2013-07-01 20:28:26 (GMT)
committerStephen Kelly <steveire@gmail.com>2013-07-02 14:40:02 (GMT)
commitf1fcbe3fdedb0d04fe89423331c0f2789bfe911e (patch)
treefafa4caa5f9329d8e5dedad0d27d1cf18dde7c2f /Source
parent2679a34a943cddb61f816299476f15997f9b5980 (diff)
downloadCMake-f1fcbe3fdedb0d04fe89423331c0f2789bfe911e.zip
CMake-f1fcbe3fdedb0d04fe89423331c0f2789bfe911e.tar.gz
CMake-f1fcbe3fdedb0d04fe89423331c0f2789bfe911e.tar.bz2
Add Target API to determine if an include is a system include.
The implementation can be modified later so that system includes can be determined on a per-target basis.
Diffstat (limited to 'Source')
-rw-r--r--Source/cmExtraSublimeTextGenerator.cxx2
-rw-r--r--Source/cmGeneratorTarget.cxx7
-rw-r--r--Source/cmGeneratorTarget.h2
-rw-r--r--Source/cmLocalGenerator.cxx7
-rw-r--r--Source/cmLocalGenerator.h1
-rw-r--r--Source/cmMakefileTargetGenerator.cxx3
-rw-r--r--Source/cmNinjaTargetGenerator.cxx3
-rw-r--r--Source/cmake.cxx2
8 files changed, 20 insertions, 7 deletions
diff --git a/Source/cmExtraSublimeTextGenerator.cxx b/Source/cmExtraSublimeTextGenerator.cxx
index 012013c..39b6add 100644
--- a/Source/cmExtraSublimeTextGenerator.cxx
+++ b/Source/cmExtraSublimeTextGenerator.cxx
@@ -421,7 +421,7 @@ cmExtraSublimeTextGenerator::ComputeFlagsForObject(cmSourceFile* source,
std::vector<std::string> includes;
lg->GetIncludeDirectories(includes, gtgt, language, config);
std::string includeFlags =
- lg->GetIncludeFlags(includes, language, true); // full include paths
+ lg->GetIncludeFlags(includes, gtgt, language, true); // full include paths
lg->AppendFlags(flags, includeFlags.c_str());
}
diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx
index f5d1560..61ff8d5 100644
--- a/Source/cmGeneratorTarget.cxx
+++ b/Source/cmGeneratorTarget.cxx
@@ -48,6 +48,13 @@ const char *cmGeneratorTarget::GetProperty(const char *prop)
}
//----------------------------------------------------------------------------
+bool cmGeneratorTarget::IsSystemIncludeDirectory(const char *dir,
+ const char *config)
+{
+ return this->Makefile->IsSystemIncludeDirectory(dir, config);
+}
+
+//----------------------------------------------------------------------------
bool cmGeneratorTarget::GetPropertyAsBool(const char *prop)
{
return this->Target->GetPropertyAsBool(prop);
diff --git a/Source/cmGeneratorTarget.h b/Source/cmGeneratorTarget.h
index 5f7019d..c0fd772 100644
--- a/Source/cmGeneratorTarget.h
+++ b/Source/cmGeneratorTarget.h
@@ -72,6 +72,8 @@ public:
/** Get the include directories for this target. */
std::vector<std::string> GetIncludeDirectories(const char *config);
+ bool IsSystemIncludeDirectory(const char *dir, const char *config);
+
private:
void ClassifySources();
void LookupObjectLibraries();
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx
index 83f1d6d..2971c3b 100644
--- a/Source/cmLocalGenerator.cxx
+++ b/Source/cmLocalGenerator.cxx
@@ -577,7 +577,7 @@ void cmLocalGenerator::AddCustomCommandToCreateObject(const char* ofname,
{
std::vector<std::string> includes;
this->GetIncludeDirectories(includes, &target, lang);
- flags += this->GetIncludeFlags(includes, lang);
+ flags += this->GetIncludeFlags(includes, &target, lang);
}
flags += this->Makefile->GetDefineFlags();
@@ -1224,6 +1224,7 @@ cmLocalGenerator::ConvertToIncludeReference(std::string const& path)
//----------------------------------------------------------------------------
std::string cmLocalGenerator::GetIncludeFlags(
const std::vector<std::string> &includes,
+ cmGeneratorTarget* target,
const char* lang, bool forResponseFile,
const char *config)
{
@@ -1296,8 +1297,8 @@ std::string cmLocalGenerator::GetIncludeFlags(
if(!flagUsed || repeatFlag)
{
- if(sysIncludeFlag &&
- this->Makefile->IsSystemIncludeDirectory(i->c_str(), config))
+ if(sysIncludeFlag && target &&
+ target->IsSystemIncludeDirectory(i->c_str(), config))
{
includeFlags << sysIncludeFlag;
}
diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h
index f35ef8e..ef4b1c6 100644
--- a/Source/cmLocalGenerator.h
+++ b/Source/cmLocalGenerator.h
@@ -152,6 +152,7 @@ public:
virtual void AppendFlagEscape(std::string& flags, const char* rawFlag);
///! Get the include flags for the current makefile and language
std::string GetIncludeFlags(const std::vector<std::string> &includes,
+ cmGeneratorTarget* target,
const char* lang, bool forResponseFile = false,
const char *config = 0);
diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx
index 1492dfa..c9e4161 100644
--- a/Source/cmMakefileTargetGenerator.cxx
+++ b/Source/cmMakefileTargetGenerator.cxx
@@ -1853,7 +1853,8 @@ void cmMakefileTargetGenerator::AddIncludeFlags(std::string& flags,
lang, config);
std::string includeFlags =
- this->LocalGenerator->GetIncludeFlags(includes, lang, useResponseFile);
+ this->LocalGenerator->GetIncludeFlags(includes, this->GeneratorTarget,
+ lang, useResponseFile);
if(includeFlags.empty())
{
return;
diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx
index 65173ca..b5ca78a 100644
--- a/Source/cmNinjaTargetGenerator.cxx
+++ b/Source/cmNinjaTargetGenerator.cxx
@@ -161,7 +161,8 @@ cmNinjaTargetGenerator::ComputeFlagsForObject(cmSourceFile *source,
this->GeneratorTarget,
language.c_str(), config);
std::string includeFlags =
- this->LocalGenerator->GetIncludeFlags(includes, language.c_str(),
+ this->LocalGenerator->GetIncludeFlags(includes, this->GeneratorTarget,
+ language.c_str(),
language == "RC" ? true : false); // full include paths for RC
// needed by cmcldeps
if(cmGlobalNinjaGenerator::IsMinGW())
diff --git a/Source/cmake.cxx b/Source/cmake.cxx
index fcec068..592b5ec 100644
--- a/Source/cmake.cxx
+++ b/Source/cmake.cxx
@@ -612,7 +612,7 @@ bool cmake::FindPackage(const std::vector<std::string>& args)
std::vector<std::string> includeDirs;
cmSystemTools::ExpandListArgument(includes, includeDirs);
- std::string includeFlags = lg->GetIncludeFlags(includeDirs,
+ std::string includeFlags = lg->GetIncludeFlags(includeDirs, 0,
language.c_str(), false);
std::string definitions = mf->GetSafeDefinition("PACKAGE_DEFINITIONS");