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.
This commit is contained in:
parent
2679a34a94
commit
f1fcbe3fde
|
@ -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());
|
||||
}
|
||||
|
||||
|
|
|
@ -47,6 +47,13 @@ const char *cmGeneratorTarget::GetProperty(const char *prop)
|
|||
return this->Target->GetProperty(prop);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool cmGeneratorTarget::IsSystemIncludeDirectory(const char *dir,
|
||||
const char *config)
|
||||
{
|
||||
return this->Makefile->IsSystemIncludeDirectory(dir, config);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool cmGeneratorTarget::GetPropertyAsBool(const char *prop)
|
||||
{
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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())
|
||||
|
|
|
@ -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");
|
||||
|
|
Loading…
Reference in New Issue