From 3ce7eecedc2686520af930fb86cf5c7a79fd4fb1 Mon Sep 17 00:00:00 2001 From: Sebastian Holtermann Date: Mon, 18 Dec 2017 14:36:17 +0100 Subject: Autogen: Fix for problematic nested lists 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. Closes #17570 --- Source/cmQtAutoGen.cxx | 2 +- Source/cmQtAutoGenerator.cxx | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Source/cmQtAutoGen.cxx b/Source/cmQtAutoGen.cxx index b9dd392..255a532 100644 --- a/Source/cmQtAutoGen.cxx +++ b/Source/cmQtAutoGen.cxx @@ -233,7 +233,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/cmQtAutoGenerator.cxx b/Source/cmQtAutoGenerator.cxx index 52193af..ee0ddbc 100644 --- a/Source/cmQtAutoGenerator.cxx +++ b/Source/cmQtAutoGenerator.cxx @@ -78,6 +78,9 @@ bool cmQtAutoGenerator::Run(std::string const& infoFile, snapshot.GetDirectory().SetCurrentSource(this->InfoDir); 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()); return this->Process(makefile.get()); -- cgit v0.12