r8850: remove usql files
[clsql.git] / clsql-mysql.asd
index ec4e5efea6c9de6c7c2004dac2989c4817adb585..9cb9739f6cf69c5610791f3491673d28fa88e75a 100644 (file)
 (defpackage #:clsql-mysql-system (:use #:asdf #:cl))
 (in-package #:clsql-mysql-system)
 
+(eval-when (:compile-toplevel :load-toplevel :execute)
+  #+common-lisp-controller (require 'uffi)
+  #-common-lisp-controller (asdf:operate 'asdf:load-op 'uffi))
+
 (defvar *library-file-dir* (append (pathname-directory *load-truename*)
                                   (list "db-mysql")))
 
   ())
 
 (defmethod output-files ((o compile-op) (c clsql-mysql-source-file))
-  (let ((found (some #'(lambda (dir)
+  (let* ((library-file-type
+         (funcall (intern (symbol-name'#:default-foreign-library-type)
+                          (symbol-name '#:uffi))))
+         (found (some #'(lambda (dir)
                            (probe-file (make-pathname :directory dir
                                                       :name (component-name c)
-                                                      :type "so")))
+                                                      :type library-file-type)))
                        '((:absolute "usr" "lib" "clsql"))))) 
     (list (if found
              found
              (make-pathname :name (component-name c)
-                            :type "so"
+                            :type library-file-type
                             :directory *library-file-dir*)))))
 
 (defmethod perform ((o load-op) (c clsql-mysql-source-file))
   nil) ;;; library will be loaded by a loader file
 
+(defmethod operation-done-p ((o load-op) (c clsql-mysql-source-file))
+  nil) 
+
 (defmethod perform ((o compile-op) (c clsql-mysql-source-file))
   (unless (zerop (run-shell-command
                  "cd ~A; make"
                                             :directory *library-file-dir*))))
     (error 'operation-error :component c :operation o)))
 
+(defmethod operation-done-p ((o compile-op) (c clsql-mysql-source-file))
+  (let ((lib (make-pathname :defaults (component-pathname c)
+                           :type (uffi:default-foreign-library-type))))
+    (and (probe-file lib)
+        (> (file-write-date lib) (file-write-date (component-pathname c))))))
+
 ;;; System definition
 
 #+(or allegro lispworks cmu sbcl openmcl mcl scl)
   :description "Common Lisp SQL MySQL Driver"
   :long-description "cl-sql-mysql package provides a database driver to the MySQL database system."
 
+  :depends-on (uffi clsql-base clsql-uffi)
   :components
   ((:module :db-mysql
            :components
            ((:clsql-mysql-source-file "mysql")
             (:file "mysql-package")
             (:file "mysql-loader" :depends-on ("mysql-package" "mysql"))
-            (:file "mysql-api" :depends-on ("mysql-loader"))
-            (:file "mysql-sql" :depends-on ("mysql-api"))
-            (:file "mysql-usql" :depends-on ("mysql-sql")))))
-  :depends-on (:uffi :clsql-base :clsql-uffi))
+            (:file "mysql-client-info" :depends-on ("mysql-loader"))
+            (:file "mysql-api" :depends-on ("mysql-client-info"))
+            (:file "mysql-sql" :depends-on ("mysql-api"))))))