Boost logo

Boost :

Subject: Re: [boost] [config] 'requres' doesn't take differing -std into account
From: John Maddock (jz.maddock_at_[hidden])
Date: 2015-06-21 12:20:46


On 21/06/2015 15:19, Peter Dimov wrote:
> I have, in my user-config.jam,
>
> using gcc ;
>
> feature.subfeature toolset gcc : std : cxx0x cxx11 cxx1y cxx14 :
> optional composite propagated ;
>
> feature.compose <toolset-gcc:std>cxx0x : <cxxflags>-std=c++0x ;
> feature.compose <toolset-gcc:std>cxx11 : <cxxflags>-std=c++11 ;
> feature.compose <toolset-gcc:std>cxx1y : <cxxflags>-std=c++1y ;
> feature.compose <toolset-gcc:std>cxx14 : <cxxflags>-std=c++14 ;
>
> using clang : : : <cxxflags>-Wno-variadic-macros
> <cxxflags>-Wno-c99-extensions ;
>
> feature.subfeature toolset clang : std : cxx0x cxx11 cxx1y cxx14 :
> optional composite propagated ;
>
> feature.compose <toolset-clang:std>cxx0x : <cxxflags>-std=c++0x ;
> feature.compose <toolset-clang:std>cxx11 : <cxxflags>-std=c++11 ;
> feature.compose <toolset-clang:std>cxx1y : <cxxflags>-std=c++1y ;
> feature.compose <toolset-clang:std>cxx14 : <cxxflags>-std=c++14 ;
>
> This allows me to use toolset=clang (without -std) and
> toolset=clang-cxx11 (with -std=c++11).
>
> The 'requires' rule however caches the results of the configuration
> check when I run with toolset=clang, and then when I rerun with
> toolset=clang-cxx11, it uses the cached values, which is wrong.
>
> I use something like
>
> run test.cpp : : : [ requires cxx11_variadic_templates
> cxx11_template_aliases cxx11_hdr_type_traits cxx11_hdr_tuple ] ;
>

I don't know how to address that - the requires rule just uses
Boost.Build's check_target_builds rule, so the question is why that
doesn't mangle itself on your sub-features?

John.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk