[cffi-devel] Re: how to build gsl dll

Reini Urban rurban at x-ray.at
Mon Feb 18 18:52:26 UTC 2008


Mirko Vukovic schrieb:
> On Mon, Feb 18, 2008 at 11:01 AM, Reini Urban  wrote:
>>  2008/2/17, Mirko Vukovic:
>>> I am trying to build a dll for gsl.  I want to link it to clisp.
>>  I would suggest not to use a static clisp module, just use the FFI.
>>  This is much simplier, smaller and easier to test. See libsvm or matlab,
>>  or pari for a more optimized binding.
>>
>>  I want to do this for my gdi module also, but had no time yet.
>>  And we still have no header parser, which could construct the
>>  FFI binding automatically. cffi might be useful.

> Reini,
> The reason why I need cffi is that I am trying to get nlisp to work on
> clisp+cygwin.  And nlisp is using cffi.  I have nlisp running at work
> on linux+sbcl, but my laptop has only cygwin.

$ cygcheck /bin/cyggsl-0.dll
f:\cygwin\bin\cyggsl-0.dll
   f:\cygwin\lib\lapack\cygblas.dll

Are you sure you have /lib/lapack or /usr/lib/lapack added to your path?

> I posted a message on the cffi mailing list, and Luis is helping me there.

I see.
$ clisp -q
(ASDF:OOS 'ASDF:LOAD-OP :ASDF-INSTALL)
(ASDF-INSTALL:INSTALL :nlisp)

Oops...
So I had to create a small patch
http://sourceforge.net/tracker/index.php?func=detail&aid=1896345&group_id=174776&atid=870580

nlisp.lisp:
(cffi:define-foreign-library libgslcblas
   (:darwin "libgslcblas.dylib")
   (:unix (:or "cyggslcblas-0.dll" "libgslcblas.so.0" "libgslcblas.so"))
...
(cffi:define-foreign-library libgsl
   (:darwin "libgsl.dylib")
   (:unix (:or "cyggsl-0.dll" "libgsl.so.0" "libgsl.so"))
...
(cffi:define-foreign-library libsndfile
   (:darwin "libsndfile.dylib")
   (:unix (:or "cygsndfile-1.dll" "libsndfile.so.1" "libsndfile.so"))

Luís, cannot this be a bit simplified for :cygwin?
I've always have to do this.
"libsndfile.so.1" can be automatically translated to "cygsndfile-1.dll". 
Unfortunately :cygwin is no define-foreign-library target, just :unix.

nlisp-core.lisp:
fixnum and double-float just name clisp types, no classes yet. This is 
just for cmucl/sbcl so far. CLHS does not require those.
The clisp numeric classes are listed in the impnotes Chapter 4.4. 
(NUMBER, COMPLEX, REAL, FLOAT, RATIONAL, RATIO, INTEGER)

Now (ASDF:OOS 'ASDF:LOAD-OP :NLISP) prints tons of 
FFI::FOREIGN-LIBRARY-FUNCTION warnings, but works fine.
-- 
Reini Urban
http://phpwiki.org/  http://murbreak.at/
http://helsinki.at/  http://spacemovie.mur.at/



More information about the cffi-devel mailing list