#
# The Makefile compiles c wrappers and testers for CBLAS.  
#

dlvl = ../.
include $(dlvl)/Makefile.in

# Archive files necessary to compile
LIB = $(CBLIB) $(BLLIB) 

# Object files for single real precision
stestl1o = c_sblas1.o

stestl2o = c_sblas2.o c_s2chke.o auxiliary.o c_xerbla.o

stestl3o = c_sblas3.o c_s3chke.o auxiliary.o c_xerbla.o

# Object files for double real precision
dtestl1o = c_dblas1.o

dtestl2o = c_dblas2.o c_d2chke.o auxiliary.o c_xerbla.o

dtestl3o = c_dblas3.o c_d3chke.o auxiliary.o c_xerbla.o

# Object files for single complex precision
ctestl1o = c_cblas1.o

ctestl2o = c_cblas2.o c_c2chke.o auxiliary.o c_xerbla.o

ctestl3o = c_cblas3.o c_c3chke.o auxiliary.o c_xerbla.o

# Object files for double complex precision
ztestl1o = c_zblas1.o 

ztestl2o = c_zblas2.o c_z2chke.o auxiliary.o c_xerbla.o

ztestl3o = c_zblas3.o c_z3chke.o auxiliary.o c_xerbla.o

all: all1 all2 all3 
all1: stest1 dtest1 ctest1 ztest1 
all2: stest2 dtest2 ctest2 ztest2
all3: stest3 dtest3 ctest3 ztest3

clean:
	rm -f core *.o a.out x*
cleanobj:
	rm -f core *.o a.out 
cleanexe:
	rm -f x* 

stest1: xscblat1
dtest1: xdcblat1
ctest1: xccblat1
ztest1: xzcblat1

stest2: xscblat2
dtest2: xdcblat2
ctest2: xccblat2
ztest2: xzcblat2

stest3: xscblat3
dtest3: xdcblat3
ctest3: xccblat3
ztest3: xzcblat3

#
# Compile each precision
#

# Single real
xscblat1: $(stestl1o) c_sblat1.o
	$(LOADER) $(LOADFLAGS) -o xscblat1 c_sblat1.o $(stestl1o) $(LIB)
xscblat2: $(stestl2o) c_sblat2.o
	$(LOADER) $(LOADFLAGS) -o xscblat2 c_sblat2.o $(stestl2o) $(LIB)
xscblat3: $(stestl3o) c_sblat3.o
	$(LOADER) $(LOADFLAGS) -o xscblat3 c_sblat3.o $(stestl3o) $(LIB)
# Double real
xdcblat1: $(dtestl1o) c_dblat1.o
	$(LOADER) $(LOADFLAGS) -o xdcblat1 c_dblat1.o $(dtestl1o) $(LIB)
xdcblat2: $(dtestl2o) c_dblat2.o
	$(LOADER) $(LOADFLAGS) -o xdcblat2 c_dblat2.o $(dtestl2o) $(LIB)
xdcblat3: $(dtestl3o) c_dblat3.o
	$(LOADER) $(LOADFLAGS) -o xdcblat3 c_dblat3.o $(dtestl3o) $(LIB)
 
# Single complex
xccblat1: $(ctestl1o) c_cblat1.o
	$(LOADER) $(LOADFLAGS) -o xccblat1 c_cblat1.o $(ctestl1o) $(LIB)
xccblat2: $(ctestl2o) c_cblat2.o
	$(LOADER) $(LOADFLAGS) -o xccblat2 c_cblat2.o $(ctestl2o) $(LIB)
xccblat3: $(ctestl3o) c_cblat3.o
	$(LOADER) $(LOADFLAGS) -o xccblat3 c_cblat3.o $(ctestl3o) $(LIB)

# Double complex 
xzcblat1: $(ztestl1o) c_zblat1.o
	$(LOADER) $(LOADFLAGS) -o xzcblat1 c_zblat1.o $(ztestl1o) $(LIB)
xzcblat2: $(ztestl2o) c_zblat2.o
	$(LOADER) $(LOADFLAGS) -o xzcblat2 c_zblat2.o $(ztestl2o) $(LIB)
xzcblat3: $(ztestl3o) c_zblat3.o
	$(LOADER) $(LOADFLAGS) -o xzcblat3 c_zblat3.o $(ztestl3o) $(LIB)
   

# RUN TESTS
run:
	@echo "--> TESTING BLAS 1 - SINGLE PRECISION <--"
	@./xscblat1 > stest1.out
	@echo "--> TESTING BLAS 1 - DOUBLE PRECISION <--"
	@./xdcblat1  > dtest1.out
	@echo "--> TESTING BLAS 1 - COMPLEX PRECISION <--"
	@./xccblat1  > ctest1.out
	@echo "--> TESTING BLAS 1 - DOUBLE COMPLEX PRECISION <--"
	@./xzcblat1	 > ztest1.out
	@echo "--> TESTING BLAS 2 - SINGLE PRECISION <--"
	@./xscblat2 < sin2 > stest2.out
	@echo "--> TESTING BLAS 2 - DOUBLE PRECISION <--"
	@./xdcblat2 < din2 > dtest2.out
	@echo "--> TESTING BLAS 2 - COMPLEX PRECISION <--"
	@./xccblat2 < cin2 > ctest2.out
	@echo "--> TESTING BLAS 2 - DOUBLE COMPLEX PRECISION <--"
	@./xzcblat2	< zin2	> ztest2.out
	@echo "--> TESTING BLAS 3 - SINGLE PRECISION <--"
	@./xscblat3 < sin3 > stest3.out
	@echo "--> TESTING BLAS 3 - DOUBLE PRECISION <--"
	@./xdcblat3 < din3 > dtest3.out
	@echo "--> TESTING BLAS 3 - COMPLEX PRECISION <--"
	@./xccblat3 < cin3 > ctest3.out
	@echo "--> TESTING BLAS 3 - DOUBLE COMPLEX PRECISION <--"
	@./xzcblat3	< zin3 > ztest3.out	
	
.SUFFIXES: .o .f .c

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