Subject: re: lib/36511: lcc is an ANSI C compiler for a variety of platforms
To: None <gnats-bugs@NetBSD.org>
From: matthew green <mrg@eterna.com.au>
List: netbsd-bugs
Date: 06/20/2007 06:25:52
   
   0 tmp>cat main.c 
   #include <stdio.h>
   
   int main (void)
   {
           printf ("Hello world\n");
           return 0;
   }
   0 tmp>gcc main.c 
   0 tmp>./a.out                                            
Hello world
   0 tmp>lcc main.c 
   cpp: /usr/include/sys/cdefs_elf.h:67 /usr/pkg/share/lcc/include/sys/cdefs.h:21 /usr/include/stdio.h:40 main.c:1 Syntax error in #if/#elsif
   1 tmp>
   
   
   Can you make NetBSD include files
   a bit friendlier for C compilers other that GCC?


this should be valid for an ANSI C compiler.  the relevant parts are:

from <sys/cdefs.h>:

#ifdef __GNUC__
#define __GNUC_PREREQ__(x, y)                                           \
        ((__GNUC__ == (x) && __GNUC_MINOR__ >= (y)) ||                  \
	 (__GNUC__ > (x)))
#else
#define __GNUC_PREREQ__(x, y)   0
#endif


and the usage from <sys/cdefs_elf.h>:

#if __GNUC_PREREQ__(4, 0)


so this should come out as "#if 0" for non GCC compilers.  does lcc
define __GNUC__ by chance?


.mrg.