From 683e9023a70792845544f61daf570c5bfe329ac1 Mon Sep 17 00:00:00 2001 From: Sebastian Holtermann 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 `<<>>`, 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 = "<<>>"; 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(&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