Ninja: escape line breaks in literals

BUG: 13591
Documentation: Clarify a few subtleties

* Clarify accepted values of <LANG> suffix in CMAKE_COMPILER_IS_GNU<LANG>.

* Clarify fact that target property GENERATOR_FILE_NAME usually cannot be
  used at configure time.

* Clarify that enable_language() can only be used in global scope of
  top-level project using language.

* State that enable_language(... OPTIONAL) currently doesn't work.

* Document regular expression operator precedence.
add_subdirectory: Compute output dir with consistent slashes (#10072)

When the command is invoked without an explicit build directory path we
compute it from the source directory path.  When either the source or
build tree is the root of a Windows drive letter it will have a trailing
slash.  Handle slashes consistently when substituting the current output
directory for the current source directory.

While at it, use cmSystemTools::IsSubDirectory instead of FindLastString
to verify that the source directory is a subdirectory.

Inspired-by: Graham Menhennitt <graham@menhennitt.com.au>
ExternalData: Preserve escaped semicolons during argument expansion

The CMake language implicitly flattens lists so a ";" in a list element
must be escaped with a backslash.  List expansion removes backslashes
escaping semicolons to leave raw semicolons in the values.  Teach
ExternalData_Add_Test and ExternalData_Expand_Arguments to re-escape
semicolons found in list elements so the resulting argument lists work
as if constructed directly by the set() command.

For example:

  ExternalData_Add_Test(Data NAME test1 COMMAND ... "a\\;b")
  ExternalData_Expand_Arguments(Data args2 "c\\;d")
  add_test(NAME test2 COMMAND ... ${args2})

should be equivalent to

  set(args1 "a\\;b")
  add_test(NAME test1 COMMAND ... ${args1})
  set(args2 "c\\;d")
  add_test(NAME test2 COMMAND ... ${args2})

which is equivalent to

  add_test(NAME test1 COMMAND ... "a;b")
  add_test(NAME test2 COMMAND ... "c;d")

Note that it is not possible to make ExternalData_Add_Test act exactly
like add_test when quoted arguments contain semicolons because the CMake
language flattens lists when constructing function ARGN values.  This
re-escape approach at least allows test arguments to have semicolons.

While at it, teach ExternalData APIs to not transform "DATA{...;...}"
arguments because the contained semicolons are non-sensical.

Suggested-by: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>
Add $<SEMICOLON> generator expression.

This expression is useful to put a ';' in a command line argument
without dividing the argument during CMake list expansion.
Avoid crash when checking property link dependencies without link info

Teach the isLinkDependentProperty helper added by commit e9879910 (Make
INTERFACE determined properties readable in generator expressions,
2013-01-19) to return early if no link information is available.
Avoid crash when checking property compatibility without link info

Teach the compatibility check added by commit 042ecf04 (Add API to
calculate link-interface-dependent bool properties or error, 2013-01-06)
to return early if no link information is available.  This avoids
crashing in a case that should fail with an error message.
Merge branch 'property-link-depends-no-crash' into fix-automoc-no-qt
Automoc: Don't create automoc targets if Qt is not used (#13999)

Commit 79568f95 (automoc: Add source file to target early to set the
linker language, 2013-02-20) changed automoc initialization to a two
step process. In the first step, the generated source file was added
to the target, which allows the link language to be determined.

However, this bypassed the check for the availability of Qt itself.
At build-time the automoc file could not be generated because the moc
tool was not available to create it.

The solution is to only add the automoc file to the target if Qt is
found.
Refactor RunCMake.build_command test to allow more cases

Move the ErrorsOFF/ON common logic from CMakeLists.txt into an
ErrorsCommon file to allow other test cases to be added that do not use
the Errors test logic.
build_command: Fail early without CMAKE_MAKE_PROGRAM (#14005)

If CMAKE_MAKE_PROGRAM is not set fail with an error message instead of
crashing.  Suggest calling project() or enable_language() first to
ensure that CMAKE_MAKE_PROGRAM is set.
CTest: Fail early without PROJECT_BINARY_DIR (#14005)

Do not use PROJECT_BINARY_DIR before it is defined.  If it is not
defined when needed, fail with an error message suggesting that the
project() command be invoked first.
cmake-gui: Use -fPIE if required by Qt.
cmake-gui: Workaround bug in Qt 5.0.0 to 5.0.3 QStandardItemModel

The commit in qtbase 9dfba89c (Add implementations of QAIM::sibling in
public APIs., 2012-09-26) added a buggy implementation of sibling(), and
the commit f136701b (Use the base implementation of
QAbstractItemModel::sibling in QSIM., 2013-02-21) resolves it.
Workaround the bug for Qt releases that have it.
CMake Nightly Date Stamp
FindQt4: Fix QT_QMAKE{_QMAKE => }_EXECUTABLE typo

The parent commit accidentally referenced QT_QMAKE_QMAKE_EXECUTABLE
which does not exist.  Use QT_QMAKE_EXECUTABLE instead.

Reported-by: m.hergarden@euphoria-it.nl
Merge topic 'doc-fixes'

3cf2f67 Documentation: Clarify a few subtleties
Merge topic 'add_subdirectory-trailing-slashes'

1df4928 add_subdirectory: Compute output dir with consistent slashes (#10072)
Merge topic 'ExternalData-escape-semicolons'

1823ab4 ExternalData: Preserve escaped semicolons during argument expansion
Merge topic 'genex-SEMICOLON'

7f3bb8b Add $<SEMICOLON> generator expression.