#
#  Top Level Makefile for LAPACK
#  Version 3.0
#  June 30, 1999
#

include make.inc

all: install lib testing blas_testing timing blas_timing

lib: lapacklib tmglib
#lib: blaslib lapacklib tmglib

clean: cleanlib cleantesting cleantiming

install:
	( cd INSTALL; $(MAKE); testlsame; testslamch; \
	  testdlamch; testsecond; testdsecnd; \
	  cp lsame.f ../BLAS/SRC/; cp lsame.f ../SRC; \
	  cp slamch.f ../SRC/; cp dlamch.f ../SRC/; \
	  cp second.f ../SRC/; cp dsecnd.f ../SRC/ )

blaslib:
	( cd BLAS/SRC; $(MAKE) )

lapacklib:
	( cd SRC; $(MAKE) )

tmglib:
	( cd TESTING/MATGEN; $(MAKE) )

testing:
	( cd TESTING ; $(MAKE) )

blas_testing:
	( cd BLAS/TESTING; $(MAKE) -f Makeblat1 )
	( cd BLAS; xblat1s > sblat1.out; \
	           xblat1d > dblat1.out; \
	           xblat1c > cblat1.out; \
	           xblat1z > zblat1.out )

	( cd BLAS/TESTING; $(MAKE) -f Makeblat2 )
	( cd BLAS; xblat2s < sblat2.in ; \
	           xblat2d < dblat2.in ; \
	           xblat2c < cblat2.in ; \
	           xblat2z < zblat2.in )

	( cd BLAS/TESTING; $(MAKE) -f Makeblat3 )
	( cd BLAS; xblat3s < sblat3.in ; \
	           xblat3d < dblat3.in ; \
	           xblat3c < cblat3.in ; \
	           xblat3z < zblat3.in )

timing:
	( cd TIMING; $(MAKE) )

blas_timing:
	( cd TIMING/LIN; $(MAKE) )
	( cd TIMING; xlintims < sblasa.in > sblasa.out ; \
	             xlintims < sblasb.in > sblasb.out ; \
	             xlintims < sblasc.in > sblasc.out )
	( cd TIMING; xlintimd < dblasa.in > dblasa.out ; \
	             xlintimd < dblasb.in > dblasb.out ; \
	             xlintimd < dblasc.in > dblasc.out )
	( cd TIMING; xlintimc < cblasa.in > cblasa.out ; \
	             xlintimc < cblasb.in > cblasb.out ; \
	             xlintimc < cblasc.in > cblasc.out )
	( cd TIMING; xlintimz < zblasa.in > zblasa.out ; \
	             xlintimz < zblasb.in > zblasb.out ; \
	             xlintimz < zblasc.in > zblasc.out )

cleanlib:
	( cd INSTALL; $(MAKE) clean )
	( cd BLAS/SRC; $(MAKE) clean )
	( cd SRC; $(MAKE) clean )
	( cd TESTING/MATGEN; $(MAKE) clean )

cleantesting:
	( cd TESTING/LIN; $(MAKE) clean )
	( cd TESTING/EIG; $(MAKE) clean )
	( cd TESTING; rm xlin* xeig* )

cleantiming:
	( cd TIMING/LIN; $(MAKE) clean )
	( cd TIMING/LIN/LINSRC; $(MAKE) clean )
	( cd TIMING/EIG; $(MAKE) clean )
	( cd TIMING/EIG/EIGSRC; $(MAKE) clean )
	( cd TIMING; rm xlin* xeig* )
