#######################################################################
# This makefile is part of the package for solving rank deficient
# least squares problems. 
# ==================================================================
#     L. Foster                   and   R. Kommu
#     Department of Mathematics         Department of Physics
#     San Jose State University         San Jose State University
#     San Jose, CA 95192                San Jose, CA 95192
#     foster@math.sjsu.edu              rkommu@email.sjsu.edu
# ==================================================================
# 03/05/2004
#
#  This is the makefile to create a library of the test matrix
#  generators used the package.  The files are organized as follows:
#
#     SCATGEN  -- Auxiliary routines called from both REAL and COMPLEX
#     DZATGEN  -- Auxiliary routines called from both DOUBLE PRECISION
#                 and COMPLEX*16
#     SMATGEN  -- Single precision real matrix generation routines
#     CMATGEN  -- Single precision complex matrix generation routines
#     DMATGEN  -- Double precision real matrix generation routines
#     ZMATGEN  -- Double precision complex matrix generation routines
#
#  The library can be set up to include routines for any combination
#  of the four precisions.  To create or add to the library, enter
#  nmake -f makewin32 followed by one or more of the precisions desired.
#  Some examples:
#       nmake -f makewin32 single
#       nmake -f makewin32 single complex
#       nmake -f makewin32 single double complex complex16
#  Alternatively, the command
#       nmake -f makewin32
#  without any arguments creates a library of all four precisions.
#  The library is called
#       tmglib.a
#  and is created at the XGELSZ directory level.
#
#  To remove the object files after the library is created, enter
#       nmake -f makewin32 clean
#
# Please refer to the readme file in XGELSZ/INSTALL for 
# further documentation on the use of makefiles in the package.
#######################################################################
!include <..\..\make.inc>

MATGENSRC = $(LAPACK)\TESTING\MATGEN

all: single double complex complex16
 
SCATGEN = slatm1.obj slaran.obj slarnd.obj

SMATGEN = slatms.obj slatme.obj slatmr.obj \
   slagge.obj slagsy.obj slakf2.obj slarge.obj slaror.obj slarot.obj slatm2.obj \
   slatm3.obj slatm5.obj slatm6.obj

CMATGEN = clatms.obj clatme.obj clatmr.obj \
   clagge.obj claghe.obj clagsy.obj clakf2.obj clarge.obj claror.obj clarot.obj \
   clatm1.obj clarnd.obj clatm2.obj clatm3.obj clatm5.obj clatm6.obj

DZATGEN = dlatm1.obj dlaran.obj dlarnd.obj

DMATGEN = dlatms.obj dlatme.obj dlatmr.obj \
   dlagge.obj dlagsy.obj dlakf2.obj dlarge.obj dlaror.obj dlarot.obj dlatm2.obj \
   dlatm3.obj dlatm5.obj dlatm6.obj

ZMATGEN = zlatms.obj zlatme.obj zlatmr.obj \
   zlagge.obj zlaghe.obj zlagsy.obj zlakf2.obj zlarge.obj zlaror.obj zlarot.obj \
   zlatm1.obj zlarnd.obj zlatm2.obj zlatm3.obj zlatm5.obj zlatm6.obj


single: $(SMATGEN) $(SCATGEN)
	$(ARCH) $(ARCHFLAGS)..\..\$(TMGLIB) $(SMATGEN) $(SCATGEN)

complex: $(CMATGEN) $(SCATGEN)
	$(ARCH) $(ARCHFLAGS)..\..\$(TMGLIB) $(CMATGEN) $(SCATGEN)

double: $(DMATGEN) $(DZATGEN)
	$(ARCH) $(ARCHFLAGS)..\..\$(TMGLIB) $(DMATGEN) $(DZATGEN)

complex16: $(ZMATGEN) $(DZATGEN)
	$(ARCH) $(ARCHFLAGS)..\..\$(TMGLIB) *.obj

slatm1.obj: {$(MATGENSRC)}slatm1.f
	$(FORTRAN) $(OPTS) -c $?
slaran.obj: {$(MATGENSRC)}slaran.f
	$(FORTRAN) $(OPTS) -c $?
slarnd.obj: {$(MATGENSRC)}slarnd.f
	$(FORTRAN) $(OPTS) -c $?
slatms.obj: {$(MATGENSRC)}slatms.f
	$(FORTRAN) $(OPTS) -c $?
slatme.obj: {$(MATGENSRC)}slatme.f
	$(FORTRAN) $(OPTS) -c $?
slatmr.obj: {$(MATGENSRC)}slatmr.f
	$(FORTRAN) $(OPTS) -c $?
slagge.obj: {$(MATGENSRC)}slagge.f
	$(FORTRAN) $(OPTS) -c $?
slagsy.obj: {$(MATGENSRC)}slagsy.f
	$(FORTRAN) $(OPTS) -c $?
slakf2.obj: {$(MATGENSRC)}slakf2.f
	$(FORTRAN) $(OPTS) -c $?
slarge.obj: {$(MATGENSRC)}slarge.f
	$(FORTRAN) $(OPTS) -c $?
slaror.obj: {$(MATGENSRC)}slaror.f
	$(FORTRAN) $(OPTS) -c $?
slarot.obj: {$(MATGENSRC)}slarot.f
	$(FORTRAN) $(OPTS) -c $?
slatm2.obj: {$(MATGENSRC)}slatm2.f
	$(FORTRAN) $(OPTS) -c $?
slatm3.obj: {$(MATGENSRC)}slatm3.f
	$(FORTRAN) $(OPTS) -c $?
slatm5.obj: {$(MATGENSRC)}slatm5.f
	$(FORTRAN) $(OPTS) -c $?
slatm6.obj: {$(MATGENSRC)}slatm6.f
	$(FORTRAN) $(OPTS) -c $?

clatms.obj: {$(MATGENSRC)}clatms.f
	$(FORTRAN) $(OPTS) -c $?
clatme.obj: {$(MATGENSRC)}clatme.f
	$(FORTRAN) $(OPTS) -c $?
clatmr.obj: {$(MATGENSRC)}clatmr.f
	$(FORTRAN) $(OPTS) -c $?
clagge.obj: {$(MATGENSRC)}clagge.f
	$(FORTRAN) $(OPTS) -c $?
claghe.obj: {$(MATGENSRC)}claghe.f
	$(FORTRAN) $(OPTS) -c $?
clagsy.obj: {$(MATGENSRC)}clagsy.f
	$(FORTRAN) $(OPTS) -c $?
clakf2.obj: {$(MATGENSRC)}clakf2.f
	$(FORTRAN) $(OPTS) -c $?
clarge.obj: {$(MATGENSRC)}clarge.f
	$(FORTRAN) $(OPTS) -c $?
claror.obj: {$(MATGENSRC)}claror.f
	$(FORTRAN) $(OPTS) -c $?
clarot.obj: {$(MATGENSRC)}clarot.f
	$(FORTRAN) $(OPTS) -c $?
clatm1.obj: {$(MATGENSRC)}clatm1.f
	$(FORTRAN) $(OPTS) -c $?
clarnd.obj: {$(MATGENSRC)}clarnd.f
	$(FORTRAN) $(OPTS) -c $?
clatm2.obj: {$(MATGENSRC)}clatm2.f
	$(FORTRAN) $(OPTS) -c $?
clatm3.obj: {$(MATGENSRC)}clatm3.f
	$(FORTRAN) $(OPTS) -c $?
clatm5.obj: {$(MATGENSRC)}clatm5.f
	$(FORTRAN) $(OPTS) -c $?
clatm6.obj: {$(MATGENSRC)}clatm6.f
	$(FORTRAN) $(OPTS) -c $?

dlatm1.obj: {$(MATGENSRC)}dlatm1.f
	$(FORTRAN) $(OPTS) -c $?
dlaran.obj: {$(MATGENSRC)}dlaran.f
	$(FORTRAN) $(OPTS) -c $?
dlarnd.obj: {$(MATGENSRC)}dlarnd.f
	$(FORTRAN) $(OPTS) -c $?
dlatms.obj: {$(MATGENSRC)}dlatms.f
	$(FORTRAN) $(OPTS) -c $?
dlatme.obj: {$(MATGENSRC)}dlatme.f
	$(FORTRAN) $(OPTS) -c $?
dlatmr.obj: {$(MATGENSRC)}dlatmr.f
	$(FORTRAN) $(OPTS) -c $?
dlagge.obj: {$(MATGENSRC)}dlagge.f
	$(FORTRAN) $(OPTS) -c $?
dlagsy.obj: {$(MATGENSRC)}dlagsy.f
	$(FORTRAN) $(OPTS) -c $?
dlakf2.obj: {$(MATGENSRC)}dlakf2.f
	$(FORTRAN) $(OPTS) -c $?
dlarge.obj: {$(MATGENSRC)}dlarge.f
	$(FORTRAN) $(OPTS) -c $?
dlaror.obj: {$(MATGENSRC)}dlaror.f
	$(FORTRAN) $(OPTS) -c $?
dlarot.obj: {$(MATGENSRC)}dlarot.f
	$(FORTRAN) $(OPTS) -c $?
dlatm2.obj: {$(MATGENSRC)}dlatm2.f
	$(FORTRAN) $(OPTS) -c $?
dlatm3.obj: {$(MATGENSRC)}dlatm3.f
	$(FORTRAN) $(OPTS) -c $?
dlatm5.obj: {$(MATGENSRC)}dlatm5.f
	$(FORTRAN) $(OPTS) -c $?
dlatm6.obj: {$(MATGENSRC)}dlatm6.f
	$(FORTRAN) $(OPTS) -c $?

zlatms.obj: {$(MATGENSRC)}zlatms.f
	$(FORTRAN) $(OPTS) -c $?
zlatme.obj: {$(MATGENSRC)}zlatme.f
	$(FORTRAN) $(OPTS) -c $?
zlatmr.obj: {$(MATGENSRC)}zlatmr.f
	$(FORTRAN) $(OPTS) -c $?
zlagge.obj: {$(MATGENSRC)}zlagge.f
	$(FORTRAN) $(OPTS) -c $?
zlaghe.obj: {$(MATGENSRC)}zlaghe.f
	$(FORTRAN) $(OPTS) -c $?
zlagsy.obj: {$(MATGENSRC)}zlagsy.f
	$(FORTRAN) $(OPTS) -c $?
zlakf2.obj: {$(MATGENSRC)}zlakf2.f
	$(FORTRAN) $(OPTS) -c $?
zlarge.obj: {$(MATGENSRC)}zlarge.f
	$(FORTRAN) $(OPTS) -c $?
zlaror.obj: {$(MATGENSRC)}zlaror.f
	$(FORTRAN) $(OPTS) -c $?
zlarot.obj: {$(MATGENSRC)}zlarot.f
	$(FORTRAN) $(OPTS) -c $?
zlatm1.obj: {$(MATGENSRC)}zlatm1.f
	$(FORTRAN) $(OPTS) -c $?
zlarnd.obj: {$(MATGENSRC)}zlarnd.f
	$(FORTRAN) $(OPTS) -c $?
zlatm2.obj: {$(MATGENSRC)}zlatm2.f
	$(FORTRAN) $(OPTS) -c $?
zlatm3.obj: {$(MATGENSRC)}zlatm3.f
	$(FORTRAN) $(OPTS) -c $?
zlatm5.obj: {$(MATGENSRC)}zlatm5.f
	$(FORTRAN) $(OPTS) -c $?
zlatm6.obj: {$(MATGENSRC)}zlatm6.f
	$(FORTRAN) $(OPTS) -c $?

clean:
	del *.obj

.SUFFIXES: .f .obj
.f.obj:
	$(FORTRAN) $(OPTS) -c $*.f
