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