CMake Nightly Date Stamp
Use cmsys::auto_ptr to manage cmCompiledGeneratorExpressions

The compiled generator expressions need to outlive the creating
type. For the same reason, store the input string in a std::string.
Keep track of INCLUDE_DIRECTORIES as a vector of structs.

The struct can keep track of where the include came from, which gives
us proper backtraces, and will allow us to implement a policy later
relating to order of include directories.
Handle INTERFACE properties transitively for includes and defines.

Contextually, the behavior is as if the properties content from another
target is included in the string and then the result is evaluated.
Add the TARGET_DEFINED generator expression

This tests whether the parameter is a usable target.
CMake Nightly Date Stamp
Add includes and compile definitions with target_link_libraries.

The compile-related properties are required for linking so it makes
sense to add the interface includes for dependencies.

This requires adding a policy to handle the change in behavior of
code such as:

 add_executable(foo ...)
 target_link_libraries(foo bar bat)
 include_directories(${bat_INCLUDE_DIRS} ${bar_INCLUDE_DIRS})

which will change order of generated includes after this patch if
bar or bat are TARGETS with an INTERFACE_INCLUDE_DIRECTORIES
property.
Merge topic 'tll-set-include-and-defines-requirements' into next

8ba3ece Add includes and compile definitions with target_link_libraries.
79c8f0f Add the TARGET_DEFINED generator expression
2ea6642 Handle INTERFACE properties transitively for includes and defines.
bc21673 Keep track of INCLUDE_DIRECTORIES as a vector of structs.
45ffd45 Use cmsys::auto_ptr to manage cmCompiledGeneratorExpressions
CMake: source_group needs to check its own regex after its children (#13611)

Otherwise, regexes that descend into sub-folders do not get grouped correctly.
Merge topic 'fix-13611-source-group-issues' into next

00e9680 CMake: source_group needs to check its own regex after its children (#13611)
0499f93 CMake Nightly Date Stamp
976cfdd CMake Nightly Date Stamp
CMake: Remove "/STACK:10000000" from default linker flags (#12437)

Modern apps that use multiple threads do NOT want 10 Megabytes of RAM
per thread being used for each thread's stack... Just leave off the
/STACK: argument, and let the compiler use a reasonable default value
for the stack size.

If existing single-threaded apps require the /STACK: argument because
they do need a very large stack size, they can add the flag in their
own CMakeLists files.
Genex: Add INTERFACE_LINK_LIBRARIES property

This new property is a replacement for
the (IMPORTED_)?LINK_INTERFACE_LIBRARIES(_<CONFIG>)? properties as
it can contain generator expressions. It is also part of the generated
IMPORTED targets generated by the export() and install(EXPORT) commands.

User code may already populate
the (IMPORTED_)?LINK_INTERFACE_LIBRARIES(_<CONFIG>)? properties, so
policy CMP0019 is added to handle that.

If the policy is NEW, the old properties are ignored and
the INTERFACE_LINK_LIBRARIES property is used.

Otherwise if the policy is OLD the old properties are used and the
new INTERFACE_LINK_LIBRARIES is ignored.

The policy emits a warning if the old-style property and new-style
property differ in their content.

The policy also affects the IMPORTED targets generated by export()
and install(EXPORT). If the policy is NEW, that means that the user
has bumped their cmake requirement to 2.8.11. As we'll therefore be
generating INTERFACE_LINK_LIBRARIES properties in the IMPORTED
targets, we need to ensure that consumers can use the new property,
so 2.8.11 will be required for the consumers too.
Use cmsys::auto_ptr to manage cmCompiledGeneratorExpressions

The compiled generator expressions need to outlive the creating
type. For the same reason, store the input string in a std::string.
Keep track of INCLUDE_DIRECTORIES as a vector of structs.

The struct can keep track of where the include came from, which gives
us proper backtraces, and will allow us to implement a policy later
relating to order of include directories.
Handle INTERFACE properties transitively for includes and defines.

Contextually, the behavior is as if the properties content from another
target is included in the string and then the result is evaluated.
Add the TARGET_DEFINED generator expression

This tests whether the parameter is a usable target.
Add includes and compile definitions with target_link_libraries.

The compile-related properties are required for linking so it makes
sense to add the interface includes for dependencies.

This requires adding a policy to handle the change in behavior of
code such as:

 add_executable(foo ...)
 target_link_libraries(foo bar bat)
 include_directories(${bat_INCLUDE_DIRS} ${bar_INCLUDE_DIRS})

which will change order of generated includes after this patch if
bar or bat are TARGETS with an INTERFACE_INCLUDE_DIRECTORIES
property.
Remove the CMP0019 test

It is not reliable, and it is not useful. The NEW and OLD tests do not
test that the warning message is not printed. The actual functionality
introduced with the policy is tested by the target_link_libraries test.
Merge topic 'fix-12437-remove-ridiculously-large-default-stack-size-arg' into next

51af1da CMake: Remove "/STACK:10000000" from default linker flags (#12437)
Merge topic 'tll-set-include-and-defines-requirements' into next

925889a Remove the CMP0019 test