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