cmGlobalGenerator: Drop unused GenerateBuildCommand implementation

This is a virtual method that is overridden by every generator
subclass.  The base class implementation should never be called,
so replace it with a dummy implementation.
cmGlobalGenerator: Add method to compute "cmake --build" command line

Create a GenerateCMakeBuildCommand method to generate a command-line
string invoking "cmake --build" for a given target and configuration.
Optionally allow the "-i" make flag and additional native options.
build_command: Return a "cmake --build" command-line

Re-implement the build_command() command to use "cmake --build" instead
of generating a native build tool invocation directly.  This command
will internally invoke the proper native build tool.

This avoids requiring cmGlobalGenerator::GenerateBuildCommand to produce
a string so that it can be later refactored to produce a vector with no
quoting or escaping.  It will also allow us to later teach CMake to
delay the decision about which build tool to invoke until after the
project build system is generated to disk.  For example, on Visual
Studio 10 and above the preferred command-line tool is MSBuild, but we
need to fall back to devenv if the .sln has Intel Fortran .vfproj files.
ctest_build: Use "cmake --build" to launch the native build tool

This avoids requiring cmGlobalGenerator::GenerateBuildCommand to produce
a string so that it can be later refactored to produce a vector with no
quoting or escaping.  It also makes the ctest_build command match what
"ctest -T Build" would run in a build tree configured with the new
build_command() command behavior.  It also ensures that the native build
tool used matches that selected by the configuration of the tree to be
built.
cmSystemTools: Add RunSingleCommand overload for std::vector<std::string>
cmSystemTools: Add PrintSingleCommand method

Add a method to print a command line for human reference by simply
double-quoting every argument.
CMake Nightly Date Stamp
cmQtAutogen: Allow specifying depends for autogen targets.

Test this by generating files with a custom target, which require
processing by automoc.

Lift the restriction of automoc on processing generated files. Instead,
mark the generated _automoc file as skipped for automoc purposes.
Merge topic 'autogen-depends' into next

ae016fa cmQtAutogen: Allow specifying depends for autogen targets.
Allow toolchain files to specify an external toolchain.

Clang can compile code, but uses the gcc tools for other tasks such
as linking. The -gcc-toolchain option can be used for that, but
generalize so that other compilers can be treated the same.

If such a location is specified, use it as a hint for finding
the binutils executables.
Only look in the host for internal CMake file.

A toolchain file will generally contain the following lines:

 set(CMAKE_SYSROOT /path/to/sysroot)
 set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

The find_file in Modules/CMakeDetermineCompilerId.cmake should not
look in the sysroot or the CMAKE_FIND_ROOT_PATH entries, so
add the parameter to control that in CMakeDetermineCompilerId.cmake.
Use --sysroot when cross compiling.

As CMAKE_ROOT_FIND_PATH can be a list, a new CMAKE_SYSROOT is
introduced, which is never a list.

The contents of this variable is passed to supporting compilers
as --sysroot. It is also accounted for when processing implicit
link directories reported by the compiler, and when generating
RPATH information.
Introduce CMAKE_STAGING_PREFIX variable.

This variable can be useful in cross-compiling contexts where the
sysroot is read-only or where the sysroot should otherwise remain
pristine.

If the new CMAKE_STAGING_PREFIX variable is set, it is used instead
of CMAKE_INSTALL_PREFIX when generating the installation rules in
cmake_install.cmake.

This way, the CMAKE_INSTALL_PREFIX variable
always refers to the installation prefix on the target device, regardless
of whether host==target.

If any -rpath paths passed to the linker contain the CMAKE_STAGING_PREFIX,
the matching path fragments are replaced with the CMAKE_INSTALL_PREFIX.
Matching paths in the -rpath-link are not transformed.

The cross-prefix usr-move workaround is assumed not to require extension
regarding CMAKE_STAGING_PREFIX. The staging area is a single prefix, so
there is no scope for cross-prefix symlinks. The CMAKE_INSTALL_PREFIX
is still used to determine the workaround path, and that variable
remains the relevant one even if CMAKE_STAGING_PREFIX is used. If the
generated export files are deployed to the target, the workaround
will still be in place, and still be employed if required.
Add tests
Test installation to stage.
Fix path quoting.
Add error diagnosis.
Fix libz.so.
Diagnose bug.

Presumably the dashboard machine does not use triples in the lib directories.
Clear triple if not used.