#MPL = mpl
MPLWRAP = mplwrap
MPL = mpl
LIBS = .
INC = .

MPLFLAGS = 
FC = mpfortran
FFLAGS =-Omax -c -nodebug -pevariable -pmemsize=16 -strip=schedule
.SUFFIXES: .m
.m.o:
	$(MPL) -c -I$(INC) $(MPLFLAGS) $<


FOBJS = dgemm.o dasum.o daxpy.o dcopy.o ddot.o dgbmv.o dgemv.o dger.o \
         dnrm2.o drot.o drotg.o dscal.o dspr.o dspr2.o dswap.o \
         dsymm.o dsyr.o dsyr2.o dsyr2k.o dsyrk.o dtrmm.o dtrsm.o dtrsv.o \
         idamax.o dsbmv.o dspmv.o dsymv.o dtbmv.o dtbsv.o dtpmv.o dtpsv.o \
         dtrmv.o xerbla.o lsame.o degad.o dfillo.o dpacku.o

WRAPFILES = MPL_DGEMM1.m MPL_DAXPY.m MPL_DCOPY.m MPL_DGEMV2.m MPL_DGEMV1.m \
	MPL_DGER.m MPL_DSCAL.m MPL_DSWAP.m MPL_DTRSM_LON.m MPL_DTRSM_UPN.m \
	MPL_DTRSV_LO.m MPL_DTRSV_UP.m MPL_IDAMAX.m

MOBJS = mpl_dgemm1.o mpl_sq_dps.o mpl_sq_dmul.o \
         mpl_rec_dps.o mpl_rec_dmul.o \
	 mpl_daxpy.o mpl_dcopy.o \
         mpl_dgemv1.o mpl_dgemv2.o \
         mpl_dger.o mpl_dscal.o \
         mpl_dswap.o mpl_dtrsm_lon.o \
         mpl_dtrsm_upn.o mpl_dtrsv_lo.o \
         mpl_dtrsv_up.o mpl_idamax.o mpl_dussolve.o \
         mpl_dursolve.o mpl_dlssolve.o mpl_dlrsolve.o  \
          mpl_dtri_sun.o mpl_dtri_sln.o  \
         mpl_dtri_run.o mpl_dtri_rln.o $(WRAPFILES:.m=.o)

$(LIBS)/libmpl_blas.a:     $(FOBJS) $(MOBJS)
	mpar r $(LIBS)/libmpl_blas.a $?
	mpranlib $(LIBS)/libmpl_blas.a
        
MPL_DGEMM1.m:
	$(MPLWRAP) void mpl_dgemm1 int int int double "plural double *" "plural double *" "plural double *"
MPL_DAXPY.m:
	$(MPLWRAP) void mpl_daxpy int double "plural double *" "plural double *" 
MPL_DCOPY.m:
	$(MPLWRAP) void mpl_dcopy int "plural double *" "plural double *" 
MPL_REC_DPSW.m:
	$(MPLWRAP) void mpl_rec_dpsW   "plural double" "plural double" "plural double *" "plural double *" int int
MPL_DGEMV1.m:
	$(MPLWRAP) void mpl_dgemv1 int int double "plural double *" "plural double *" double "plural double *"
MPL_DGEMV2.m:
	$(MPLWRAP) void mpl_dgemv2 int int double "plural double *" "plural double *" double "plural double *"
MPL_DGER.m:
	$(MPLWRAP) void mpl_dger int int double "plural double *" "plural double *" "plural double *"
MPL_DLRSOLVE.m:
	$(MPLWRAP) void mpl_dlrsolve int int "plural double" "plural double"  "plural double *" "plural double *"
MPL_DLSSOLVE.m:
	$(MPLWRAP) void mpl_dlssolve int int "plural double" "plural double *"
MPL_DSCAL.m:
	$(MPLWRAP) void mpl_dscal int double "plural double *"
MPL_DSWAP.m:
	$(MPLWRAP) void mpl_dswap int "plural double *" "plural double *"
MPL_DTRI_RLN.m:
	$(MPLWRAP) void mpl_dtri_rln int int int "plural double" "plural double"  "plural double *" "plural double *"
MPL_DTRI_RUN.m:
	$(MPLWRAP) void mpl_dtri_run int int int "plural double" "plural double"  "plural double *" "plural double *"
MPL_DTRI_SLN.m:
	$(MPLWRAP) void mpl_dtri_sln int int int "plural double" "plural double *"
MPL_DTRI_SLT.m:
	$(MPLWRAP) void mpl_dtri_slt int int int "plural double" "plural double *"
MPL_DTRI_SUN.m:
	$(MPLWRAP) void mpl_dtri_sun int int int "plural double" "plural double *"
MPL_DTRSM_LON.m:
	$(MPLWRAP) void mpl_dtrsm_lon int int int "plural double *"  int "plural double *"
MPL_DTRSM_UPN.m:
	$(MPLWRAP) void mpl_dtrsm_upn int int int "plural double *"  int "plural double *"
MPL_DTRSV_LO.m:
	$(MPLWRAP) void mpl_dtrsv_lo int int int "plural double *" "plural double *"
MPL_DTRSV_UP.m:
	$(MPLWRAP) void mpl_dtrsv_up int int int "plural double *" "plural double *"
MPL_DURSOLVE.m:
	$(MPLWRAP) void mpl_dursolve int int "plural double" "plural double" "plural double *" "plural double *"
MPL_DUSSOLVE.m:
	$(MPLWRAP) void mpl_dussolve int int "plural double" "plural double *"
MPL_IDAMAX.m:
	$(MPLWRAP) void mpl_idamax int  "plural double *" "int *"
MPL_REC_DMUL.m:
	$(MPLWRAP) void mpl_rec_dmul int "plural double"  "plural double" "plural double" "plural double"   "plural double *"  "plural double *"  int int int
MPL_SQ_DMUL.m:
	$(MPLWRAP) void mpl_sq_dmul int  "plural double" "plural double" "plural double *"  int int int
MPL_SQ_DPSW.m:
	$(MPLWRAP) void mpl_sq_dpsW  "plural double" "plural double *"  int int
MPL_DTRI_RLT.m:
	$(MPLWRAP) void mpl_dtri_rlt int int int "plural double" "plural double" "plural double *"  "plural double *"
MPL_DTRI_SUT.m:
	$(MPLWRAP) void mpl_dtri_sut int int int "plural double"  "plural double *"
MPL_DTRI_RUT.m:
	$(MPLWRAP) void mpl_dtri_rut int int int "plural double" "plural double"  "plural double *" "plural double *"

clean: 
	-rm *.o ${WRAPFILES}
