GPC platforms_(re)

Thu, 29 May 1997 17:26:47 +0100 (BST)


On Thu, 29 May 1997 14:03:05 +0300 (EET DST) Jukka Virtanen  wrote:
>
>> >> Is it possible to tell which GPC platform and version is being used?
>> >> [...]
>> >> This would really help in writing portable code. What do you think?
>
>	Please check what gpc (gcc) defines now in your system.
>
>	This is most easily done by creating an empty file, say
>	foo.p, and compiling it with the '-v' option. In a unix
>	system, you can do this with:
>
>	# touch foo.p
>	# gcc -v foo.p
>
>	At least in the version I compiled yesterday for the Alpha,
>	the defines are:
>
>/v/dunix40_alpha/gnu/gcc/2.7.2.1/lib/gcc-lib/alpha-dec-osf4.0/2.7.2.1/gpc-cpp
>-lang-pascal -v -nocharescape -undef -D__GNUC__=970528(2 -D__GPC__=970528(2
>-D__GNUC_MINOR__=7 -D__unix__ -D__osf__ -D__alpha -D__alpha__ -D_LONGLONG
>-D__SYSTYPE_BSD__ -D_SYSTYPE_BSD -D__unix -D__SYSTYPE_BSD -Asystem(unix)
>-Asystem(xpg4) -Acpu(alpha) -Amachine(alpha) -D__LANGUAGE_C__ -D__LANGUAGE_C
>-DLANGUAGE_C /tmp/foo.p /tmp/ccaagopa.i
>GNU CPP version 970528(2.7.2.1)
>
>	So, it seems that the __GPC__ define at least will get screwed
>	up, if it is generated like it is now.

I just tried this under DJGPP. This is what I got;

gpc version 2.0(2.7.2.1)
 c:/gpc/bin\gpc-cpp.exe -lang-pascal -v -nocharescape -undef -D__GNUC__=2 -D__GPC__=2 
-D__GNUC_MINOR__=0(2 -D__unix__ -D__i386__ -D__GO32__ -D__MSDOS__ 
-D__DJGPP__=2 -D__DJGPP_MINOR__=1 -D__unix -D__i386 -D__GO32 -D__MSDOS 
-D__DJGPP=2 -D__DJGPP_MINOR=1 oka.pas c:\temp\ccbaaaaa
GNU CPP version 2.0(2.7.2.1) (80386, BSD syntax)

I see that "__unix__" is defined. This is very worrying. If I do {$ifdef __unix__}
the code gets compiled (why? I am using DOS, not unix). 

If I do {$ifdef __UNIX__} the code (rightly) does not get compiled. So, this IFDEF
thing is case sensitive. Isn't case sensitivity one of the C problems that we are
trying to move from?

>	Also, I'd recommend in using the same definitions as
>	are defined for the GCC for the same host. Why add new ones?

For the simple reason that we may not know all the definitions. I only
know the definitions for DJGPP - and I am trying to produce a portable 
BP-compatible SYSTEM unit. How do I know what all the other GCC 
platforms define? What if they change? I would like us to have 
GPC-specific defines (at least, to identify the various GPC platforms), 
which are in the GPC documentation. I am surprised to find that "__unix__"
is defined on my DJGPP system. I now find that it is also defined on your
Alpha system (and probably every other GPC platform?).  I would like us to 
define something more reliable than this, so that it is easier to write portable 
code using IFDEFs.

In the meantime, can somebody please send a copy of the defines on;
EMX, Linux, Solaris ? Thanks!

Best regards, The Chief 
Dr Abimbola A. Olowofoyeku (The African Chief, and the Great Elephant)
Author of:  Chief's Installer Pro v3.50 for Win16 and Win32.
Homepage:  http://ourworld.compuserve.com/homepages/African_Chief/
E-mail: laa12@cc.keele.ac.uk



The African Chief (laa12@cc.keele.ac.uk)

HTML conversion by Lluís de Yzaguirre i Maura
Institut de Lingüística Aplicada - Universitat "Pompeu Fabra"
e-mail: de_yza@upf.es