[cmake-developers] target_compile_features remaining issues

Stephen Kelly steveire at gmail.com
Mon Apr 7 13:04:09 EDT 2014


Rolf Eike Beer wrote:

>> 1) Extensions
>> I propose ignoring the granularity of XL and letting the user be more
>> granular if they wish (I think there's also granularity available with
>> GNU flags).
> 
> I think just go for whatever is needed to get the requested features, if
> it enables more then it will be this way.

Yes.

>> 2) Unavailable features
>> The distinction between "this compiler version supports an empty subset
>> of the features known to CMake" and "we have not tested the features of
>> this version of the compiler" is not quite so easy.
> 
> Maybe "if (DEFINED var)" vs. "if(VAR)"?

Perhaps. 

I vaguely prefer being more explicit by using a non-feature-feature, but 
this can be deferred for the moment anyway.

>> Do we need to require some kind of maintenance commitment from people who
>> want to add the first feature for a {compiler id, version} tuple, like is
>> currently required for adding new modules?
> 
> I would go for my initial approach: have a compile-test for it.

I recall that seemed like a non-solution when this was discussed before. I 
think the problem is that the compile-test we write may not exercise all of 
the edge cases which may be relevant to a compiler version, such as 
undocumented cxx_constexpr support in GNU 4.5.

Anyway, my solution for now is to get a single point feature in to get the 
infrastructure established, then extend the point to the vector of C++11 
features for one compiler on one platform (GCC 4.8 on GNU).  

Once that is in master, it will be possible to extend the supported feature 
matrix along all the other dimensions (compiler extension features, C++98, 
older GNU, other compilers, other platforms) at any point afterward, 
preferably one step at a time to minimize dashboard chaos.

Of course, it is easier to get features into the CMAKE_CXX_KNOWN_FEATURES 
list when there is only one compiler to test for on the dashboard.  I'll add 
one C++98 feature to establish the infrastructure, but I don't intend to be 
exhaustive about C++98 features. If you or anyone else has an interest in 
doing so, I'd recommend getting them in early.

Thanks,

Steve.





More information about the cmake-developers mailing list