Boost logo

Boost :

Subject: Re: [boost] [predef] Fails on Intel/win
From: Edward Diener (eldiener_at_[hidden])
Date: 2015-07-12 13:14:01


On 7/12/2015 12:46 PM, Rene Rivera wrote:
> On Jul 12, 2015 10:01 AM, "John Maddock" <jz.maddock_at_[hidden]> wrote:
>>
>>
>>
>> On 12/07/2015 14:05, Edward Diener wrote:
>>>
>>> On 7/12/2015 4:42 AM, John Maddock wrote:
>>>>
>>>> BOOST_COMP_INTEL is set to 0, which means that
>>>>
>>>> [ predef-require "BOOST_COMP_INTEL" ]
>>>>
>>>> fails.
>>>>
>>>> __INTEL_COMPILER is set to 1500.
>>>>
>>>> BOOST_COMP_INTEL is set to ( (((0)%100)*10000000) + (((0)%100)*100000) +
>>>> ((0)%100000) )
>>>
>>>
>>> You can also see this on the regression tests for intel-linux (
> http://www.boost.org/development/tests/develop/developer/output/GLIS-homo-impi-boost-bin-v2-libs-predef-test-info_as_cpp-test-intel-linux-release.html
> ) where the compiler is identified as BOOST_COMP_EDG and both
> BOOST_COMP_GNUC_EMULATED and BOOST_COMP_INTEL_EMULATED are set to non-zero
> values.
>>>
>> It's not emulating the Intel compiler, it *is* the Intel compiler with
> version number 15.0, irrespective of whose front end they're using
> internally.
>
> So it should be.. INTEL, EDG EMULATED, and GNUC EMULATED? Should it always
> be the case that EDG be marked as EMULATED?

Does it have to do with the order of the compilers you are checking ? If
so, isn't the idea to at least check compilers which are not emulating
other compilers first before you check compilers which could be
emulating other compilers ? I don't believe the Intel compiler is
emulating any other compiler, so if it were checked before EDG and GNUC
the result should be correct. I haven't looked carefully at your predef
logic for compilers but it appears to rely on the order in which your
compiler header files are being included and from what I can see that
order is purely alphabetic in compiler.h.


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