CMP0052: Do not warn when include dir is not in source or build tree

When the policy was added by commit 783bce29 (Export: Disallow exported
interface includes in src/build tree, 2014-03-31) it accidentally left a
code path that would warn when the include dir is in the install tree
but *not* in the source or build tree.  Fix that.
This commit is contained in:
Brad King 2014-04-16 15:53:57 -04:00
parent fd8bb34278
commit 9e0b3153fa
1 changed files with 6 additions and 4 deletions

View File

@ -277,6 +277,8 @@ static bool checkInterfaceDirs(const std::string &prepro,
" \"" << *li << "\"";
target->GetMakefile()->IssueMessage(messageType, e.str());
}
bool inBinary = isSubDirectory(li->c_str(), topBinaryDir);
bool inSource = isSubDirectory(li->c_str(), topSourceDir);
if (isSubDirectory(li->c_str(), installDir))
{
// The include directory is inside the install tree. If the
@ -284,8 +286,8 @@ static bool checkInterfaceDirs(const std::string &prepro,
// fall through to the checks below that the include directory is not
// also inside the source tree or build tree.
bool shouldContinue =
isSubDirectory(installDir, topBinaryDir)
|| isSubDirectory(installDir, topSourceDir);
(!inBinary || isSubDirectory(installDir, topBinaryDir)) &&
(!inSource || isSubDirectory(installDir, topSourceDir));
if (!shouldContinue)
{
@ -317,7 +319,7 @@ static bool checkInterfaceDirs(const std::string &prepro,
continue;
}
}
if (isSubDirectory(li->c_str(), topBinaryDir))
if (inBinary)
{
e << "Target \"" << target->GetName() << "\" "
"INTERFACE_INCLUDE_DIRECTORIES property contains path:\n"
@ -326,7 +328,7 @@ static bool checkInterfaceDirs(const std::string &prepro,
}
if (!inSourceBuild)
{
if (isSubDirectory(li->c_str(), topSourceDir))
if (inSource)
{
e << "Target \"" << target->GetName() << "\" "
"INTERFACE_INCLUDE_DIRECTORIES property contains path:\n"