Remove another isGeneratorExpression.
Merge topic 'minor-fixes' into next

a1f8afb Remove another isGeneratorExpression.
Deduplicate the isGeneratorExpression method.

This API seems like the most appropriate.
De-duplicate validation of genex target names.
Test printing origin of include dirs from tll().
The COMPATIBLE_INTERFACE does not affect the target it is set on.

Test and document this.
Ensure type specific compatible interface properties do not intersect.

Before, the boolean version would always win, and the string one would
be ignored.
Fix generation of COMPILE_DEFINITIONS in DependInfo.cmake.

As INTERFACE_COMPILE_DEFINITIONS are now possible, we can have
situations like this:

 add_library(foo ...)
 add_library(bar ...)
 target_link_libraries(foo bar)

 target_compile_definitions(bar INTERFACE SOME_DEF)

The INTERFACE_COMPILE_DEFINITIONS of bar determine how foo should be
compiled, and if they change, foo should be rebuilt.

Additionally, as of commit d1446ca7 (Append the COMPILE_DEFINITIONS
from the Makefile to all targets., 2012-09-17), we don't need to
read definitions from the makefile if we read them from the target,
so also de-duplicate the cached info.

The DependInfo for INTERFACE_INCLUDE_DIRECTORIES is already handled
correctly.
Fix determination of evaluating link libraries.

Added in commit 6fbe3ce4 (Exclude the LINK_LIBRARIES related properties
from INTERFACE evaluation., 2013-01-23)
Only use early evaluation termination for transitive properties.

We need to make sure expressions which evaluate TARGET_PROPERTY:TYPE
multiple times for example get the correct result each time, and
not an empty string instead.
Move a special case for PIC from the genex to the cmTarget code.
Don't keep track of content determined by target property values.

This tracking was added during the development of commit 042ecf04
(Add API to calculate link-interface-dependent bool properties
or error., 2013-01-06), but was never used.

It was not necessary to use the content because what is really
useful in that logic is to determine if a property has been implied
to be null by appearing in a LINK_LIBRARIES genex.

I think the motivating usecase for developing the feature of
keeping track of the targets relevant to a property was that I
thought it would  make it possible to allow requiring granular
compatibility of interface properties only for targets which
depended on the interface property. Eg:

 add_library(foo ...)
 add_library(bar ...)

 add_executable(user ...)
 # Read the INTERFACE_POSITION_INDEPENDENT_CODE from bar, but not
 # from foo:
 target_link_libraries(user foo $<$<TARGET_PROPERTY:POSTITION_INDEPENDENT_CODE>:bar>)

This obviously doesn't make sense. We require that INTERFACE
properties are consistent across all linked targets instead.
Merge topic 'minor-fixes' into next

d4e5c67 Don't keep track of content determined by target property values.
1fb545a Move a special case for PIC from the genex to the cmTarget code.
57175d5 Only use early evaluation termination for transitive properties.
4cf161a Fix determination of evaluating link libraries.
3a298c0 Fix generation of COMPILE_DEFINITIONS in DependInfo.cmake.
655e98b Ensure type specific compatible interface properties do not intersect.
46e2896 The COMPATIBLE_INTERFACE does not affect the target it is set on.
5f926a5 Test printing origin of include dirs from tll().
7c0ec75 De-duplicate validation of genex target names.
92e98dd Deduplicate the isGeneratorExpression method.