chiark / gitweb /
Added package definition. Now using load-foreign-library from UFFI
authorespen <espen>
Wed, 27 Oct 2004 15:52:13 +0000 (15:52 +0000)
committerespen <espen>
Wed, 27 Oct 2004 15:52:13 +0000 (15:52 +0000)
tools/sharedlib.lisp

index 8ef77d1dcaff09f818836c13dd7bfade6a83e78b..ea8cde23ac316579917a1a3f505063af8063cd6b 100644 (file)
@@ -1,11 +1,23 @@
-(in-package "ALIEN")
-(export '(load-shared-library))
-(in-package "SYSTEM")
-(import 'alien:load-shared-library)
+(asdf:oos 'asdf:load-op :uffi)
 
-(defun load-shared-library (file &key init prototype initargs)
-  (format t ";;; Loading shared library ~A~%" file)
-  (load-object-file file)
+(defpackage #:sharedlib
+  (:use #:common-lisp #:uffi)
+  (:export #:load-shared-library))
+
+(in-package #:sharedlib)
+
+
+(defparameter *library-paths* '("/usr/lib/"))
+
+
+
+(defun load-shared-library (name &key init prototype initargs)
+  (format t ";;; Loading shared library ~A~%" name)
+  (let ((pathname (find-foreign-library name *library-paths*)))
+    (if pathname
+       (unless (load-foreign-library pathname)
+         (error "Couldn't load shared library: ~A" pathname))
+       (error "Shared library not found: ~A" name)))   
   (when init
     (apply
      #'alien:alien-funcall
@@ -14,4 +26,3 @@ (defun load-shared-library (file &key init prototype initargs)
        :type (alien::parse-alien-type (or prototype `(function c-call:void)))
        :sap-form (system:foreign-symbol-address init)))
      initargs)))
-