Re: Depending on C99 (Re: GtkBindingSignal changes)



On Thu, Jan 05, 2006 at 09:52:40PM -0500, Owen Taylor wrote:
> 
> In terms of the impact on people compiling GTK+, I'd be interested
> in hearing from the people at "The Written Word", who compile GTK+
> across a pretty big range of older platforms; is Albert Chin 
> listening?

Ok, here's a survey. We're using the latest vendor C compiler in all
cases except for newer versions of Solaris/AIX but I doubt that makes
a difference here:
  $ cat c99.c
struct header {
  int len;
  unsigned char data[];
};

  Solaris 2.6 (Sun WorkShop 6 update 2 C 5.3 Patch 111679-14 2004/02/20)
    $ cc -c c99.c
    "c99.c", line 3: null dimension: data
    cc: acomp failed for c99.c
    [C99 not supported in the compiler or C library]

  Solaris 7 (Sun C 5.5 Patch 112760-18 2005/06/14)
    $ cc -xc99=no%lib -c c99.c
    $ cc -xc99=all -c c99.c
    -xc99=lib is not available on SunOS 5.7
    [C99 support in the compiler but not in the C library]

  Solaris 8 (Sun C 5.5 Patch 112760-18 2005/06/14)
    $ cc -xc99=no%lib -c c99.c
    $ cc -xc99=all -c c99.c
    -xc99=lib is not available on SunOS 5.8
    [C99 support in the compiler but not in the C library]

  Solaris 9 (Sun C 5.5 Patch 112760-18 2005/06/14)
    $ cc -xc99=no%lib -c c99.c
    $ cc -xc99=all -c c99.c
    -xc99=lib is not available on SunOS 5.9
    [C99 support in the compiler but not in the C library]

  Solaris 10 (Sun C 5.7 Patch 117836-05 2005/10/05)
    $ cc -xc99=no%lib -c c99.c
    $ cc -xc99=all -c c99.c
    [C99 support in the compiler and C library]

  HP-UX 10.20 (HP92453-01 A.10.32.30 HP C Compiler)
  HP-UX 11.00 (HP92453-01 B.11.X.32509-32512.GP HP C Compiler)
  HP-UX 11.11 (HP92453-01 B.11.11.14 HP C Compiler)
    $ cc -AC99 -c c99.c
    cc: "c99.c", line 3: error 1578: Size of struct or union member is unknown.
    [C99 not supported in the compiler or C library]

  HP-UX 11.23/PA (HP92453-01 B.11.11.14 HP C Compiler)
    $ cc -AC99 -c c99.c
    cc: "c99.c", line 3: error 1578: Size of struct or union member is unknown.
    <Odd. The OS has C99 support but I don't know why the C
     compiler isn't accepting -AC99 when it's documented in cc(1).
     Will need to investigate.>
    [C99 not supported in the compiler but supported in the C library]

  HP-UX 11.23/IA (HP aC++/C for Integrity Servers B3910B A.06.06)
    $ cc -AC99 -c c99.c
    <From http://docs.hp.com/en/5990-6737/index.html:
       C99 Support for HP-UX System C Library (libc)>
    [C99 support in the compiler and C library]

  AIX 4.3.3 (C for AIX Compiler 6.0.0.10)
  AIX 5.1 (IBM XL C Compiler 7.0.0.4)
    $ xlc -qlanglvl=stdc99 -c c99.c
    [C99 support in the compiler. C99 library support seems to
     have started with AIX 5.2]

  AIX 5.2 (IBM XL C Compiler 7.0.0.4)
    $ xlc -qlanglvl=stdc99 -c c99.c
    <From http://www16.boulder.ibm.com/pseries/en_US/infocenter/base/52_base_relnotes.htm#wq95:>
       C99 Language Interfaces

       AIX 5L Version 5.2 system libraries and headers include interfaces
       required by the ISO/IEC 9899:1999(E) (C99) language standard and the
       Single UNIX(R) Specification, Version 3. Some of the interfaces may
       have the same names as symbols in existing programs. The interfaces
       may be hidden by specifying the -D_NOISOC99_SOURCE when you are
       compiling.>
    [C99 support in the compiler and C library]

  AIX 5.3 (IBM XL C Compiler 7.0.0.4)
    $ xlc -qlanglvl=stdc99 -c c99.c
    <From http://publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp?topic=/com.ibm.aix.resources/53relnotes.htm:
       C99 Language Interfaces

       AIX 5L Version 5.3 system libraries and headers include
       interfaces required by the ISO/IEC 9899:1999(E) (C99)
       language standard and the Single UNIX Specification, Version
       3. Some of the interfaces may have the same names as symbols
       in existing programs. The interfaces may be hidden by specifying
       the -D_NOISOC99_SOURCE when you are compiling.>
    [C99 support in the compiler and C library]

  Tru64 UNIX 4.0D (Compaq C V6.5-207 (dtk))
  Tru64 UNIX 5.1 (Compaq C V6.5-303 (dtk))
    $ cc -c99 -c c99.c
    <From
     ftp://ftp.compaq.com/pub/products/c-cxx/tru64/dtk/dtk51b/DTC650_RN.txt:
       This new Developers' Toolkit (dtk) compiler provides:
       ...
       o new features from the C99 standard including restricted pointers,
         variable length arrays, interspersed declarations and statements,
         initializers with designators, compound literals, macros with
         a variable number of arguments, _Pragma preprocessing operator,
         __func__ predefined identifier, hexadecimal floating-point
         literals, and complex data types (on V5.1A and later systems).
    [C99 support in the compiler but not in the C library unless
     running 5.1A and above]

  IRIX 6.5.26m (MIPSpro Compilers: Version 7.4.4m)
    $ cc -c99 -c c99.c
    <From http://www.sgi.com/products/software/irix/tools/c.html:
       MIPSpro ANSI C Compiler

       Now Supports ISO/IEC c99 Standard
       As of the 7.4 release of the MIPSpro C Compiler, the C compiler
       supports the c99 standard when invoked with the -c99 flag or
       when the c99 command is used.
       ...
       In addition, new functions for wide-character support and new
       format modifiers for printf() are provided in the C Standard
       library (libc) in IRIX® 6.5.18.>
    [C99 support in the compiler and C library but only for
     newer versions of the compiler and OS]

Thanks to Andrew Paprocki for the Solaris/AIX notes, compiler options.

c99.c isn't enough to really justify C99 support in the compiler but
it's probably good enough for this test.

-- 
albert chin (china thewrittenword com)



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]