OS X: Only search for install_name_tool if the toolchain has it

When cross compiling, toolchains won't have install_name_tool,
which is provided by Xcode and command line tools on OS X.
This is a Mach-O specific utility and not required on all platforms.
CTest: Implement message(STATUS) output for 'ctest -S' scripts

Send status messages to the CTest HANDLER_OUTPUT log since they are part
of the script handler output.  This also ensures they appear inline with
other test command handler output.
Tests: Fix CTestTestTimeout output order to match regex

Print the "timeout correctly killed" message using message(STATUS) so
that 'ctest -S' puts it in the same pipe as the rest of the test command
handler output.  This ensures it shows up in the same order every time.
WCDH: Ensure that the prefix argument to the macro is valid.

The prefix must be a C-identifier because it is written as the
prefix of preprocessor macros and possibly structs.
GenerateExportHeader: support exporting from OBJECT libraries
Tests: split the ExternalProject test

Move the subtests that test with local projects into their own test. The reason
is that on slower or crowded machines the test may reach the limit of 25
minutes and therefore fail while it would pass if it was given enough time.
The split is roughly 3:1 with regard to the execution time, with the new
ExternalProjectLocal test being the faster one.
cmComputeLinkDepends: Convert AddLinkEntries to a template

Allow the method to be called with a vector of any type that can be
converted to cmLinkItem.
cmGeneratorExpressionEvaluator: Shorten some long lines

Adjust the definitions of getLinkedTargetsContent to avoid long lines.
cmTarget: Refactor LinkImplementation to allow more information

Create a cmLinkImplItem class derived from cmLinkItem so more
information can be added to link implementation entries than link
interface entries.  Convert the LinkImplementation Libraries member to
hold it.  Update client sites accordingly.
cmTarget: Add to LinkImplementation a backtrace for each library

Allow clients to provide backtrace context on evaluation diagnostics.
cmTarget: Add method to add usage requirements from linked interfaces

Create a cmTargetInternals::AddInterfaceEntries method to construct a
$<TARGET_PROPERTY:tgt,INTERFACE_XYZ> generator expression and evaluate
it for every target in the link implementation.  This will be useful to
de-duplicate such evaluation for each usage requirement separately.

The new method will soon be used in the implementation of the
INTERFACE_* usage requirement lookup methods (GetSourceFiles,
GetCompileOptions, GetCompileDefinitions, GetCompileFeatures,
GetIncludeDirectories).  It is necessary for these methods to determine
whether an expression in LinkImplementationPropertyEntries evaluates to
a target or not because generator expression evaluation reports an error
for non-targets and we construct a $<TARGET_PROPERTY:tgt,INTERFACE_XYZ>
expression for each entry that is a target.

The implementation of each usage requirement currently processes the
LinkImplementationPropertyEntries and evaluates all generator
expressions to determine targets.  That is no longer necessary because
GetLinkImplementationLibraries now returns resolved and cached targets
together with their name.  Use it to implement AddInterfaceEntries.
cmTarget: Simplify INTERFACE_SOURCES usage requirement lookup

Use the AddInterfaceEntries helper to avoid duplication.
cmTarget: Simplify INTERFACE_COMPILE_OPTIONS usage requirement lookup

Use the AddInterfaceEntries helper to avoid duplication.
cmTarget: Simplify INTERFACE_COMPILE_DEFINITIONS usage requirement lookup

Use the AddInterfaceEntries helper to avoid duplication.
cmTarget: Simplify INTERFACE_COMPILE_FEATURES usage requirement lookup

Use the AddInterfaceEntries helper to avoid duplication.
cmTarget: Add to LinkImplementation whether each library was a genex

Implementation of CMP0027 OLD behavior needs to know whether each entry
in LinkImplementation::Libraries came from a generator expression or
not.  Add a FromGenex member to cmLinkImplItem to record this.
cmTarget: Simplify CMP0027 logic in processIncludeDirectories

Evaluate and lookup the target name only once per TargetPropertyEntry
instead of repeating it for each include directory entry.  Use a local
checkCMP0027 variable to record whether the policy should be checked.
Evaluate the target name as a generator expression only if it looks like
one.  Lookup the target by name only after evaluation of generator
expressions.
cmTarget: Simplify INTERFACE_INCLUDE_DIRECTORIES usage requirement lookup

Use the AddInterfaceEntries helper to avoid duplication.  In
TargetPropertyEntry, replace the TargetName string member with a
reference to the full cmLinkImplItem that produced the entry.  This is
possible because the cmLinkImplItem is available in AddInterfaceEntries
(it was not available in GetIncludeDirectories).  Having the full
cmLinkImplItem allows processIncludeDirectories to implement CMP0027 OLD
behavior without repeating the target name lookup.

Update the RunCMake.CompatibleInterface test DebugProperties case
expected output for the new order of the messages.
Merge topic 'no-cross-install_name_tool'

591a7388 OS X: Only search for install_name_tool if the toolchain has it
Merge topic 'ctest-S-message-STATUS'

f33d875a CTest: Implement message(STATUS) output for 'ctest -S' scripts