#
#  Makefile for DGESVD (Lapack version 3) on the Lahey cluster.
#  We do NOT use the version of DLAMCH included with the generic distribution 
#  but instead use the version included in -llapackmt.
#  Failure to include ALL of the object files below in libev.a causes memory
#  corruption in the data assimilation code.
#
SVDSOURCES = dbdsqr.f dgeqr2.f dlange.f dlarft.f dlasq1.f dlasq6.f dorg2r.f \
   dorm2r.f dgebd2.f dgeqrf.f dlapy2.f dlartg.f dlasq2.f dlasr.f dorgbr.f \
   dormbr.f dgebrd.f dgesvd.f dlarfb.f dlas2.f dlasq3.f dlasrt.f dorgl2.f \
   dorml2.f dgelq2.f dlabrd.f dlarf.f dlascl.f dlasq4.f dlassq.f dorglq.f \
   dormlq.f dgelqf.f dlacpy.f dlarfg.f dlaset.f dlasq5.f dlasv2.f dorgqr.f \
   dormqr.f

SVDOBJECTS = dbdsqr.o dgeqr2.o dlange.o dlarft.o dlasq1.o dlasq6.o dorg2r.o \
   dorm2r.o dgebd2.o dgeqrf.o dlapy2.o dlartg.o dlasq2.o dlasr.o dorgbr.o \
   dormbr.o dgebrd.o dgesvd.o dlarfb.o dlas2.o dlasq3.o dlasrt.o dorgl2.o \
   dorml2.o dgelq2.o dlabrd.o dlarf.o dlascl.o dlasq4.o dlassq.o dorglq.o \
   dormlq.o dgelqf.o dlacpy.o dlarfg.o dlaset.o dlasq5.o dlasv2.o dorgqr.o \
   dormqr.o

SUPPORTDIR = $$HOME/lekf/support
LIB = $(SUPPORTDIR)/libev.a

#
# SGI
#
#LIB = ../eiglib.a -L$$HOME/lorenz/nws/support -lsupport -lscs
#DEBUG = -g -c -DEBUG:trap_uninitialized -DEBUG:conform_check=YES \
 #-DEBUG:verbose_runtime=YES -DEBUG:subscript_check=YES \
 #-ansi -fullwarn -woff 878,1438,1584 -Dsgi
#OPT = -O -c -OPT:swp=ON -g3 -Dsgi -ansi -fullwarn -woff 878,1438,1584
#F95 = f90

#
# Sun - specify "save" to save stack space
#
#DEBUG = -I../support -M../support -M. -g -c -ansi -ftrap=invalid -u -w4 \
   #-xcheck=stkovf
#OPT =  -I../support -M../support -M. -O4 -c -ftrap=invalid -u -xcheck=stkovf
#F95 = f95

#
# Lahey - add --trap for f.p. trapping (but not with these routines)
#
DEBUG = --mod .:$(SUPPORTDIR) -g -c --trace --chk a,e,s --f95 --maxfatals 3
OPT = --mod .:$(SUPPORTDIR) -O -c --trace --f95 --maxfatals 3
F95 = lf95
#
#DOUBLE=--dbl

#
#  G95 - Cygwin/ATLAS
#
#INCLUDEDIR = -I../support -I.
#DEBUG = $(INCLUDEDIR) -g -c -std=f2003 -Wall
#OPT = $(INCLUDEDIR) -O3 -c -std=f2003 -Wall
#DBLFLAGS = -r8
#F95 = g95

#
#  G95 - OSX
#
#F95 = g95
#DEBUG = -I../support -I. -g -c -Wall -std=f2003 
#OPT = -I../support -I. -O -c -Wall -std=f2003 
#DOUBLE = -r8

FFLAGS = $(OPT) 
#FFLAGS = $(DEBUG) 

.SUFFIXES: .o .mod .f .f90 .f95 .F90 .F95
#.f.mod:
#$(F95) $(FFLAGS) $<
.F90.o:
	$(F95) $(FFLAGS) $<
.f90.mod:
	$(F95) $(FFLAGS) $<
.f95.mod:
	$(F95) $(FFLAGS) $<
.f.o:
	$(F95) $(FFLAGS) $<
.f90.o:
	$(F95) $(FFLAGS) $<
.f95.o:
	$(F95) $(FFLAGS) $<
dgesvd: $(SVDOBJECTS)
	ar r $(LIB) $(SVDOBJECTS)
dbdsqr.o:
dgebd2.o:
dgebrd.o:
dgelq2.o:
dgelqf.o:
dgeqr2.o:
dgeqrf.o:
dgesvd.o:
dlabrd.o:
dlacpy.o:
dlange.o:
dlapy2.o:
dlarfb.o:
dlarfg.o:
dlarf.o:
dlarft.o:
dlartg.o:
dlas2.o:
dlascl.o:
dlaset.o:
dlasq1.o:
dlasq2.o:
dlasq3.o:
dlasq4.o:
dlasq5.o:
dlasq6.o:
dlasr.o:
dlasrt.o:
dlassq.o:
dlasv2.o:
dorg2r.o:
dorgbr.o:
dorgl2.o:
dorglq.o:
dorgqr.o:
dorm2r.o:
dormbr.o:
dorml2.o:
dormlq.o:
dormqr.o:

clean:
	rm -f *.o *.a core
