CMake Nightly Date Stamp
Strip stray semicolons when evaluating generator expressions.
Fix DAG checker finding cycling dependencies.

Before this patch, the following is reported falsely as a self-reference:

 target_link_libraries(empty2 LINK_PUBLIC empty3)
 target_link_libraries(empty3 LINK_PUBLIC empty2)

 add_custom_target(...
    -DINCLUDES=$<TARGET_PROPERTY:empty2,INTERFACE_INCLUDE_DIRECTORIES>
 )

The reason is that the existing code assumed that all reading of
include directories would be done through cmTarget::GetIncludeDirectories()
and would therefore be initialized with a DagChecker. That is not the case
if reading the property with an 'external' generator expression.

As an unfortunate side-effect of backward compatibility for the
LINK_INTERFACE_LIBRARIES property, self references can no longer be errors.
Expand includes and defines transitively in 'external' genexes.

This means that we can use expressions of the form

 $<TARGET_PROPERTY:foo,INTERFACE_INCLUDE_DIRECTORIES>

to get a list of the interface include directories of foo, including
those coming from dependencies.
Fix constness of accessors.
Fix the tests for evaluating includes and defines.

We should also check whether the INTERFACE_ variant of a property
is being read, and in the case of the compile definitions, we should
test the _<CONFIG> suffixed variants.

This way, we use the ALREADY_SEEN optimization when evaluating
the includes of a target in 'external' generator expressions, ie, those
used in a add_custom_command invokation, as opposed to evaluating the
INCLUDE_DIRECTORIES of a target itself via GetIncludeDirectories.
Merge topic 'interface-property-external-read' into next

0626cf5 Fix the tests for evaluating includes and defines.
34ef6ea Fix constness of accessors.
a3a133e Expand includes and defines transitively in 'external' genexes.
953def1 Fix DAG checker finding cycling dependencies.
ec2c67b Strip stray semicolons when evaluating generator expressions.
a0ac2c5 CMake Nightly Date Stamp