X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=uffi-tests.asd;fp=uffi-tests.asd;h=6f2c4bfc7c129149caaaf776c756afc6f6d583cb;hb=7c6a7667f14741d85625f4091e931f1d5ed42159;hp=4b8417b6df6900064b4980fa1bc0acd178eaa911;hpb=9b65ff8b72e258dc50b3acb41328bd31f0d68880;p=uffi.git diff --git a/uffi-tests.asd b/uffi-tests.asd index 4b8417b..6f2c4bf 100644 --- a/uffi-tests.asd +++ b/uffi-tests.asd @@ -14,12 +14,51 @@ (:use #:asdf #:cl)) (in-package #:uffi-tests-system) +(defvar *asd-file-dir* (pathname-directory *load-truename*)) + +(defclass uffi-test-source-file (c-source-file) + ()) + +(defmethod output-files ((o compile-op) (c uffi-test-source-file)) + (let ((searched (or + (probe-file #p"/usr/lib/uffi/uffi-c-test.so") + (probe-file (make-pathname + :directory *asd-file-dir* + :name "uffi-c-test" + :type "so"))))) + (if searched + (list searched) + (list (merge-pathnames + (make-pathname :name (component-name c) + :type "so" + :directory '(:relative "tests")) + (make-pathname :directory *asd-file-dir*)))))) + +(defmethod perform ((o load-op) (c uffi-test-source-file)) + (dolist (f (asdf::input-files o c)) + (funcall (intern (symbol-name '#:load-foreign-library) + (symbol-name '#:uffi)) + f :module "uffi_tests"))) + +(defmethod perform ((o compile-op) (c uffi-test-source-file)) + (unless (zerop (run-shell-command "cd ~A; make" + (namestring (merge-pathnames + (make-pathname + :name nil + :type nil + :directory '(:relative "tests")) + (make-pathname + :directory *asd-file-dir*))))) + (error 'operation-error :component c :operation o))) + + (defsystem uffi-tests :depends-on (:uffi) :components ((:module tests :components ((:file "rt") + (:uffi-test-source-file "uffi-c-test") (:file "package" :depends-on ("rt")) (:file "strtol" :depends-on ("package")) (:file "atoifl" :depends-on ("package")) @@ -30,7 +69,7 @@ (:file "structs" :depends-on ("package")) (:file "pointers" :depends-on ("package")) (:file "time" :depends-on ("package")) - (:file "foreign-loader" :depends-on ("package")) + (:file "foreign-loader" :depends-on ("package" "uffi-c-test")) (:file "uffi-c-test-lib" :depends-on ("foreign-loader")) (:file "compress" :depends-on ("foreign-loader")) (:file "casts" :depends-on ("foreign-loader"))