On Tue, Jan 3, 2012 at 2:10 PM, Martin Simmons <mar...@lispworks.com> wrote:
> >>>>> On Thu, 29 Dec 2011 21:19:15 -0500, Mirko Vukovic said: > > > > Hello, > > > > Several projects (lla, blapack among them) link common lisp (cl) to > fortran > > 77 (f77)code. Unfortunately, being totally unfamiliar with cffi, I was > > having trouble using those packages to learn how to link cl to other f77 > > code. > > > > To learn more about calling f77 code from CL, I assembled a bunch of > simple > > examples (using cygwin+clisp+gfortran).to show how to pass values of > > various types to f77. > > > > I have put up the examples on https://github.com/mirkov/cffi-f77. I > tried > > to add enough documentation to make the package easily understandable. > > > > I hope this proves useful to others. I would appreciate comments > regarding > > errors and improvements. > > I tested the code in LispWorks on 64-bit Linux and found the following > changes > useful. > > Avoid hardwired paths: > > diff --git a/library-ops.lisp b/library-ops.lisp > index 63358e1..2c2e6b9 100755 > --- a/library-ops.lisp > +++ b/library-ops.lisp > @@ -27,7 +27,7 @@ > (defun link-lib () > "Link to the foreign library" > (setf *lib* > - (load-foreign-library > #P"/home/977315/my-software-add-ons/my-lisp/cffi+f77/library.dll"))) > + (load-foreign-library (asdf:system-relative-pathname "cffi+f77" > "library.dll")))) > > (defun unlink-lib () > "Unlink from the foreign library" > > > Need -fPIC for successful linking on 64-bit Linux: > > diff --git a/makefile b/makefile > index 3db9e80..1b542d6 100755 > --- a/makefile > +++ b/makefile > @@ -3,7 +3,7 @@ fortran = gfortran > objs = simple_example.o subroutines.o > > %.o : %.f > - $(fortran) -c $< -o $@ > + $(fortran) -c -fPIC $< -o $@ > > special : clean > clean : > > > Enhancement to the instructions: > > diff --git a/readme.org b/readme.org > index 9729387..b216a9d 100755 > --- a/readme.org > +++ b/readme.org > @@ -73,5 +73,6 @@ make library.dll > > The examples correctness can be verified by running unit tests: > #+begin_src lisp > +(in-package #:cffi+f77) > (run-tests) > #+end_src > > > __Martin > > _______________________________________________ > cffi-devel mailing list > cffi-devel@common-lisp.net > http://lists.common-lisp.net/cgi-bin/mailman/listinfo/cffi-devel > Cool, thank you. You removed at least one of my to-do items :-) I am currently working on setting it up on 64-bit sbcl on redhat linux. Mirko
_______________________________________________ cffi-devel mailing list cffi-devel@common-lisp.net http://lists.common-lisp.net/cgi-bin/mailman/listinfo/cffi-devel