[racket] USE_SINGLE_FLOATS_AS_DEFAULT stops racket-5.1.1 build on Solaris x86

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Mon May 23 22:41:46 EDT 2011

Does renaming the variable to `sgl' fix the problem?

My guess is that `single' is defined as a type by some header and
"xform.rkt" can't deal with the collision.

At Mon, 23 May 2011 13:04:02 +0100, Tim Brown wrote:
> Continuing with Solaris build (environment at foot of mail)...
> 
> Now I've got a weird one..
> 
> This seems to be the first use of xform.rkt, so I'm not sure if this is
> an issue with xform or the source file itself.
> 
> The error is in atan_prim(); the declarations at the head of the function
> are:
>    double v;
>    Scheme_Object *n1;
> #ifdef MZ_USE_SINGLE_FLOATS
> # ifdef USE_SINGLE_FLOATS_AS_DEFAULT
>    int dbl = 0;
> # define MZ_USE_SINGLE !dbl
> # else
> #warning "single declared (tim added this warning!)"
>    int single = 0;
> # define MZ_USE_SINGLE single == 2
> #endif
> #endif
> 
> And each of the errors (e.g. the one on 2210) is caused by the block:
> #ifdef MZ_USE_SINGLE_FLOATS
>    else if (SCHEME_FLTP(n1)) {
>      v = SCHEME_FLT_VAL(n1);
> # ifndef USE_SINGLE_FLOATS_AS_DEFAULT
>      single ++;   //<<-- this is the single that is a variable definition,
>                   //     not at the beginning of the block
> # endif
>    }
> #endif
> 
> The xform output shows the warning that I added, but it doesn't see
> that single has been defined.
> 
> ----------------------------------------------------------------
> gmake xobjects
> gmake[4]: Entering directory 
> `/home/tim/racket-5.1.1/src/SunOS-5.10-i386/racket/gc2'
> env XFORM_USE_PRECOMP=xsrc/precomp.h ../racketcgc -cqu 
> ../../../racket/gc2/xform.rkt --setup . --cpp "gcc -E -I./.. 
> -I../../../racket/gc2/../include -DNEWGC_BTC_ACCOUNT  -D_LARGEFILE_SOURCE 
> -D_FILE_OFFSET_BITS=64 "  --keep-lines -o xsrc/number.c 
> ../../../racket/gc2/../src/number.c
> ../../../racket/gc2/../src/number.c:2196:2: warning: #warning single declared
> Error [DECL] 2304 in ../../../racket/gc2/../src/number.c: Variable 
> declaration (single ++) not at the beginning of a block.
> Error [DECL] 2258 in ../../../racket/gc2/../src/number.c: Variable 
> declaration (single ++) not at the beginning of a block.
> Error [DECL] 2210 in ../../../racket/gc2/../src/number.c: Variable 
> declaration (single ++) not at the beginning of a block.
> xform: Errors converting
> ----------------------------------------------------------------
> 
> uname -a:  SunOS ... 5.10 Generic_138889-03 i86pc i386 i86pc
> 
> racket:    racket-5.1.1-src-unix.tgz  -- only building on this a.t.m.
> 
> configure: ../configure --srcdir=.. --prefix=/usr/local CC=gcc CXX=g++
>             (I'm using a target-specific build directory)
> 
> gcc:       gcc (GCC) 3.4.3 (csl-sol210-3_4-branch+sol_rpath)
> 
> Regards,
> 
> Tim
> 
> -- 
> Tim Brown <tim.brown at cityc.co.uk>  | City Computing Limited            |
> T: +44 20 8770 2110                | City House, Sutton Park Road      |
> F: +44 20 8770 2130                | Sutton, Surrey, SM1 2AE, GB       |
> -----------------------------------------------------------------------|
> BEAUTY:  What's in your eye when you have a bee in your hand           |
> -----------------------------------------------------------------------'
> City Computing Limited registered in London No. 1767817.
> Registered Office: City House, Sutton Park Road, Sutton, Surrey, SM1 2AE
> VAT number 372 8290 34.
> _________________________________________________
>   For list-related administrative tasks:
>   http://lists.racket-lang.org/listinfo/users


Posted on the users mailing list.