MPL = mpl -Zq
LIBS = ../../../lib
INC = ../include
MPLWRAP = ../utils/mplwrap

MPLFLAGS = 
FC = mpfortran -Zq
FFLAGS =-Omax -c -nodebug -pevariable -pmemsize=16 -strip=schedule

.SUFFIXES: .m
.m.o:
	$(MPL) -c -I$(INC) $(MPLFLAGS) $<

FOBJS = sgemm.o sasum.o saxpy.o scopy.o sdot.o sgbmv.o sgemv.o sger.o \
         snrm2.o srot.o srotg.o sscal.o sspr.o sspr2.o sswap.o \
         ssymm.o ssyr.o ssyr2.o ssyr2k.o ssyrk.o strmm.o strsm.o strsv.o \
         isamax.o ssbmv.o sspmv.o ssymv.o stbmv.o stbsv.o stpmv.o stpsv.o \
         strmv.o xerbla.o lsame.o segad.o sfillo.o spacku.o

WRAPFILES = MPL_SGEMM1.m MPL_SAXPY.m MPL_SCOPY.m MPL_SGEMV2.m MPL_SGEMV1.m \
	MPL_SGER.m MPL_SSCAL.m MPL_SSWAP.m MPL_STRSM_LON.m MPL_STRSM_UPN.m \
	MPL_STRSV_LO.m MPL_STRSV_UP.m MPL_ISAMAX.m

MOBJS = mpl_sgemm1.o mpl_sq_sps.o mpl_sq_smul.o \
         mpl_rec_sps.o mpl_rec_smul.o \
	 mpl_saxpy.o mpl_scopy.o \
         mpl_sgemv1.o mpl_sgemv2.o \
         mpl_sger.o mpl_sscal.o \
         mpl_sswap.o mpl_strsm_lon.o \
         mpl_strsm_upn.o mpl_strsv_lo.o \
         mpl_strsv_up.o mpl_isamax.o mpl_sussolve.o \
         mpl_sursolve.o mpl_slssolve.o mpl_slrsolve.o  \
          mpl_stri_sun.o mpl_stri_sln.o  \
         mpl_stri_run.o mpl_stri_rln.o $(WRAPFILES:.m=.o)

$(LIBS)/libmpl_blas.a:     $(FOBJS) $(MOBJS)
	mpar r $(LIBS)/libmpl_blas.a $?
	mpranlib $(LIBS)/libmpl_blas.a
        
MPL_SGEMM1.m:
	$(MPLWRAP) void mpl_sgemm1 int int int float "plural float *" "plural float *" "plural float *"
MPL_SAXPY.m:
	$(MPLWRAP) void mpl_saxpy int float "plural float *" "plural float *" 
MPL_SCOPY.m:
	$(MPLWRAP) void mpl_scopy int "plural float *" "plural float *" 
MPL_REC_SPSW.m:
	$(MPLWRAP) void mpl_rec_spsW   "plural float" "plural float" "plural float *" "plural float *" int int
MPL_SGEMV1.m:
	$(MPLWRAP) void mpl_sgemv1 int int float "plural float *" "plural float *" float "plural float *"
MPL_SGEMV2.m:
	$(MPLWRAP) void mpl_sgemv2 int int float "plural float *" "plural float *" float "plural float *"
MPL_SGER.m:
	$(MPLWRAP) void mpl_sger int int float "plural float *" "plural float *" "plural float *"
MPL_SLRSOLVE.m:
	$(MPLWRAP) void mpl_slrsolve int int "plural float" "plural float"  "plural float *" "plural float *"
MPL_SLSSOLVE.m:
	$(MPLWRAP) void mpl_slssolve int int "plural float" "plural float *"
MPL_SSCAL.m:
	$(MPLWRAP) void mpl_sscal int float "plural float *"
MPL_SSWAP.m:
	$(MPLWRAP) void mpl_sswap int "plural float *" "plural float *"
MPL_STRI_RLN.m:
	$(MPLWRAP) void mpl_stri_rln int int int "plural float" "plural float"  "plural float *" "plural float *"
MPL_STRI_RUN.m:
	$(MPLWRAP) void mpl_stri_run int int int "plural float" "plural float"  "plural float *" "plural float *"
MPL_STRI_SLN.m:
	$(MPLWRAP) void mpl_stri_sln int int int "plural float" "plural float *"
MPL_STRI_SLT.m:
	$(MPLWRAP) void mpl_stri_slt int int int "plural float" "plural float *"
MPL_SQ_SPSM.m:
	$(MPLWRAP) void mpl_sq_spsm  int "plural float" "plural float" "plural float *" int
MPL_STRI_SUN.m:
	$(MPLWRAP) void mpl_stri_sun int int int "plural float" "plural float *"
MPL_STRSM_LON.m:
	$(MPLWRAP) void mpl_strsm_lon int int int "plural float *"  int "plural float *"
MPL_STRSM_UPN.m:
	$(MPLWRAP) void mpl_strsm_upn int int int "plural float *"  int "plural float *"
MPL_STRSV_LO.m:
	$(MPLWRAP) void mpl_strsv_lo int int int "plural float *" "plural float *"
MPL_STRSV_UP.m:
	$(MPLWRAP) void mpl_strsv_up int int int "plural float *" "plural float *"
MPL_SURSOLVE.m:
	$(MPLWRAP) void mpl_sursolve int int "plural float" "plural float" "plural float *" "plural float *"
MPL_SUSSOLVE.m:
	$(MPLWRAP) void mpl_sussolve int int "plural float" "plural float *"
MPL_ISAMAX.m:
	$(MPLWRAP) void mpl_isamax int  "plural float *" "int *"
MPL_REC_SMUL.m:
	$(MPLWRAP) void mpl_rec_smul int "plural float"  "plural float" "plural float" "plural float"   "plural float *"  "plural float *"  int int int
MPL_SQ_SMUL.m:
	$(MPLWRAP) void mpl_sq_smul int  "plural float" "plural float" "plural float *"  int int int
MPL_SQ_SPSW.m:
	$(MPLWRAP) void mpl_sq_spsW  "plural float" "plural float *"  int int
MPL_STRI_RLT.m:
	$(MPLWRAP) void mpl_stri_rlt int int int "plural float" "plural float" "plural float *"  "plural float *"
MPL_REC_SPSM.m:
	$(MPLWRAP) void mpl_rec_spsm int "plural float"  "plural float" "plural float" "plural float"   "plural float *"  "plural float *"  int
MPL_STRI_SUT.m:
	$(MPLWRAP) void mpl_stri_sut int int int "plural float"  "plural float *"
MPL_STRI_RUT.m:
	$(MPLWRAP) void mpl_dtri_rut int int int "plural float" "plural float"  "plural float *" "plural float *"

clean: 
	-rm *.o ${WRAPFILES}
