# This Makefile compiles the CBLAS routines
#
dlvl = ../.
include $(dlvl)/Makefile.in

#
# Erase all object and archive files
#
clean:
	rm -f *.o a.out core 

# Error handling routines for level 2 & 3

errhand = cblas_globals.o cblas_xerbla.o xerbla.o

# Object files of all routines
alev = $(alev1) $(alev2) $(alev3) $(errhand) 
#
#
# CBLAS routines
#
# Level 1
#
# 

#
# All object files for single real precision
#
slev1 = cblas_srotg.o cblas_srotmg.o cblas_srot.o cblas_srotm.o  \
         cblas_sswap.o cblas_sscal.o  cblas_scopy.o cblas_saxpy.o \
         cblas_sdot.o  cblas_sdsdot.o cblas_snrm2.o cblas_sasum.o \
         cblas_isamax.o   sdotsub.o   sdsdotsub.o snrm2sub.o sasumsub.o \
         isamaxsub.o 
#
# All object files for double real precision
#
dlev1 = cblas_drotg.o cblas_drotmg.o cblas_drot.o cblas_drotm.o  \
         cblas_dswap.o cblas_dscal.o  cblas_dcopy.o cblas_daxpy.o \
         cblas_ddot.o  cblas_dsdot.o cblas_dnrm2.o cblas_dasum.o  \
         cblas_idamax.o   ddotsub.o   dsdotsub.o       dnrm2sub.o \
         dasumsub.o idamaxsub.o

#
# All object files for single complex precision
#
clev1 = cblas_cswap.o cblas_cscal.o cblas_csscal.o cblas_ccopy.o \
         cblas_caxpy.o cblas_cdotu_sub.o cblas_cdotc_sub.o \
         cblas_icamax.o cdotcsub.o cdotusub.o icamaxsub.o 

#
# All object files for double complex precision
#
zlev1 = cblas_zswap.o cblas_zscal.o cblas_zdscal.o cblas_zcopy.o \
         cblas_zaxpy.o cblas_zdotu_sub.o cblas_zdotc_sub.o cblas_dznrm2.o \
         cblas_dzasum.o cblas_izamax.o zdotcsub.o zdotusub.o      \
         dzasumsub.o  dznrm2sub.o  izamaxsub.o 

#
# Common files for single / complex precision
#
sclev1 = cblas_scasum.o scasumsub.o cblas_scnrm2.o scnrm2sub.o

#
# All object files
#
alev1 = $(slev1) $(dlev1) $(clev1) $(zlev1) $(sclev1)


#
# Make an archive file
#

# Single real precision
slib1: $(slev1) $(sclev1)
	$(ARCH) $(ARCHFLAGS) $(CBLIB) $(slev1) $(sclev1)
	$(RANLIB) $(CBLIB)

# Double real precision
dlib1: $(dlev1) 
	$(ARCH) $(ARCHFLAGS) $(CBLIB) $(dlev1)
	$(RANLIB) $(CBLIB)

# Single complex precision
clib1: $(clev1) $(sclev1)
	$(ARCH) $(ARCHFLAGS) $(CBLIB) $(clev1) $(sclev1)
	$(RANLIB) $(CBLIB)

# Double complex precision
zlib1: $(zlev1)
	$(ARCH) $(ARCHFLAGS) $(CBLIB) $(zlev1)
	$(RANLIB) $(CBLIB)

# All precisions
all1:  $(alev1)
	$(ARCH) $(ARCHFLAGS)  $(CBLIB) $(alev1)
	$(RANLIB) $(CBLIB)

#
#
# CBLAS routines
#
# Level 2
#
# 

#
# All object files for single real precision
#
slev2 = cblas_sgemv.o cblas_sgbmv.o cblas_sger.o cblas_ssbmv.o  cblas_sspmv.o \
        cblas_sspr.o  cblas_sspr2.o cblas_ssymv.o cblas_ssyr.o  cblas_ssyr2.o \
        cblas_stbmv.o cblas_stbsv.o cblas_stpmv.o cblas_stpsv.o  cblas_strmv.o \
        cblas_strsv.o  
 
#
# All object files for double real precision
#
dlev2 = cblas_dgemv.o cblas_dgbmv.o cblas_dger.o cblas_dsbmv.o  cblas_dspmv.o \
        cblas_dspr.o  cblas_dspr2.o cblas_dsymv.o cblas_dsyr.o  cblas_dsyr2.o \
        cblas_dtbmv.o cblas_dtbsv.o cblas_dtpmv.o cblas_dtpsv.o  cblas_dtrmv.o \
        cblas_dtrsv.o  

#
# All object files for single complex precision
#
clev2 = cblas_cgemv.o cblas_cgbmv.o cblas_chemv.o cblas_chbmv.o cblas_chpmv.o \
        cblas_ctrmv.o cblas_ctbmv.o cblas_ctpmv.o cblas_ctrsv.o cblas_ctbsv.o \
        cblas_ctpsv.o cblas_cgeru.o cblas_cgerc.o cblas_cher.o  cblas_cher2.o \
        cblas_chpr.o  cblas_chpr2.o 

#
# All object files for double complex precision
#
zlev2 = cblas_zgemv.o cblas_zgbmv.o cblas_zhemv.o cblas_zhbmv.o cblas_zhpmv.o \
        cblas_ztrmv.o cblas_ztbmv.o cblas_ztpmv.o cblas_ztrsv.o cblas_ztbsv.o \
        cblas_ztpsv.o cblas_zgeru.o cblas_zgerc.o cblas_zher.o  cblas_zher2.o \
        cblas_zhpr.o  cblas_zhpr2.o 
#
# All object files
#
alev2 = $(slev2) $(dlev2) $(clev2) $(zlev2)

#
# Make an archive file
#

# Single real precision
slib2: $(slev2) $(errhand)
	$(ARCH) $(ARCHFLAGS) $(CBLIB) $(slev2) $(errhand)
	$(RANLIB) $(CBLIB)

# Double real  precision
dlib2: $(dlev2) $(errhand)
	$(ARCH) $(ARCHFLAGS) $(CBLIB) $(dlev2) $(errhand)
	$(RANLIB) $(CBLIB)

# Single complex precision
clib2: $(clev2) $(errhand)
	$(ARCH) $(ARCHFLAGS) $(CBLIB) $(clev2) $(errhand)
	$(RANLIB) $(CBLIB)

# Double complex precision
zlib2: $(zlev2) $(errhand)
	$(ARCH) $(ARCHFLAGS) $(CBLIB) $(zlev2) $(errhand)
	$(RANLIB) $(CBLIB)

# All precisions
all2:  $(alev2) $(errhand)
	$(ARCH) $(ARCHFLAGS)  $(CBLIB) $(alev2) $(errhand)
	$(RANLIB) $(CBLIB)
#
#
# CBLAS routines
#
# Level 3
#
# 

#
# All object files for single real precision
#
slev3 = cblas_sgemm.o cblas_ssymm.o cblas_ssyrk.o cblas_ssyr2k.o cblas_strmm.o\
        cblas_strsm.o
 
#
# All object files for double real precision
#
dlev3 = cblas_dgemm.o cblas_dsymm.o cblas_dsyrk.o cblas_dsyr2k.o cblas_dtrmm.o\
        cblas_dtrsm.o  

#
# All object files for single complex precision
#
clev3 = cblas_cgemm.o cblas_csymm.o cblas_chemm.o cblas_cherk.o\
        cblas_cher2k.o cblas_ctrmm.o cblas_ctrsm.o  cblas_csyrk.o\
        cblas_csyr2k.o
#
# All object files for double complex precision
#
zlev3 = cblas_zgemm.o cblas_zsymm.o cblas_zhemm.o cblas_zherk.o\
        cblas_zher2k.o cblas_ztrmm.o cblas_ztrsm.o  cblas_zsyrk.o\
        cblas_zsyr2k.o
#
# All object files
#
alev3 = $(slev3) $(dlev3) $(clev3) $(zlev3)

#
# Make an archive file
#

# Single real precision
slib3: $(slev3) $(errhand)
	$(ARCH) $(ARCHFLAGS) $(CBLIB) $(slev3) $(errhand)
	$(RANLIB) $(CBLIB)

# Double real precision
dlib3: $(dlev3) $(errhand)
	$(ARCH) $(ARCHFLAGS) $(CBLIB) $(dlev3) $(errhand)
	$(RANLIB) $(CBLIB)

# Single complex precision
clib3: $(clev3) $(errhand)
	$(ARCH) $(ARCHFLAGS) $(CBLIB) $(clev3) $(errhand)
	$(RANLIB) $(CBLIB)

# Single complex precision
zlib3: $(zlev3) $(errhand)
	$(ARCH) $(ARCHFLAGS) $(CBLIB) $(zlev3) $(errhand)
	$(RANLIB) $(CBLIB)

# All precisions
all3:  $(alev3) $(errhand)
	$(ARCH) $(ARCHFLAGS) $(CBLIB) $(alev3) 
	$(RANLIB) $(CBLIB)

# All levels and precisions
all: $(alev)  
	$(ARCH) $(ARCHFLAGS)  $(CBLIB) $(alev) 
	$(RANLIB) $(CBLIB)


.SUFFIXES: .o .c .f

.c.o:
	$(CC) $(CFLAGS) -I../include -c $*.c
.f.o:
	$(FC) $(FFLAGS) -c $*.f
