CMake Nightly Date Stamp
cmTarget: Move SourceFileFlags to cmGeneratorTarget.
cmTarget: Find source files when classifying them.
cmTarget: Change GetTransitivePropertyLinkLibraries to output targets.

The callers already skip non-targets, so unify the target search.

Change supporting functions to accept a container of targets instead
of strings where possible.
cmTarget: Extract a ComputeLinkImplementationLanguages method.
cmTarget: Re-arrange the ComputeLinkInterface method.

Arrange the logic so that the part which deals with libraries only is
at the top.  In a follow-up commit, this will be split into two methods.
cmTarget: Extract a ComputeLinkInterfaceLibraries method.

When evaluating the SOURCES property, we will need to be able to access
the link libraries without accessing the link languages, as the languages
depend on the SOURCES.
cmTarget: Move ComputeLinkInterface to the internal class.

In a follow-up, this will use the OptionalLinkInterface in its
API. That class is in the cmTargetInternals class.
cmTarget: Avoid computing languages when computing transitive targets.

For the OLD CMP0022 behavior, we need to treat the implementation
as the interface when computing the interface libraries.  Make it
possible to do that without computing the link languages by adding
a new GetLinkImplementationLibraries method.  Extend the existing
GetLinkImplementation method to populate the languages if the
libraries have already been computed and cached.

Change GetTransitivePropertyTargets to invoke GetLinkInterfaceLibraries
instead of GetLinkInterface.  This is key, as it is a method called
by cmGeneratorExpressionEvaluator.

Change the cmGeneratorExpressionEvaluator to invoke
GetLinkImplementationLibraries instead of GetLinkImplementation.
cmTarget: Create a temporary cmTarget in checkInterfacePropertyCompatibility

This simplifies further refactoring.
cmTarget: Add GetTransitiveTargetClosure method.

Replace calls to GetLinkInformation with calls to a method to get only
the target closure, not the link languages etc.  The replaced calls
are used while evaluating generator expressions only.  This makes
transitive generator expression evaluation independent from
the languages of a target.  In a follow-up topic, it will be possible
to make the languages depend on generator expression evaluation, via
evaluation of the SOURCES and INTERFACE_SOURCES target properties.

Because the order of entries is not the same as the final link line,
the order of debug output is different in the RunCMake.CompatibleInterface
test, because the BOOL_PROP7 target property is evaluated first. Adjust
the test to account for that new order.
cmGeneratorTarget: Use a method to access the definition file.
cmGeneratorTarget: Classify sources on demand, not up front.

Implement a Visitor to hold the sequence of source file tests
for populating outputs.

This will make it possible to use context dependent generator
expressions to determine the sources of a target.
Handle Mac OSX source flags for individual files lazily.

The actual list of files will become config dependent in a follow-up
commit.
Merge topic 'target-SOURCES-refactor' into next

0460c8a6 Handle Mac OSX source flags for individual files lazily.
492b2f46 cmGeneratorTarget: Classify sources on demand, not up front.
0ab51009 cmGeneratorTarget: Use a method to access the definition file.
d51107be cmTarget: Add GetTransitiveTargetClosure method.
ad9f7469 cmTarget: Create a temporary cmTarget in checkInterfacePropertyCompatibility
99745177 cmTarget: Avoid computing languages when computing transitive targets.
2cdfe8d1 cmTarget: Move ComputeLinkInterface to the internal class.
cf080619 cmTarget: Extract a ComputeLinkInterfaceLibraries method.
16f9d9c9 cmTarget: Re-arrange the ComputeLinkInterface method.
d804159f cmTarget: Extract a ComputeLinkImplementationLanguages method.
e6e97b13 cmTarget: Change GetTransitivePropertyLinkLibraries to output targets.
65b48d43 cmTarget: Find source files when classifying them.
27201405 cmTarget: Move SourceFileFlags to cmGeneratorTarget.
44e78434 CMake Nightly Date Stamp