[Ecls-list] ecl 0.5 build issues on OS X/Solaris. plus questions & feature reqs

John B. Thiel jbthiel at pobox.com
Tue Jan 1 13:32:28 UTC 2002

> On Monday 31 December 2001 04:37, I wrote:
> Hi Juanjo,  congratulations!  Very great to see this open-source
> *compilable* Common Lisp for native OS X - the first one!  I believe.
> This was also my first introduction to ECL (formerly only aware of cmucl
> and clisp) and the design, ideas and documentation are most impressive.
> I may very well adopt this as my primary CL as soon as possible.
> Many thanks to you and all developers, and please keep up the excellent
> work and support for OS X.    I am compiling the latest CVS version now,
> and (though not too expert in CL) will forward any findings or useful
> comments from my testing.  Looking forward to the upcoming performance
> improvements, GC, dynamic loading, etc.

Greetings again Juanjo  (and now rest of maillist),

Assorted notes/questions follow from my first tryout of ecl on OS X and 
Solaris 8 in the last 48 hours. I am completely new to ECL, and not very 
expert with CL,  so things noted as bug might not be.  
Clarifications/tips appreciated.

How close is the dynamic loading, on-the-fly compilation on OS X?  Is it 
known how and technically possible to achieve this?  Is anybody working 
on it?

Best regards,


BUILD NOTES UNDER OS X 10.1.2   (using cvs checkout as of Dec30)

(I think the config, Makefiles, etc. could be updated to avoid the 
following 2 issues...)

* BUG:    I had to hand copy gmp.h  to /usr/local/lib/ecl/h    [else 
compiles were failing]

* BUG:   I was getting ranlib errors when running ecl after the install:
/usr/bin/ld: table of contents for archive: /usr/local/lib/ecl//libecl.a 
is out of date; rerun ranlib(1) (can't load from it)
/usr/bin/ld: table of contents for archive: 
/usr/local/lib/ecl//libclos.a is out of date; rerun ranlib(1) (can't 
load from it)
/usr/bin/ld: table of contents for archive: /usr/local/lib/ecl//liblsp.a 
is out of date; rerun ranlib(1) (can't load from it)
/usr/bin/ld: table of contents for archive: /usr/local/lib/ecl//libgmp.a 
is out of date; rerun ranlib(1) (can't load from it)

I fixed it with :
	ranlib /usr/local/lib/ecl/lib*.a
Makefile should do this step before install, right?


* FEATURE:  It would be nice to add support for the readline library.

* DOC BUG (?):   In the example to make a standalone executable 
I had to use two ::   for c::build-program -- that worked, whereas
Documentation says...
 > (c:build-program "myecl" :lisp-files '("hello.o"))
 > (c:build-program "ecl-fib" :lisp-files (quote ("ff.o" "fib.o" 
Cannot find the external symbol BUILD-PROGRAM in #<"C" package>.

* FEATURE: It would be nice if the getopt also accepted single letter 
args,  (eg. -l for load).
Also that 'ecl abc.lisp xyz.lisp ...' might do something logical 
(currently it gives 'unknown flag' error)
Usage: ecl [-dir dir] [-load file] [-eval expr]
         [-compile file [-o ofile] [-c [cfile]] [-h [hfile]] [-data 
[datafile]] [-s]]

* FEATURE: (compile-file "xyz")  does not find xyz.lisp,  whereas (load 
"xyz") does find xyz.lisp.   It would be nice if the dual .lsp and .lisp 
extensions were supported everywhere.

* BUG: I think I encountered a bug just fiddling with the inspector on 
lists - the nthcdr keeps descending into nil every time it gets to the 
end of a list or sublist. Try for example:
	(inspect '(3 4 (5 6 7) (8 9) 8 9))
Hitting 'n' descends forever into the tails... (maybe theoretically 
correct but not very useful).

* QUESTION: Is it supported to link .o files or libraries compiled from 
original .c files, and call them from ECL?  If so, how? I did not find 
this case in the documentation which seems more oriented to the model of 
embedding C bodies, or calling lisp code from C.  For example, I tried 
to build an image with
	fac.o compiled from fac.c via gcc, and
	fib.o compiled from fib.lsp via ecl -s ,  and
	ff.o from ff.lsp containing
		(defentry fac (int) (int fac))

The build step failed with:

ecl -eval '(c::build-program "ecl-fib" :lisp-files (quote ("ff.o" 
"fib.o" "fac.o")))'
"gcc -g -O2 -Ddarwin  -O -I/usr/local/lib/ecl//h -w -c ecl-fib.c -o 
"gcc  -w -o ecl-fib -L/usr/local/lib/ecl/ ecl-fib.o ff.o fib.o fac.o 
-lecl -lclos -llsp  -lgmp   -lgmp -lm"/usr/bin/ld: Undefined symbols:

SOLARIS 8  (Blade 100)

BUG: Build is failing

cd c; make
./dpp /usr/local/src/ecl/ecls/src/c/main.d main.c
dpp: /usr/local/src/ecl/ecls/src/c/main.d -> main.c
gcc -c -I../h -I/usr/local/src/ecl/ecls/src/h  -g -O2 -Dsun4sol2 -o 
main.o main.c
In file included from /usr/local/src/ecl/ecls/src/h/ecl.h:43,
                  from /usr/local/src/ecl/ecls/src/c/main.d:36:
/usr/local/src/ecl/ecls/src/h/object.h:232: parse error before `u_int8_t'
/usr/local/src/ecl/ecls/src/h/object.h:232: warning: no semicolon at end 
of struct or union
/usr/local/src/ecl/ecls/src/h/object.h:238: parse error before `}'
/usr/local/src/ecl/ecls/src/h/object.h:247: field `self' has incomplete 
/usr/local/src/ecl/ecls/src/h/object.h:261: field `self' has incomplete 
make[2]: *** [main.o] Error 1
rm main.c
make[2]: Leaving directory `/usr/local/src/ecl/ecls/build/c'
make[1]: *** [libecl.a] Error 2
make[1]: Leaving directory `/usr/local/src/ecl/ecls/build'
make: *** [all] Error 2

More information about the ecl-devel mailing list