#+(or cmu scl) (declare (ignore module))
#+lispworks (declare (ignore supporting-libraries))
- (when (and filename (or (null (pathname-directory filename))
- (probe-file filename)))
- (if (pathnamep filename) ;; ensure filename is a string to check if already loaded
- (setq filename (namestring (if (null (pathname-directory filename))
- filename
- ;; lispworks treats as UNC, so use truename
- #+(and lispworks win32) (truename filename)
- #-(and lispworks win32) filename))))
+ (flet ((load-failure ()
+ (error "Unable to load foreign library \"~A\"." filename)))
+ (when (and filename (or (null (pathname-directory filename))
+ (probe-file filename)))
+ (if (pathnamep filename) ;; ensure filename is a string to check if already loaded
+ (setq filename (namestring (if (null (pathname-directory filename))
+ filename
+ ;; lispworks treats as UNC, so use truename
+ #+(and lispworks win32) (truename filename)
+ #-(and lispworks win32) filename))))
- (if (and (not force-load)
- (find filename *loaded-libraries* :test #'string-equal))
- t ;; return T, but don't reload library
+ (if (and (not force-load)
+ (find filename *loaded-libraries* :test #'string-equal))
+ t ;; return T, but don't reload library
(progn
#+cmu
(let ((type (pathname-type (parse-namestring filename))))
(if (string-equal type "so")
- (sys::load-object-file filename)
+ (unless
+ (sys::load-object-file filename)
+ (load-failure))
(alien:load-foreign filename
:libraries
(convert-supporting-libraries-to-string
(error c))))
#+lispworks (fli:register-module module :real-name filename
- :connection-style :immediate)
+ :connection-style :immediate)
#+allegro (load filename)
#+openmcl (ccl:open-shared-library filename)
#+digitool (ccl:add-to-shared-library-search-path filename t)
(push filename *loaded-libraries*)
- t))))
+ t)))))
(defun convert-supporting-libraries-to-string (libs)
(let (lib-load-list)