From c150bf087c9ba3425d91bb1103589a928fc87098 Mon Sep 17 00:00:00 2001 From: Kyle Edwards Date: Wed, 12 Dec 2018 10:29:50 -0500 Subject: [PATCH] Server mode: Fix regression of hasInstallRule The introduction of policy CMP0082, to run subdirectory install rules in the correct order, caused a regression in server mode where any directory with a subdirectory is marked as having an install rule even if no "real" install rules are present. This change fixes this regression for server mode. --- Source/cmJsonObjects.cxx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Source/cmJsonObjects.cxx b/Source/cmJsonObjects.cxx index bc50f9f828..0da6f4f31e 100644 --- a/Source/cmJsonObjects.cxx +++ b/Source/cmJsonObjects.cxx @@ -6,6 +6,7 @@ #include "cmGeneratorTarget.h" #include "cmGlobalGenerator.h" #include "cmInstallGenerator.h" +#include "cmInstallSubdirectoryGenerator.h" #include "cmInstallTargetGenerator.h" #include "cmJsonObjectDictionary.h" #include "cmJsonObjects.h" @@ -640,8 +641,13 @@ static Json::Value DumpProjectList(const cmake* cm, std::string const& config) // associated generators. bool hasInstallRule = false; for (const auto generator : projectIt.second) { - hasInstallRule = - generator->GetMakefile()->GetInstallGenerators().empty() == false; + for (const auto installGen : + generator->GetMakefile()->GetInstallGenerators()) { + if (!dynamic_cast(installGen)) { + hasInstallRule = true; + break; + } + } if (hasInstallRule) { break;