On Sat, Jun 25, 2011 at 8:48 PM, Eric Schulte <span dir="ltr"><<a href="mailto:schulte.eric@gmail.com">schulte.eric@gmail.com</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<div id=":18">Thank you, such an interface sounds ideal.  Do you have any idea of a<br>
time scale for such an implementation, e.g., on the order of days weeks<br>
or months?<br>
</div></blockquote></div><br>I just finished the following patch:<br><br> - When building shared and statically linked libraries, ECL creates an<br>   extra function that performs two tasks: initializing ECL if it wasn't done<br>

   before, and initializing the library. This can be used to create standalone<br>   libraries to be linked with other programs. The name of the function typically<br>   begins with main_dll or main_lib but it is output by ECL on screen.<br>

<br>An example is shown below. It has been uploaded to CVS/git but it might not be functioning perfectly because of other issues -- namely the thing with compiled data mentioned on a separate thread, which is still under testing.<br>

<br>Feel free to report problems. Best,<br><br>Juanjo<br><br>$ ecl -norc<br>ECL (Embeddable Common-Lisp) 11.1.1<br>Copyright (C) 1984 Taiichi Yuasa and Masami Hagiya<br>Copyright (C) 1993 Giuseppe Attardi<br>Copyright (C) 2000 Juan J. Garcia-Ripoll<br>

ECL is free software, and you are welcome to redistribute it<br>under certain conditions; see file 'Copyright' for details.<br>Type :h for Help.  <br>Top level.<br>> (si::system "cat foo.lsp")<br>(defun foo (x)<br>

 (print x))<br><br>0<br>> (defparameter *object* (compile-file "foo" :system-p t :verbose nil))<br><br>;;; Loading #P"/Users/jjgarcia/lib/ecl-11.1.1/cmp.fas"<br>;;; Compiling (DEFUN FOO ...).<br>;;; Emitting code for FOO.<br>

;;; Note:<br>;;;   Invoking external command:<br>;;;   gcc -I. -I/Users/jjgarcia/include/ -g -O2 -fPIC -fno-common -Ddarwin -O2 -w -c foo.c -o foo.o <br>*OBJECT*<br>> (c:build-shared-library "foo" :lisp-files (list *object*))<br>

<br>;;; Note:<br>;;;   Library initialization function is main_dll_FOO<br>[...]<br><br>In this case<br><br>main_dll_FOO(int argc, char **argv);<br><br>is the initialization routine of the library. Note that this calls cl_boot() but _you_ should manually insert a call to cl_shutdown() somewhere in your program.<br>

<br>Juanjo<br clear="all"><br>-- <br>Instituto de Física Fundamental, CSIC<br>c/ Serrano, 113b, Madrid 28006 (Spain) <br><a href="http://juanjose.garciaripoll.googlepages.com" target="_blank">http://juanjose.garciaripoll.googlepages.com</a><br>