Subclassed asdf:component to compile the swig .i file before creating the fasl.
[cl-sane.git] / sane.asd
blob61c5d4f6f4094f8a8acc5b28529c4922d7d4aab6
1 ;;; -*- Mode: asdf -*-
3 (defpackage :sane-asdf
4   (:use :cl :asdf))
5 (in-package :sane-asdf)
7 (defclass swig-generated-source (cl-source-file)
8   ())
10 (defmethod perform :before ((operation compile-op) (s swig-generated-source))
11   (let ((asdf::*verbose-out* *standard-output*))
12     (run-shell-command "swig -cffi ~A.i"
13                        (merge-pathnames (asdf::component-parent-pathname s)
14                                         (component-name s)))))
16 (defsystem sane
17   :author "Rupert Swarbrick <rswarbrick@gmail.com>"
18   :licence "GPLv3"
19   :description "Lispy library bindings for sane."
20   :components ((:module "package" :components ((:file "package")))
22                (:module "swig"
23                         :components ((:swig-generated-source "sane-lowlevel"))
24                         :depends-on ("package"))
26                (:module "lowlevel"
27                         :components ((:file "lowlevel"))
28                         :depends-on ("package"))
30                (:module "sane"
31                         
32                         :components
33                         ((:file "devices")
34                          (:file "library")
35                          (:file "options" :depends-on ("devices"))
36                          (:file "parameters" :depends-on ("devices"))
37                          (:file "read" :depends-on ("devices"))
38                          (:file "debug" :depends-on ("devices")))
39                         
40                         :depends-on ("package" "swig" "lowlevel")))
42   :depends-on (:iterate :cffi :trivial-gray-streams))