Add entire link interface transitive closure as target depends.

This was missing from commit 30962029 (Make targets depend on the
link interface of their dependees., 2012-12-26), which caused
only immeditate entries of the link interface to become target
depends.
Test non-IMPORTED libraries in the INTERFACE of IMPORTED libraries.

If a non-IMPORTED library is added to the INTERFACE_LINK_LIBRARIES
of a IMPORTED target, the non-IMPORTED target needs to become a
target dependency and link dependency of the consuming target.

This is already the case since commit 30962029 (Make targets depend
on the link interface of their dependees, 2012-12-26), and fixed in
the parent commit, so test that it works.
CPackRPM protect '@' character in filename processed in the spec file.
GenexEval: Add abstracted access to link interface for a target.

This can be extended with special handling for static libraries
so that we can process the link dependencies separately from the
usage dependencies.
Introduce the LINK_ONLY generator expression.

This is an internal expression for use by target_link_libraries
for static libraries.
CPackRPM make the changelog line conform to expected format
project: Document top-level CMakeLists.txt requirement

CMake requires the top-level CMakeLists.txt to contain a direct call to
the project() command and will insert one if there is not.  Document
this requirement since some authors have tried to use include() to load
a file calling the project command.
ExternalProject: Document multiple COMMAND lines

We support multiple commands per external project step by using
the COMMAND keyword.  Document this behavior and show an example.
While at it, document that shell operators and current working
directory behavior is not defined.
Introduce the INTERFACE_LINK_LIBRARIES property.

This property replaces the properties which
match (IMPORTED_)?LINK_INTERFACE_LIBRARIES(_<CONFIG>)?, and is enabled
for IMPORTED targets, and for non-IMPORTED targets only with a policy.

For static libraries, the INTERFACE_LINK_LIBRARIES property is
also used as the source of transitive usage requirements content.
Static libraries still require users to link to all entries in
their LINK_LIBRARIES, but usage requirements such as INCLUDE_DIRECTORIES
COMPILE_DEFINITIONS and COMPILE_OPTIONS can be restricted to only
certain interface libraries.

Because the INTERFACE_LINK_LIBRARIES property is populated unconditionally,
we need to compare the evaluated result of it with the link implementation
to determine whether to issue the policy warning for static libraries. For
shared libraries, the policy warning is issued if the contents of
the INTERFACE_LINK_LIBRARIES property differs from the contents of the
relevant config-specific old LINK_INTERFACE_LIBRARIES property.
Export: Generate INTERFACE_LINK_LIBRARIES property on targets.

This property is generated only for targets which have recorded
policy CMP0022 as NEW, and a compatibility mode is added to
additionally export the old interfaces in that case too.

If the old interfaces are not exported, the generated export files
require CMake 2.8.12. Because the unit tests use a version which
is not yet called 2.8.12, temporarily require a lower version.
TLL: Don't populate old link interface if CMP0022 is NEW.

Always populate the INTERFACE_LINK_LIBRARIES for interface
entries. Don't populate the old interface properties
matching (IMPORTED_)?LINK_INTERFACE_LIBRARIES(_<CONFIG>)?
if CMP0022 is NEW.

Because the INTERFACE_LINK_LIBRARIES property is now populated by
the target_link_libraries when operating on a static library,
make an equivalent change which populates the property with
the same value when the old link_libraries() command is used. This
silences the policy warning in that case.
include: Clarify variable access scope for included file

The wording "Commands in the file are processed immediately as if they
were written in place of the include command" sounds as if some kind of
macro replacement is performed.  This is not accurate.  Update the
wording to describe behavior of the included code in terms of the
variable access scope.
VS: Fix /MAP:mapfile flag mapping (#14282)

We have two mappings for the "/MAP" flag.  The first does not care
whether there is a value and activates the GenerateMapFile boolean
setting.  The second takes a value and puts it in the MapFileName
setting.  The latter must treat the ":" as part of the flag.

This is similar to commit 8ae66bf4 (Fix optionally-valued booleans in VS
10 flag table, 2009-10-23).
cmake: On configure error suggest looking at CMake*.log files

When CMake reports failure to configure a project, especially when the
toolchain does not initialize properly, the true reason may be clear
from reading the CMakeFiles/CMake(Output|Error).log files.  Advise users
to look at these files if they exist when configuration fails.

Add RunCMake.Configure test to check that the log files are mentioned
when configuration fails.
Overload cmLocalGenerator::AppendDefines to add a list.
Add an overload of cmIDEOptions::AddDefines taking a vector of strings.
Refactor cmTarget::GetCompileDefinitions to use an out-vector, not a string.

Refactor to create AddCompileDefinitions.
Genex: Make CMP0021 and CMP0022 usable with TARGET_POLICY

Use preprocessor loops and add a unit test for the appropriate
policies. All policies whose value is recorded at target creation
time should be part of this list.
KWSys 2013-07-10 (beef6819)

Extract upstream KWSys using the following shell commands.

$ git archive --prefix=upstream-kwsys/ beef6819 | tar x
$ git shortlog --no-merges --abbrev=8 --format='%h %s' f6c4c247..beef6819
Brad King (1):
      beef6819 SystemTools: Implement IsSubDirectory without loop

Change-Id: Ifab0c0384c7fbf1f9fc934918573a49b38f7bc0a
Merge branch 'upstream-kwsys' into update-kwsys