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