Browse Source

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 `<<<S>>>`,
which solves the problem twofold.

Closes #17570
Sebastian Holtermann 7 years ago
parent
commit
3ce7eecedc
2 changed files with 4 additions and 1 deletions
  1. 1 1
      Source/cmQtAutoGen.cxx
  2. 3 0
      Source/cmQtAutoGenerator.cxx

+ 1 - 1
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 = "<<<S>>>";
 
 std::string const& cmQtAutoGen::GeneratorName(Generator type)
 {

+ 3 - 0
Source/cmQtAutoGenerator.cxx

@@ -78,6 +78,9 @@ bool cmQtAutoGenerator::Run(std::string const& infoFile,
   snapshot.GetDirectory().SetCurrentSource(this->InfoDir);
 
   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());
 
   return this->Process(makefile.get());