On 27/03/2009 18:07, Ghee Teo wrote: > On 03/27/09 17:51, Christian Thalinger wrote: >> On Fri, 2009-03-27 at 17:35 +0000, Ghee Teo wrote: >> >>> Hi, >>> >>> I am working on patches that get the compiler to conditional include or >>> exclude the OpenSolaris specific bit of code. >>> I have seen upstream code that used >>> >>> #if defined(__sun__) >>> ... >>> #endif >>> >>> But that does not work for CBE when I build them. >>> >>> I have to use >>> >>> #if defined(sun) >>> ... >>> #endif >>> >>> So what is the right macros to use that work both down stream and upstream? >>> Where are they defined, any idea? >>> >> These macros are usually defined by the compiler itself, or more >> specifically by the preprocessor. I don't know of a way to find out the >> preprocessor defines for SunCC, but I know how to do it with GCC: >> >> $ cpp -dM /dev/null >> >> Maybe someone else knows how to print them with SunCC... >> > May be I am wrong, I got > cpp -dM /dev/null | grep sun > #define __sun 1 > #define sun 1 > #define __sun__ 1 > bash-3.2$ which cc > /export/home/gheet/compiler/onnv-tools/i386/SS11/bin/cc > > so it seems to be all defined. Let me investigate a bit more. > Thanks,
Ah, but that's the /usr/sfw/bin/cpp most likely - the GNU CPP - so that's why that works as expected - you need to be looking at /usr/lib/cpp if using the SunCC compiler. Darren.
