From: espen Date: Wed, 27 Oct 2004 15:52:13 +0000 (+0000) Subject: Added package definition. Now using load-foreign-library from UFFI X-Git-Tag: clg-0-90~267 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/clg/commitdiff_plain/98c59d9b8532e81d4e09e107409e67b6642aadac Added package definition. Now using load-foreign-library from UFFI --- diff --git a/tools/sharedlib.lisp b/tools/sharedlib.lisp index 8ef77d1..ea8cde2 100644 --- a/tools/sharedlib.lisp +++ b/tools/sharedlib.lisp @@ -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))) -