From 683e9023a70792845544f61daf570c5bfe329ac1 Mon Sep 17 00:00:00 2001
From: Sebastian Holtermann <sebholt@xwmw.org>
Date: Mon, 18 Dec 2017 13:31:57 +0100
Subject: Autogen: Fix for problematic nested list separator

In the AutogenInfo.cmake file the separator for nested lists was
`@LSEP@` which led to a speed regression because the `@` character
triggered an (unsuccessful) expression evaluation.

By setting the policy version of the CMake instance in the
`_autogen` target to 3.9, the OLD `@` evaluating behavior
controlled by policy CMP0053 is disabled.

Also the nested lists separator string is changed to `<<<S>>>`,
which solves the problem twofold.

Issue: #17570
---
 Source/cmQtAutoGen.cxx        | 2 +-
 Source/cmQtAutoGenerators.cxx | 3 +++
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/Source/cmQtAutoGen.cxx b/Source/cmQtAutoGen.cxx
index 5e89978..0fc2fc0 100644
--- a/Source/cmQtAutoGen.cxx
+++ b/Source/cmQtAutoGen.cxx
@@ -248,7 +248,7 @@ static bool RccListInputsQt5(std::string const& rccCommand,
 
 // - Class definitions
 
-std::string const cmQtAutoGen::listSep = "@LSEP@";
+std::string const cmQtAutoGen::listSep = "<<<S>>>";
 
 std::string const& cmQtAutoGen::GeneratorName(Generator type)
 {
diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx
index b329d38..a9c9b9d 100644
--- a/Source/cmQtAutoGenerators.cxx
+++ b/Source/cmQtAutoGenerators.cxx
@@ -171,6 +171,9 @@ bool cmQtAutoGenerators::Run(std::string const& targetDirectory,
   snapshot.GetDirectory().SetCurrentSource(targetDirectory);
 
   auto makefile = cm::make_unique<cmMakefile>(&gg, snapshot);
+  // The OLD/WARN behavior for policy CMP0053 caused a speed regression.
+  // https://gitlab.kitware.com/cmake/cmake/issues/17570
+  makefile->SetPolicyVersion("3.9");
   gg.SetCurrentMakefile(makefile.get());
 
   bool success = false;
-- 
cgit v0.12