[Ecls-list] Re: More build problems ...

R. Mattes rm at mh-freiburg.de
Mon Jan 31 04:40:07 UTC 2005

On Fri, 28 Jan 2005 14:36:16 +0100, Juan Jose Garcia Ripoll wrote:

> R. Mattes wrote:
>>Well, again, a fresh checkout (the last one _did_ compile without
>>problems) and the build process stops, this time with the following: 
>> > ;;; Invoking external command: gcc -g -O2 -fPIC -D_THREAD_SAFE
>> > -fstrict-aliasing -Dlinux -I"/LISP/ecls/src"/h
>> > -I"/LISP/ecls/src"/gmp
>> > -I"/LISP/ecls/build"/h  -I"/LISP/ecls/build"/h -w -c "ecl.c" -o "ecl.o"
>> ;;; Invoking external command: gcc -o "ecl" -L"/LISP/ecls/build" "ecl.o"
>>   "-L./"   -Wl,--rpath,/usr/local/lib/ecl/ libecl.so -lpthread -ldl -lm
>>Hmm, i should note that i added '--with-threads' to my configure
>>invocation. Looking a '' i find that cl_env is being defined
>>conditionally when threading is enabled:
> The name of the flag is "--enable-threads".

Ups, sorry, that's what i actually used. Here is the copy-pasted version
from config.status:

 '--srcdir=/LISP/ecls/src' '--with-clos-streams' '--with-x'
 '--with-cmuformat' '--with-tcp' '--with-clx' '--enable-threads'

>  Also, did you delete the
> build directory before running "configure" again?

No i didn't. I assumed the build setup would take care of this ...
I'll try another compile with a clean build directory.

> As for the structure reference, I do not see why the current way of 
> defining the global environment should be a problem. Whether the flag 
> ECL_THREADS is defined or not is decided at compilation time and this 
> flag is stored in the header config.h which is loaded before external.h 
> Hence when we ECL has been compiled with support for threads, any 
> reference to the global environment results in a function call, but for 
> single threaded runtimes we can access the fields of the structure with 
> a single direct reference. There is no portable way of defining inline 
> functions and users need never access the cl_env structure anyway.

Hmm, but you export the symbol from libecl.so - this get's tricky once 
you start linking against other libraries that import from libecl.so as.
An application that embeds ecl and extends it must have a way to detect
whether it was linked against a threaded version of libecl or not (other-
wise it might reference an undefined symbol). Maybe there needs to be an
libecl as well as a libecl-threaded?

 Thanks RalfD
> Juanjo
> ------------------------------------------------------- This SF.Net
> email is sponsored by: IntelliVIEW -- Interactive Reporting Tool for
> open source databases. Create drag-&-drop reports. Save time by over
> 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc. Download
> a FREE copy at http://www.intelliview.com/go/osdn_nl

More information about the ecl-devel mailing list