Boost logo

Boost :

From: Niall Douglas (s_sourceforge_at_[hidden])
Date: 2019-07-24 17:21:15


>> So, the fact that !BOOST_COMP_GNUC and !BOOST_COMP_CLANG are false on
>> MSVC is a problem, the tests won't run on MSVC.
>>
>> Yet Outcome works fine for the developer build, as evidenced by the
>> regression matrix. So this is a problem affecting this release build
>> ONLY.
>>
>> Thoughts?
>
> I've not used predef-require, but you can't compare versions in dotted
> notation in C++ preprocessor. Boost.Predef defines version numbers with
> BOOST_VERSION_NUMBER, so you would compare like this:
>
>   BOOST_COMP_GNUC >= BOOST_VERSION_NUMBER(6, 0, 0)
>
> Also, note that 6.0 is a pre-release version of gcc 6.x. The first
> release version is 6.1.

I vaguely remember that the documented approach, which is what you
suggest, doesn't work from Predef. What I have in there does work. GCCs
before 6 are excluded, that works fine.

> That said, given that the Boost.Build output above is from MSVC, I'm not
> sure why both !BOOST_COMP_GNUC and !BOOST_COMP_CLANG are "no".

It also would seem that Predef is broken on GCC 7.3 on Linux as well:

ned_at_KATE:/mnt/c/Users/ned/Downloads/boost_1_71_0_b1_rc1/boost_1_71_0$
./b2 libs/outcome/test
Performing configuration checks

    - !BOOST_COMP_GNUC : no
    - BOOST_COMP_GNUC >= 6.0 : no
    - !BOOST_COMP_CLANG : no
    - BOOST_COMP_CLANG >= 4.0 : no
    - default address-model : 64-bit
    - default architecture : x86
    - Boost.Config Feature Check: cxx14_variable_templates : yes
    - Boost.Config Feature Check: cxx14_constexpr : yes
    - !BOOST_COMP_GNUC : no
    - BOOST_COMP_GNUC >= 6.0 : no
    - !BOOST_COMP_CLANG : no
    - BOOST_COMP_CLANG >= 4.0 : no
    - Boost.Config Feature Check: cxx14_variable_templates : yes
    - Boost.Config Feature Check: cxx14_constexpr : yes
...found 1 target...

Just to make sure that the BOOST_VERSION_NUMBER thing hadn't changed:

ned_at_KATE:/mnt/c/Users/ned/Downloads/boost_1_71_0_b1_rc1/boost_1_71_0$
./b2 libs/outcome/test --reconfigure
Performing configuration checks

    - !BOOST_COMP_GNUC : no
    - BOOST_COMP_GNUC >= BOOST_VERSION_NUMBER(6, 0, 0) : no
    - !BOOST_COMP_CLANG : no
    - BOOST_COMP_CLANG >= BOOST_VERSION_NUMBER(4, 0, 0) : no
    - default address-model : 64-bit
    - default architecture : x86
    - Boost.Config Feature Check: cxx14_variable_templates : yes
    - Boost.Config Feature Check: cxx14_constexpr : yes
    - !BOOST_COMP_GNUC : no
    - BOOST_COMP_GNUC >= BOOST_VERSION_NUMBER(6, 0, 0) : no
    - !BOOST_COMP_CLANG : no
    - BOOST_COMP_CLANG >= BOOST_VERSION_NUMBER(4, 0, 0) : no
    - Boost.Config Feature Check: cxx14_variable_templates : yes
    - Boost.Config Feature Check: cxx14_constexpr : yes
...found 1 target...

So I'd say b2 predef has become broken recently. At least in the release
distro, as the regression matrix shows Outcome building:
https://www.boost.org/development/tests/develop/developer/outcome.html

Niall


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