1;;; -*- Mode: lisp -*-
2;;;
3;;; This is a simple defsystem for converting some BLAS Fortran
4;;; routines to Lisp and compiling the result.  These came with
5;;; HOMPACK and are used in HOMPACK, among others.
6;;;
7;;; $Id: blas-lisp.system,v 1.2 2007-04-07 19:08:50 dtc Exp $
8;;; $Log: blas-lisp.system,v $
9;;; Revision 1.2  2007-04-07 19:08:50  dtc
10;;; o Fix some symbol case issues.  This enables the Lapack code to run in a
11;;;   lowercase Common Lisp variant.
12;;;
13;;; Revision 1.1  2007/01/05 18:17:38  rtoy
14;;; This large checkin imports large parts of BLAS and LAPACK for use with
15;;; Maxima.  The Fortran parts are in good shape.  The interface to maxima
16;;; works but still needs lots of work.
17;;;
18;;; Revision 1.3  2006/11/21 21:36:34  rtoy
19;;; Oops.  Array declarations should be relaxed.
20;;;
21;;; Revision 1.2  2006/11/21 18:27:25  rtoy
22;;; o Add BLAS-HOMPACK system for supporting HOMPACK with the minial BLAS
23;;;   routines it needs.
24;;; o Add BLAS system to load all of BLAS.
25;;;
26;;; Revision 1.1  2003/11/14 19:08:42  rtoy
27;;; Initial revision.
28;;;
29
30(mk:define-language :f2cl-lisp
31    :compiler #'f2cl:f2cl
32    :loader #'identity
33    :source-extension "f"
34    :binary-extension "lisp")
35
36(mk:defsystem blas-package
37  :source-pathname (maxima::maxima-load-pathname-directory)
38  :components
39  ((:file "blas-package")))
40
41(mk:defsystem blas-lisp
42  :source-pathname (maxima::maxima-load-pathname-directory)
43  :source-extension "f"
44  :language :f2cl-lisp
45  :depends-on ("blas-package")
46  :components
47  ((:module fortran
48	    :binary-pathname "."
49	    :compiler-options (:package :blas
50			       :float-format double-float)
51	    :compile-only t
52	    :components
53	    (
54	     (:file "daxpy")
55	     (:file "dcopy")
56	     (:file "ddot")
57	     (:file "dnrm2")
58	     (:file "dscal")
59	     (:file "idamax")
60
61	     (:file "dasum")
62	     (:file "dcabs1")
63	     (:file "dgbmv"
64		    :depends-on ("lsame" "xerbla"))
65	     (:file "dgemm"
66		    :depends-on ("lsame" "xerbla"))
67	     (:file "dgemv"
68		    :depends-on ("lsame" "xerbla"))
69	     (:file "dger"
70		    :depends-on ("xerbla"))
71	     (:file "drot")
72	     (:file "drotg")
73	     (:file "dsbmv"
74		    :depends-on ("lsame" "xerbla"))
75	     (:file "dspmv"
76		    :depends-on ("lsame" "xerbla"))
77	     (:file "dspr"
78		    :depends-on ("lsame" "xerbla"))
79	     (:file "dspr2"
80		    :depends-on ("lsame" "xerbla"))
81	     (:file "dswap")
82	     (:file "dsymm"
83		    :depends-on ("lsame" "xerbla"))
84	     (:file "dsymv"
85		    :depends-on ("lsame" "xerbla"))
86	     (:file "dsyr"
87		    :depends-on ("lsame" "xerbla"))
88	     (:file "dsyr2"
89		    :depends-on ("lsame" "xerbla"))
90	     (:file "dsyr2k"
91		    :depends-on ("lsame" "xerbla"))
92	     (:file "dsyrk"
93		    :depends-on ("lsame" "xerbla"))
94	     (:file "dtbmv"
95		    :depends-on ("lsame" "xerbla"))
96	     (:file "dtbsv"
97		    :depends-on ("lsame" "xerbla"))
98	     (:file "dtpmv"
99		    :depends-on ("lsame" "xerbla"))
100	     (:file "dtpsv"
101		    :depends-on ("lsame" "xerbla"))
102	     (:file "dtrmm"
103		    :depends-on ("lsame" "xerbla"))
104	     (:file "dtrmv"
105		    :depends-on ("lsame" "xerbla"))
106	     (:file "dtrsm"
107		    :depends-on ("lsame" "xerbla"))
108	     (:file "dtrsv"
109		    :depends-on ("lsame" "xerbla"))
110	     (:file "dzasum"
111		    :depends-on ("dcabs1"))
112	     (:file "dznrm2")
113	     (:file "icamax")
114	     (:file "isamax")
115	     (:file "izamax"
116		    :depends-on ("dcabs1"))
117	     (:file "lsame")
118	     (:file "xerbla")
119
120	     ;; Complex versions.
121	     (:file "zaxpy"
122		    :depends-on ("dcabs1"))
123	     (:file "zcopy")
124	     (:file "zdotc")
125	     (:file "zdotu")
126	     (:file "zdscal")
127	     (:file "zgbmv")
128	     (:file "zgemm")
129	     (:file "zgemv")
130	     (:file "zgerc")
131	     (:file "zgeru")
132	     (:file "zhbmv")
133	     (:file "zhemm")
134	     (:file "zhemv")
135	     (:file "zher")
136	     (:file "zher2")
137	     (:file "zher2k")
138	     (:file "zherk")
139	     (:file "zhpmv")
140	     (:file "zhpr")
141	     (:file "zhpr2")
142	     (:file "zrotg")
143	     (:file "zscal")
144	     (:file "zswap")
145	     (:file "zsymm")
146	     (:file "zsyr2k")
147	     (:file "zsyrk")
148	     (:file "ztbmv")
149	     (:file "ztbsv")
150	     (:file "ztpmv")
151	     (:file "ztpsv")
152	     (:file "ztrmm")
153	     (:file "ztrmv")
154	     (:file "ztrsm")
155	     (:file "ztrsv")
156	     ))))
157