Boost logo

Boost :

Subject: Re: [boost] [predef] Using predef-require with OR conditions
From: Edward Diener (eldiener_at_[hidden])
Date: 2015-05-04 00:53:10


On 5/4/2015 12:43 AM, Rene Rivera wrote:
> On Sun, May 3, 2015 at 9:41 PM, Edward Diener <eldiener_at_[hidden]>
> wrote:
>
>> On 5/3/2015 9:29 PM, Rene Rivera wrote:
>>
>>> On Sun, May 3, 2015 at 4:55 PM, Edward Diener <eldiener_at_[hidden]>
>>> wrote:
>>>
>>> In a jamfile I would like to use predef-require in OR situatuations so
>>>> that if any particular predef-definition is true my unit testing rule
>>>> occurs, else it does not occur:
>>>>
>>>> import ../libs/predef/check/predef : require : predef-require ;
>>>>
>>>> run some_test.cpp : : : BOOST_COMP_SOME_COMPILER >= n.n.n ||
>>>> other_predef_definiion ;
>>>>
>>>> The typical use case for this is to have a unit test for particular
>>>> version(s) of a compiler or for all other versions of other compilers.
>>>>
>>>> Is this possible ?
>>>>
>>>>
>>> It is possible, and it came up when I first introduced the feature, with
>>> some basic De Morgan's application:
>>>
>>> run some_test.cpp : : : [ predef-require "BOOST_COMP_SOME_COMPILER <
>>> n.n.n"
>>> "other_predef_def_negated" ] ;
>>>
>>
>> I do not see how this can work. Let's say I want to run some_test.cpp when
>> either BOOST_COMP_SOME_COMPILER is version n.n.n or above OR when
>> BOOST_COMP_SOME_COMPILER is not being used at all, ie.
>> BOOST_COMP_SOME_COMPILER is equal to 0. How can that be done ?
>
>
> Oops. I forgot that you would need to use the check rule, not the require
> rule:
>
> [ predef-check "BCSC != 0" "BCSC < n.n.n" : <build>no ]
>
> Which says: when BCSC is not 0 *and* BCSC < n.n.n, do not build/run. And
> hence, by De Morgan's, also says: when BCSC is 0 *or* BCSC >= n.n.n,
> build/run it.

I can understand that. Thanks !


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