Re: [boost] Configuration for Intel compiler

2003-05-14 Thread Guillaume Melquiond
On Wed, 14 May 2003, John Maddock wrote:

  Your patch does not fix the problem at all.

 Ah, I see I got the Intel version check backwards, fixed (hopefully!)

Yes, this time the conditional is correct. Unfortunately, this patch is
still not good: __ICL is not defined so it doesn't work. My version of the
compiler (the standard version available on Intel's website) does not
define __ICL, but only __ICC and __INTEL_COMPILER. So the patch is still
not enough.

As a matter of fact, what is the meaning of ICL? For ICC, it's easy: it's
the acronym of Intel C Compiler. But for ICL, I don't know. By doing a
grep on the Boost source tree, I also saw a lot of place where only __ICL
is tested and not __ICC. If they are supposed to have the same meaning,
maybe all the occurences of __ICC and __ICL should be replaced by a common
macro: BOOST_INTEL_CXX_VERSION (or maybe a shorter version like
BOOST_INTEL).

  In my opinion, it can even
  break some working configurations.  I would rather use this conditional
  expression:
 
  #  if !(defined(_GLOBAL_USING)  (_GLOBAL_USING+0  0 || _CPPLIB_VER ==
  310))  !defined(_STD)

 I'm not convinced that _GLOBAL_USING is used consistently between Dinkumware
 libraries (windows vs linux etc), so I'd rather not rely on _GLOBAL_USING at
 all - hence my attempt to check the Intel version number.

I was hoping the Dinkumware library was the same on all the platforms (for
a specific version number) since the one available for Linux tests for the
presence of MSVC and others typical Microsoft macros.

  since the test _GLOBAL_USING+0  0 is false although we want it true with
  Dinkumware 3.10 (_CPPLIB_VER == 310 and maybe other versions but I don't
  know them). If there is a way to test the macro _GLOBAL_USING is defined
  but doesn't have a value, it would be even better: it would work with all
  the versions of the library that assume #define _GLOBAL_USING to be
  equivalent to #define _GLOBAL_USING 1.

 I don't think it's possible to check for that as far as I know :-(

Yes, it's also what I thought. Too bad.

Regards,

Guillaume

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Configuration for Intel compiler

2003-05-14 Thread Richard Hadsell
Guillaume Melquiond wrote:

Yes, this time the conditional is correct. Unfortunately, this patch is
still not good: __ICL is not defined so it doesn't work. My version of the
compiler (the standard version available on Intel's website) does not
define __ICL, but only __ICC and __INTEL_COMPILER. So the patch is still
not enough.
As a matter of fact, what is the meaning of ICL? For ICC, it's easy: it's
the acronym of Intel C Compiler. But for ICL, I don't know. By doing a
grep on the Boost source tree, I also saw a lot of place where only __ICL
is tested and not __ICC. If they are supposed to have the same meaning,
maybe all the occurences of __ICC and __ICL should be replaced by a common
macro: BOOST_INTEL_CXX_VERSION (or maybe a shorter version like
BOOST_INTEL).
 

As long as you're trying to get the Intel compiler predefined macros 
straight, please note that it defines __ICC only for the IA-32 version. 
For the Itanium version, the compiler defines __ECC.  That is why they 
deprecate both and recommend using __INTEL_COMPILER instead.  I 
understand that you may need to support all three for the purposes of 
older versions of the compiler.  I don't know when they introduced 
__INTEL_COMPILER.

--
Dick Hadsell914-259-6320  Fax: 914-259-6499
Reply-to:   [EMAIL PROTECTED]
Blue Sky Studioshttp://www.blueskystudios.com
44 South Broadway, White Plains, NY 10601
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost