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

goo and FreeBSD



Here are some notes on compiling and using goo-0_155-any-dev on
FreeBSD. I'm using FreeBSD 4.8, but later versions shouldn't be that
different.

1. FreeBSD 4.8 comes with version 2.0.1 of gmp.  This is too old to
   work with goo.  (Some later versions of FreeBSD don't include gmp at
   all, apparently.)  Install the libgmp-4.1.2 port from 
   /usr/ports/math/libgmp4.

2. Install the boehm-gc port from /usr/ports/devel/boehm-gc. 

3. FreeBSD ports install under /usr/local, but the FreeBSD gcc doesn't
   look in /usr/local/include by default when compiling nor does it
   look in /usr/local/lib by default when linking.  You'll have to run
   configure with the environment variables 
       CFLAGS='-I/usr/local/include' LDFLAGS='-L/usr/local/include'

4. On FreeBSD /usr/include/values.h warns that it is obsolete and
   should be replaced with limits.h.  The compilation of goo fails
   because there are no definitions for LONG_MAX or LONG_MIN in
   values.h.  The solution is to replace values.h with limits.h
   everywhere:

       ./c/g2c/goo/bignum.c:781:#include <values.h>
       ./src/goo/bignum.goo:7:#include <values.h>
       ./src/goo/bignum/%gmp.c:2:#include <values.h>
       ./src/goo/bignum/gmp.goo:9:#include <values.h>

5. As far as I can tell, the goo configure script does not save the
   values of CFLAGS and LDFLAGS anywhere to be used when compiling the
   C code generated at the repl, so those compilations fail with an
   error about not being able to include gc/gc.h.  Changing the
   variable `bv' in the function `YgooSsystemYPcompile' in
   c/g2c/goo/%system.c and src/goo/%system.c to include
   "-I/usr/local/include" as one of its elements fixes that problem,
   but it would probably be better to specify this through the
   configure script somehow, either by saving the value of CFLAGS or
   by an argument to the configure script.

Here's a patch, but don't apply it blindly, since it includes the
change to `YgooSsystemYPcompile' mentioned in #5.

Attachment: goo.patch
Description: ugly patches for FreeBSD; use only for reference


-- 
T. Kurt Bond, tkb@tkb.mpl.com