r10933: 08 May 2006 Kevin Rosenberg <kevin@rosenberg.net>
[clsql.git] / clsql-uffi.asd
index d7d4ac61edbf67d38fdb3c21df25ec4e74d6809a..19b9fb4ce44afbd342b35a4026c86998b9a6902f 100644 (file)
 
 (in-package cl-user)
 
-;; need to load uffi for below output-files method 
-(eval-when (:compile-toplevel :load-toplevel :execute)
-  (unless (find-package 'uffi)
-    (asdf:operate 'asdf:load-op 'uffi)))
-
 (defpackage clsql-uffi-system (:use #:asdf #:cl))
 (in-package clsql-uffi-system)
 
-(defvar *library-file-dir* (append (pathname-directory *load-truename*)
-                                  (list "uffi")))
+(defvar *clsql-uffi-library-dir*
+  (merge-pathnames "uffi/"
+                  (make-pathname :name nil :type nil :defaults *load-truename*)))
 
 (defclass clsql-uffi-source-file (c-source-file)
   ())
@@ -48,7 +44,7 @@
              found
              (make-pathname :name (component-name c)
                             :type library-file-type
-                            :directory *library-file-dir*)))))
+                            :defaults *clsql-uffi-library-dir*)))))
 
 (defmethod perform ((o load-op) (c clsql-uffi-source-file))
   nil) ;;; library will be loaded by a loader file
     (unless (zerop (run-shell-command
                    #-freebsd "cd ~A; make"
                    #+freebsd "cd ~A; gmake"
-                   (namestring (make-pathname :name nil
-                                              :type nil
-                                              :directory *library-file-dir*))))
+                   (namestring *clsql-uffi-library-dir*)))
       (error 'operation-error :component c :operation o))))
 
 (defmethod operation-done-p ((o compile-op) (c clsql-uffi-source-file))
-  (or (and (probe-file #p"/usr/lib/clsql_uffi.so") t)
+  (or (and (probe-file #p"/usr/lib/clsql/clsql_uffi.so") t)
       (let ((lib (make-pathname :defaults (component-pathname c)
-                               :type (uffi:default-foreign-library-type))))
+                               :type (funcall (intern (symbol-name '#:default-foreign-library-type)
+                                                       (find-package '#:uffi))))))
        (and (probe-file lib) (probe-file (component-pathname c))
             (> (file-write-date lib) (file-write-date (component-pathname c)))))))
   
@@ -90,6 +85,6 @@
   ((:module :uffi
            :components
            ((:file "clsql-uffi-package")
-            (:clsql-uffi-source-file "uffi" :depends-on ("clsql-uffi-package"))
-            (:file "clsql-uffi-loader" :depends-on ("clsql-uffi-package" "uffi"))
+            (:clsql-uffi-source-file "clsql_uffi" :depends-on ("clsql-uffi-package"))
+            (:file "clsql-uffi-loader" :depends-on ("clsql-uffi-package" "clsql_uffi"))
             (:file "clsql-uffi" :depends-on ("clsql-uffi-loader"))))))