diff options
Diffstat (limited to 'Makefile.blas')
-rw-r--r-- | Makefile.blas | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/Makefile.blas b/Makefile.blas new file mode 100644 index 0000000..5cfb092 --- /dev/null +++ b/Makefile.blas @@ -0,0 +1,84 @@ +OBJCOPY = objcopy + +ifndef SYMBOLSUFFIX +SYMBOLSUFFIX = +endif + +clean: + rm -f *.o libblas.a libblas.so* + +SBLAS1= isamax.o sasum.o saxpy.o scopy.o sdot.o snrm2.o \ + srot.o srotg.o sscal.o sswap.o sdsdot.o srotmg.o srotm.o + +CBLAS1= scabs1.o scasum.o scnrm2.o icamax.o caxpy.o ccopy.o \ + cdotc.o cdotu.o csscal.o crotg.o cscal.o cswap.o csrot.o + +DBLAS1= idamax.o dasum.o daxpy.o dcopy.o ddot.o dnrm2.o \ + drot.o drotg.o dscal.o dsdot.o dswap.o drotmg.o drotm.o + +ZBLAS1= dcabs1.o dzasum.o dznrm2.o izamax.o zaxpy.o zcopy.o \ + zdotc.o zdotu.o zdscal.o zrotg.o zscal.o zswap.o zdrot.o + +CB1AUX= isamax.o sasum.o saxpy.o scopy.o snrm2.o sscal.o + +ZB1AUX= idamax.o dasum.o daxpy.o dcopy.o dnrm2.o dscal.o + +ALLBLAS=lsame.o xerbla.o xerbla_array.o + +SBLAS2= sgemv.o sgbmv.o ssymv.o ssbmv.o sspmv.o \ + strmv.o stbmv.o stpmv.o strsv.o stbsv.o stpsv.o \ + sger.o ssyr.o sspr.o ssyr2.o sspr2.o + +CBLAS2= cgemv.o cgbmv.o chemv.o chbmv.o chpmv.o \ + ctrmv.o ctbmv.o ctpmv.o ctrsv.o ctbsv.o ctpsv.o \ + cgerc.o cgeru.o cher.o chpr.o cher2.o chpr2.o + +DBLAS2= dgemv.o dgbmv.o dsymv.o dsbmv.o dspmv.o \ + dtrmv.o dtbmv.o dtpmv.o dtrsv.o dtbsv.o dtpsv.o \ + dger.o dsyr.o dspr.o dsyr2.o dspr2.o + +ZBLAS2= zgemv.o zgbmv.o zhemv.o zhbmv.o zhpmv.o \ + ztrmv.o ztbmv.o ztpmv.o ztrsv.o ztbsv.o ztpsv.o \ + zgerc.o zgeru.o zher.o zhpr.o zher2.o zhpr2.o \ + +SBLAS3= sgemm.o ssymm.o ssyrk.o ssyr2k.o strmm.o strsm.o + +CBLAS3= cgemm.o csymm.o csyrk.o csyr2k.o ctrmm.o ctrsm.o \ + chemm.o cherk.o cher2k.o + +DBLAS3= dgemm.o dsymm.o dsyrk.o dsyr2k.o dtrmm.o dtrsm.o + +ZBLAS3= zgemm.o zsymm.o zsyrk.o zsyr2k.o ztrmm.o ztrsm.o \ + zhemm.o zherk.o zher2k.o + +OBJS= $(SBLAS1) $(SBLAS2) $(SBLAS3) $(DBLAS1) $(DBLAS2) $(DBLAS3) \ + $(CBLAS1) $(CBLAS2) $(CBLAS3) $(ZBLAS1) $(ZBLAS2) $(ZBLAS3) \ + $(ALLBLAS) + +static: $(OBJS) +ifeq "$(SYMBOLSUFFIX)" "" + ar ruv libblas.a $(OBJS) + ranlib libblas.a +else + ar ruv libblas$(SYMBOLSUFFIX).a $(OBJS) + ranlib libblas$(SYMBOLSUFFIX).a + for i in `nm libblas$(SYMBOLSUFFIX).a |grep " T " | awk '{print $$3}'`; do echo "$$i" "64_$$i"; done > blas-static-prefix.def.dirty + sort -n blas-static-prefix.def.dirty | uniq > blas-static-prefix.def + $(OBJCOPY) --redefine-syms blas-static-prefix.def libblas$(SYMBOLSUFFIX).a libblas$(SYMBOLSUFFIX).a.fixed + rm -rf libblas$(SYMBOLSUFFIX).a + mv libblas$(SYMBOLSUFFIX).a.fixed libblas$(SYMBOLSUFFIX).a +endif + +shared: $(OBJS) +ifeq "$(SYMBOLSUFFIX)" "" + # No renaming needed + cc $(CFLAGS) -shared -Wl,-soname,libblas.so.@SHORTVER@ -o libblas.so.@LONGVER@ $(OBJS) $(LDFLAGS) -lm -lgfortran -lc +else + cc $(CFLAGS) -shared -Wl,-soname,libblas$(SYMBOLSUFFIX).so.@SHORTVER@ -o libblas$(SYMBOLSUFFIX).so.@LONGVER@ $(OBJS) $(LDFLAGS) -lm -lgfortran -lc + # generate a list of all symbols in shared library and rename with SYMBOLSUFFIX + for i in `readelf -Ws libblas$(SYMBOLSUFFIX).so.@LONGVER@ | awk '{print $$8}' | grep -v GLIBC |grep -v GFORTRAN |grep -v "Name" `; do echo "$$i" "64_$$i"; done > blas-prefix.def.dirty + sort -n blas-prefix.def.dirty | uniq > blas-prefix.def + $(OBJCOPY) --redefine-syms blas-prefix.def libblas$(SYMBOLSUFFIX).so.@LONGVER@ libblas$(SYMBOLSUFFIX).so.@LONGVER@.fixed + rm -rf libblas$(SYMBOLSUFFIX).so.@LONGVER@ + mv libblas$(SYMBOLSUFFIX).so.@LONGVER@.fixed libblas$(SYMBOLSUFFIX).so.@LONGVER@ +endif |