1# This Makefile compiles the CBLAS routines
2
3TOPSRCDIR = ../..
4include $(TOPSRCDIR)/make.inc
5
6.SUFFIXES: .c .o
7.c.o:
8	$(CC) $(CFLAGS) -I../include -c -o $@ $<
9
10.PHONY: all
11all: $(CBLASLIB)
12
13# Error handling routines for level 2 & 3
14errhand = cblas_globals.o cblas_xerbla.o xerbla.o
15
16#
17#
18# CBLAS routines
19#
20# Level 1
21#
22#
23
24# Files for level 1 single precision real
25slev1 = cblas_srotg.o cblas_srotmg.o cblas_srot.o  cblas_srotm.o \
26        cblas_sswap.o cblas_sscal.o  cblas_scopy.o cblas_saxpy.o \
27        cblas_sdot.o  cblas_sdsdot.o cblas_snrm2.o cblas_sasum.o \
28        cblas_isamax.o sdotsub.o sdsdotsub.o snrm2sub.o sasumsub.o \
29        isamaxsub.o
30
31# Files for level 1 double precision real
32dlev1 = cblas_drotg.o cblas_drotmg.o cblas_drot.o  cblas_drotm.o \
33        cblas_dswap.o cblas_dscal.o  cblas_dcopy.o cblas_daxpy.o \
34        cblas_ddot.o  cblas_dsdot.o  cblas_dnrm2.o cblas_dasum.o \
35        cblas_idamax.o ddotsub.o dsdotsub.o dnrm2sub.o \
36        dasumsub.o idamaxsub.o
37
38# Files for level 1 single precision complex
39clev1 = cblas_cswap.o cblas_cscal.o cblas_csscal.o cblas_ccopy.o \
40        cblas_caxpy.o cblas_cdotu_sub.o cblas_cdotc_sub.o \
41        cblas_icamax.o cdotcsub.o cdotusub.o icamaxsub.o
42
43# Files for level 1 double precision complex
44zlev1 = cblas_zswap.o cblas_zscal.o cblas_zdscal.o cblas_zcopy.o \
45        cblas_zaxpy.o cblas_zdotu_sub.o cblas_zdotc_sub.o cblas_dznrm2.o \
46        cblas_dzasum.o cblas_izamax.o zdotcsub.o zdotusub.o \
47        dzasumsub.o dznrm2sub.o izamaxsub.o
48
49# Common files for level 1 single precision
50sclev1 = cblas_scasum.o scasumsub.o cblas_scnrm2.o scnrm2sub.o
51
52.PHONY: slib1 dlib1 clib1 zlib1
53# Single precision real
54slib1: $(slev1) $(sclev1)
55	$(AR) $(ARFLAGS) $(CBLASLIB) $^
56	$(RANLIB) $(CBLASLIB)
57
58# Double precision real
59dlib1: $(dlev1)
60	$(AR) $(ARFLAGS) $(CBLASLIB) $^
61	$(RANLIB) $(CBLASLIB)
62
63# Single precision complex
64clib1: $(clev1) $(sclev1)
65	$(AR) $(ARFLAGS) $(CBLASLIB) $^
66	$(RANLIB) $(CBLASLIB)
67
68# Double precision complex
69zlib1: $(zlev1)
70	$(AR) $(ARFLAGS) $(CBLASLIB) $^
71	$(RANLIB) $(CBLASLIB)
72
73#
74#
75# CBLAS routines
76#
77# Level 2
78#
79#
80
81# Files for level 2 single precision real
82slev2 = cblas_sgemv.o cblas_sgbmv.o cblas_sger.o  cblas_ssbmv.o cblas_sspmv.o \
83        cblas_sspr.o  cblas_sspr2.o cblas_ssymv.o cblas_ssyr.o  cblas_ssyr2.o \
84        cblas_stbmv.o cblas_stbsv.o cblas_stpmv.o cblas_stpsv.o cblas_strmv.o \
85        cblas_strsv.o
86
87# Files for level 2 double precision real
88dlev2 = cblas_dgemv.o cblas_dgbmv.o cblas_dger.o  cblas_dsbmv.o cblas_dspmv.o \
89        cblas_dspr.o  cblas_dspr2.o cblas_dsymv.o cblas_dsyr.o  cblas_dsyr2.o \
90        cblas_dtbmv.o cblas_dtbsv.o cblas_dtpmv.o cblas_dtpsv.o cblas_dtrmv.o \
91        cblas_dtrsv.o
92
93# Files for level 2 single precision complex
94clev2 = cblas_cgemv.o cblas_cgbmv.o cblas_chemv.o cblas_chbmv.o cblas_chpmv.o \
95        cblas_ctrmv.o cblas_ctbmv.o cblas_ctpmv.o cblas_ctrsv.o cblas_ctbsv.o \
96        cblas_ctpsv.o cblas_cgeru.o cblas_cgerc.o cblas_cher.o  cblas_cher2.o \
97        cblas_chpr.o  cblas_chpr2.o
98
99# Files for level 2 double precision complex
100zlev2 = cblas_zgemv.o cblas_zgbmv.o cblas_zhemv.o cblas_zhbmv.o cblas_zhpmv.o \
101        cblas_ztrmv.o cblas_ztbmv.o cblas_ztpmv.o cblas_ztrsv.o cblas_ztbsv.o \
102        cblas_ztpsv.o cblas_zgeru.o cblas_zgerc.o cblas_zher.o  cblas_zher2.o \
103        cblas_zhpr.o  cblas_zhpr2.o
104
105.PHONY: slib2 dlib2 clib2 zlib2
106# Single precision real
107slib2: $(slev2) $(errhand)
108	$(AR) $(ARFLAGS) $(CBLASLIB) $^
109	$(RANLIB) $(CBLASLIB)
110
111# Double precision real
112dlib2: $(dlev2) $(errhand)
113	$(AR) $(ARFLAGS) $(CBLASLIB) $^
114	$(RANLIB) $(CBLASLIB)
115
116# Single precision complex
117clib2: $(clev2) $(errhand)
118	$(AR) $(ARFLAGS) $(CBLASLIB) $^
119	$(RANLIB) $(CBLASLIB)
120
121# Double precision complex
122zlib2: $(zlev2) $(errhand)
123	$(AR) $(ARFLAGS) $(CBLASLIB) $^
124	$(RANLIB) $(CBLASLIB)
125
126#
127#
128# CBLAS routines
129#
130# Level 3
131#
132#
133
134# Files for level 3 single precision real
135slev3 = cblas_sgemm.o cblas_ssymm.o cblas_ssyrk.o cblas_ssyr2k.o cblas_strmm.o \
136        cblas_strsm.o
137
138# Files for level 3 double precision real
139dlev3 = cblas_dgemm.o cblas_dsymm.o cblas_dsyrk.o cblas_dsyr2k.o cblas_dtrmm.o \
140        cblas_dtrsm.o
141
142# Files for level 3 single precision complex
143clev3 = cblas_cgemm.o cblas_csymm.o cblas_chemm.o cblas_cherk.o \
144        cblas_cher2k.o cblas_ctrmm.o cblas_ctrsm.o cblas_csyrk.o \
145        cblas_csyr2k.o
146
147# Files for level 3 double precision complex
148zlev3 = cblas_zgemm.o cblas_zsymm.o cblas_zhemm.o cblas_zherk.o \
149        cblas_zher2k.o cblas_ztrmm.o cblas_ztrsm.o cblas_zsyrk.o \
150        cblas_zsyr2k.o
151
152.PHONY: slib3 dlib3 clib3 zlib3
153# Single precision real
154slib3: $(slev3) $(errhand)
155	$(AR) $(ARFLAGS) $(CBLASLIB) $^
156	$(RANLIB) $(CBLASLIB)
157
158# Double precision real
159dlib3: $(dlev3) $(errhand)
160	$(AR) $(ARFLAGS) $(CBLASLIB) $^
161	$(RANLIB) $(CBLASLIB)
162
163# Single precision complex
164clib3: $(clev3) $(errhand)
165	$(AR) $(ARFLAGS) $(CBLASLIB) $^
166	$(RANLIB) $(CBLASLIB)
167
168# Double precision complex
169zlib3: $(zlev3) $(errhand)
170	$(AR) $(ARFLAGS) $(CBLASLIB) $^
171	$(RANLIB) $(CBLASLIB)
172
173
174alev1 = $(slev1) $(dlev1) $(clev1) $(zlev1) $(sclev1)
175alev2 = $(slev2) $(dlev2) $(clev2) $(zlev2)
176alev3 = $(slev3) $(dlev3) $(clev3) $(zlev3)
177
178.PHONY: all1 all2 all3
179# All level 1
180all1: $(alev1)
181	$(AR) $(ARFLAGS) $(CBLASLIB) $^
182	$(RANLIB) $(CBLASLIB)
183
184# All level 2
185all2: $(alev2) $(errhand)
186	$(AR) $(ARFLAGS) $(CBLASLIB) $^
187	$(RANLIB) $(CBLASLIB)
188
189# All level 3
190all3: $(alev3) $(errhand)
191	$(AR) $(ARFLAGS) $(CBLASLIB) $^
192	$(RANLIB) $(CBLASLIB)
193
194# All levels and precisions
195$(CBLASLIB): $(alev1) $(alev2) $(alev3) $(errhand)
196	$(AR) $(ARFLAGS) $@ $^
197	$(RANLIB) $@
198
199FRC:
200	@FRC=$(FRC)
201
202.PHONY: clean cleanobj cleanlib
203clean: cleanobj cleanlib
204cleanobj:
205	rm -f *.o
206cleanlib:
207	rm -f $(CBLASLIB)
208