Index: osicat.asd
===================================================================
RCS file: /project/osicat/cvsroot/src/osicat.asd,v
retrieving revision 1.11
diff -u -r1.11 osicat.asd
--- osicat.asd	25 Sep 2005 18:24:35 -0000	1.11
+++ osicat.asd	4 Nov 2006 10:42:15 -0000
@@ -19,36 +19,14 @@
 ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
+(eval-when (:compile-toplevel :load-toplevel :execute)
+  (asdf:oos 'asdf:load-op :asdf-ecs-uffi))
+
 (defpackage :osicat-system
-  (:use :cl :asdf))
+  (:use :cl :asdf :asdf-ecs/uffi))
 
 (in-package :osicat-system)
 
-;;;; C-SOURCE FILE HANDLING
-
-(defvar *gcc* "/usr/bin/gcc")
-(defvar *gcc-options* '(#-darwin "-shared"
-			#+darwin "-dynamiclib"
-			"-fPIC"))
-
-(defmethod output-files ((o compile-op) (c c-source-file))
-  (list (make-pathname :name (component-name c)
-		       :type "so"
-		       :defaults (component-pathname c))))
-
-(defmethod perform ((o load-op) (c c-source-file))
-  (let ((loader (intern "LOAD-FOREIGN-LIBRARY" :uffi)))
-    (dolist (file (asdf::input-files o c))
-      (funcall loader file :module "osicat" :force-load t))))
-
-(defmethod perform ((o compile-op) (c c-source-file))
-  (unless (zerop (run-shell-command "~A ~A ~{~A ~}-o ~A"
-				    *gcc*
-				    (namestring (component-pathname c))
-				    *gcc-options*
-				    (namestring (car (output-files o c)))))
-    (error 'operation-error :component c :operation o)))
-
 ;;;; GROVELING
 
 (defclass grovel-file (cl-source-file) ())
@@ -72,7 +50,9 @@
     :version "0.5.0"
     :depends-on (:uffi)
     :components
-    ((:c-source-file "osicat-glue")
+    ((:uffi-source-file "osicat-glue"
+                        :compile-options ((:gcc . ("-fPIC")))
+                        :load-into "osicat")
      (:file "packages")
      (:grovel-file "grovel-constants" :depends-on ("packages"))
      (:file "early-util" :depends-on ("packages"))

