(setq filenames (if (listp filenames) filenames (list filenames)))
(flet ((try-load (testpath)
- (handler-case
- (uffi:load-foreign-library testpath
- :module module
- :supporting-libraries supporting-libraries)
- (error (c) (warn "~A" c) nil))))
+ (handler-case
+ (uffi:load-foreign-library testpath
+ :module module
+ :supporting-libraries supporting-libraries)
+ (error nil)))) ;(c) (warn "~A" c) nil))))
(or
(loop for type in (uffi:foreign-library-types)
- thereis
- (loop for name in filenames
- for pn = (make-pathname :name name :type type)
- thereis (or
- (loop for search-path in clsql:*foreign-library-search-paths*
- thereis (try-load (merge-pathnames pn search-path)))
- (try-load pn))))
+ thereis
+ (loop for name in filenames
+ for pn = (make-pathname :name name :type type)
+ thereis (or
+ (try-load pn)
+ (loop for search-path in clsql:*foreign-library-search-paths*
+ thereis (try-load (merge-pathnames pn search-path))))))
(when errorp
(error "Couldn't load foreign librar~@P ~{~S~^, ~}. (searched ~S)"
- (length filenames) filenames
- 'clsql:*foreign-library-search-paths*)))))
+ (length filenames) filenames
+ 'clsql:*foreign-library-search-paths*)))))
+;; searches clsql_uffi64 to accomodate both 32-bit and 64-bit libraries on same system
(defvar *clsql-uffi-library-filenames*
- (list #+(or 64bit x86-64) "clsql_uffi64"
- "clsql_uffi"))
+ `(,@(when (> most-positive-fixnum (expt 2 32)) (list "clsql_uffi64"))
+ "clsql_uffi"))
(defvar *clsql-uffi-supporting-libraries* '("c")
"Used only by CMU. List of library flags needed to be passed to ld to