CMake Nightly Date Stamp
Introduce cmM{ax,in}imum macros to work around MSVC6
Workaround MSVC6 template limitation.
Merge topic 'compatible-interface-numbers' into next

de38a38 Workaround MSVC6 template limitation.
a6f8a11 Introduce cmM{ax,in}imum macros to work around MSVC6
cmTarget: Add a template to create correct implied content.

Otherwise, in the string case, we would get a null pointer instead
of the implied empty string. That will become relevant when the
comparison result is used.
cmTarget: Make consistentProperty return consistent content.

Upcoming features will make use of that.
cmTarget: Assign consistent content back to the property being evaluated.

Currently, 'consistent' means the same or not set. Soon though,
it will be possible to choose a minimum number from an interface
for example.
cmTarget: Add enumeration for consistency to expect from properties.

The type of consistency to be expected will be extended to cover
numeric minimum and maximum.
cmTarget: Add interface for compatible numeric properties

When using the boost MPL library, one can set a define to increase
the limit of how many variadic elements should be supported. The
default for BOOST_MPL_LIMIT_VECTOR_SIZE is 20:

 http://www.boost.org/doc/libs/1_36_0/libs/mpl/doc/refmanual/limit-vector-size.html

If the foo library requires that to be set to 30, and the independent
bar library requires it to be set to 40, consumers of both need to set
it to 40.

 add_library(foo INTERFACE)
 set_property(TARGET foo PROPERTY INTERFACE_boost_mpl_vector_size 30)
 set_property(TARGET foo PROPERTY COMPATIBLE_INTERFACE_NUMBER_MAX boost_mpl_vector_size)
 target_compile_definitions(foo INTERFACE BOOST_MPL_LIMIT_VECTOR_SIZE=$<TARGET_PROPERTY:boost_mpl_vector_size>)

 add_library(bar INTERFACE)
 set_property(TARGET bar PROPERTY INTERFACE_boost_mpl_vector_size 40)
 # Technically the next two lines are redundant, but as foo and bar are
 # independent, they both set these interfaces.
 set_property(TARGET bar PROPERTY COMPATIBLE_INTERFACE_NUMBER_MAX boost_mpl_vector_size)
 target_compile_definitions(bar INTERFACE BOOST_MPL_LIMIT_VECTOR_SIZE=$<TARGET_PROPERTY:boost_mpl_vector_size>)

 add_executable(user)
 target_link_libraries(user foo bar)

Because the TARGET_PROPERTY reads the boost_mpl_vector_size property
from the HEAD of the dependency graph (the user target), and because
that property appears in the COMPATIBLE_INTERFACE_NUMBER_MAX of
the dependencies of the user target, the maximum value for it is
chosen for the compile definition, ie, 40.

There are also use-cases for choosing the minimum value of a number.
In Qt, deprecated API can be disabled by version. Setting the
definition QT_DISABLE_DEPRECATED_BEFORE=0 disables no deprecated
API. Setting it to 0x501000 disables API which was deprecated before
Qt 5.1 etc.

If two dependencies require the use of API which was deprecated in
different Qt versions, then COMPATIBLE_INTERFACE_NUMBER_MIN can be
used to ensure that both can compile.
Merge topic 'compatible-interface-numbers' into next

ff6c401 cmTarget: Add interface for compatible numeric properties
e4e20c1 cmTarget: Add enumeration for consistency to expect from properties.
9877769 cmTarget: Assign consistent content back to the property being evaluated.
816b4a8 cmTarget: Make consistentProperty return consistent content.
030800a cmTarget: Add a template to create correct implied content.
Run CxxDialect test only if compile options are available.
Merge topic 'target_compiler_features' into next

3dec32b Run CxxDialect test only if compile options are available.
Add CXX_STANDARD and CXX_EXTENSION target properties.

These are used to determine whether to add -std=c++11, -std=gnu++11
etc flags on the compile line.
Record the compilers capable of the cxx_delegating_constructors feature.
Add target_compiler_features command.
Transitively evaluate compiler features.

Extend the interface of the target_compiler_features command with
PUBLIC and INTERFACE keywords. Populate the INTERFACE_COMPILER_FEATURES
target property if they are set. Consume the INTERFACE_COMPILER_FEATURES
target property from linked dependent targets to determine the final
required compiler features and the compile flag, if needed.
Make COMPILER_FEATURES available as a target property.
Add the WriteCompilerDetectionHeader module.

Provide a function to write a portable header to detect compiler
features.
Allow populating compiler_features using generator expressions.
Merge topic 'target_compiler_features' into next

e1f25b0 Add the WriteCompilerDetectionHeader module.
bfa27f5 Transitively evaluate compiler features.
477e674 Allow populating compiler_features using generator expressions.
61d0e84 Make COMPILER_FEATURES available as a target property.
a330f27 Add target_compiler_features command.
cd411f4 Record the compilers capable of the cxx_delegating_constructors feature.
a7c44f4 Add CXX_STANDARD and CXX_EXTENSION target properties.