C Compiler under Unix System VR4

Tony Rems rembo at unisoft.UUCP
Thu Oct 11 14:29:36 AEST 1990


In article <125 at alfrat.uucp> roy at alfrat.UUCP (Roy Phillips) writes:
>The standard header files supplied with AT&T's UNIX System V Release 4.2
>contains pre-processor commands such as the following:
>
>   #if #machine(pdp11)
>
>The C preprocessor supplied has no problems with this, but my preferred C
>compiler, gcc, objects, even in it's '-ansi' mode.  So I guess it's
>not ANSI C.  
>
>My questions are::
>
>1. Does anyone know about this pre-processor syntax? and is it
>   supposed to be standard on SysVR4?
>
>2. Assuming yes to the above, is there a patch for 'gcc' to cater for it?
>
>As well as the above, the organisation of the library directory has changed
>somewhat - 'gcc' can't find 'crt0.o', which is now in /usr/ccs/lib, instead
>of /usr/lib (the same goes for most of the libraries).
>

1.  Yes, this is standard in the C Issue 5.0 which is provided with
	SVR4.  This works through a pre-processor function that works
	like this:

	#define  pdp11	1
	#assert  machine(pdp11)

	so, doing '#if #machine(pdp11)' (assuming the above 
	declaration), indicates that the assertion is true.

2.  I believe there is currently negotiation underway for GNU
	to work on a version of gcc and gdb for SVR4.


As for you compatibility problem, I suggest symbolic links as 
a temporary hack.  AT&T has decided that all the language development
tools belong under /usr/ccs.  

Depending on what needs you have, you can #ifdef them out if you 
really need to use gcc.  This way you can do something like:

	#ifdef ATT_CC
	#if #machine(pdp11)
	#else
	#ifdef GCC
	#do whatever checks you might need
	#endif

It's a hack, but it should solve your problems.


-Tony



More information about the Comp.lang.c mailing list