|
Boost : |
From: Vladimir Prus (ghost_at_[hidden])
Date: 2006-11-27 08:13:45
Andreas Huber wrote:
> Hi Volodya
>
> Vladimir Prus wrote:
>> There are some fresh statechart failures:
>>
>> http://tinyurl.com/wsdcj
>>
>> The seem to be related to my change to Boost.Build, that makes it
>> (correctly) set threading=multi on msvc, on the grounds that it
>> always uses multi-threading with shared runtime.
>
> I've noticed the failures yesterday but have been unsure whether they
> were due to my adjustments last week or not.
>
>> The comments in libs/statechart/test/Jamfile.v2 say:
>>
>> # Some platforms have either problems with the automatic detection of
>> the # threading mode (e.g. vc-7_1 & gcc >= 3.4.0) or don't support
>> single- # threaded mode (e.g. vc-8_0). We therefore manually turn MT
>> off here
>> local st-requirements = <define>BOOST_DISABLE_THREADS ;
>>
>> for local cpp-source in $(cpp-sources)
>> {
>> obj $(name)$(cpp-source)
>> : $(cpp-source).cpp
>> : <threading>single:$(st-requirements) $(requirements) ;
>> objs += $(name)$(cpp-source) ;
>> }
>
> I guess I need to give a bit of background here: As far as I understand,
> including config.hpp into a cpp that is compiled with a <threading>multi
> requirement should lead to the definition of BOOST_HAS_THREADS. Vice
> versa, BOOST_HAS_THREADS is not defined for cpps that are compiled with
> a <threading>single requirement. The comment in the jamfile attempts to
> explain that this automatism does not natively work on a few platforms.
> The idea behind <threading>single:$(st-requirements) was an attempt to
> fix this problem.
Okay. Is John aware of such issues?
>> I think the right fix *might be* changing <threading>single above to
>> <threading>multi, *or* adding
>>
>> <threading>multi:$(st-requirements)
>>
>> or making $(st-requirements) unconditional. Unfortunately, I'm not
>> sure
>> which one is right, and the comment above does not help me.
>
> The idea was that only the tests that absolutely need to run in MT mode
> actually link against the treading library. I'll therefore make
> $(st-requirements) unconditional for those tests.
Excellent.
> Question: Should I still specify a <threading>single requirement for
> those tests or would that lead to some sort of conflict (because e.g.
> vc-8.0 is always <threading>multi).
It should not lead to any problems. On msvc, your <threading>single will be
overrden anyway. I'd still run the tests on msvc before comitting
though ;-)
Thanks,
Volodya
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk