########################################################################
#
#	     ====================================================
#	     Make descriptor file for EPRP and related programs
#	     ====================================================
#
########################################################################
#

.SUFFIXES:
.SUFFIXES: .f .inc .o .c
.PRECIOUS: .f .inc .h .c

F77 = xlf
FFLAGS = -c -O
FLOAD= xlf -o
LIB = 

CC = cc
CFLAGS = -c
#	
#-----------------------------------------------------------------------
#			Definitions
#-----------------------------------------------------------------------
#
RDO =rdfdat.o fbaso.o fbasd.o ipar.o getids.o setnam.o whris.o
RWO =wrfdat.o wrfprm.o wrfbas.o
EPO1=$(RDO) $(RWO) setflg.o dtime.o
EPO2=matrxo.o matrxd.o cd2km.o anxlk.o w3j.o
EPO3=stvecp.o ccrints.o fz.o bessi.o bessi0.o bessi1.o plgndr.o 
EPO4=zdotu.o zaxpy.o scmvm.o 
EVAL=csval.o compev.o lump.o comgap.o isoev.o inverr.o cmtqli.o
EVEC=csvec.o stvec.o znormu.o zscsw.o
EPO5=eprlf.o cslnzs.o $(EVAL) $(EVEC)
EPO6=eprcgf.o cscg.o zaypx.o $(EVAL) $(EVEC)
EPO7=eprbf.o cspccg.o zaypx.o
FLES=cslnlc.o cscglc.o zaypx.o stvec.o znormu.o zscsw.o
EPO8=eprlcg.o $(EVAL) $(FLES)
RTHS=stvec.o znormu.o indexx.o
EPO9=epresa.o csqz.o cqrt.o $(RTHS)
EPOA=epregv.o csqz1.o cqrt1.o $(RTHS)
SESA=evesa.o csqz.o cqrt.o $(RTHS)
LBO =lblf.o $(RDO) $(RWO) prmpt.o pprmpt.o cd2km.o
TDO=tdlf.o rdfdat.o cmtqli.o setnam.o prmpt.o pprmpt.o getids.o whris.o 
TNO=tnlf.o $(RDO)
MLO =fmatrx.o $(RDO)
VLS =fstvec.o zdotu.o $(RDO)
VLE =$(RDO) 
STDINC=stddim.inc stdio.inc rndoff.inc
LINC=$(STDINC) physcn.inc eprdat.inc fnames.inc indexf.inc

#-----------------------------------------------------------------------
#		Addition for 2-D Simulation
#-----------------------------------------------------------------------

TINC=$(STDINC) tddim.inc tdexp.inc tdfnam.inc
MINC=momdim.inc stdio.inc tdexp.inc tdfnam.inc timer.inc eprdat.inc indexf.inc rndoff.inc
RWTD=rdfinp.o wrfinp.o getidt.o tdsnam.o whris.o 
EPS=eprps.o wrfout.o switch.o fft.o  dtime.o
FSE=fsese.o wrfout.o switch.o fft.o  dtime.o
MMD=momd.o wrfout.o switch.o fft.o 
PRTD=getidt.o tdsnam.o rdfinp.o whris.o 
#------		Object files	------#

tdip.o		: tdip.f $(TINC) eprdat.inc

rdfinp.o	: rdfinp.f stdio.inc tdexp.inc

wrfinp.o 	: wrfinp.f stdio.inc tdexp.inc

wrfout.o 	: wrfinp.f stdio.inc tdexp.inc tdfnam.inc

tdsnam.o	: tdsnam.f tdfnam.inc tdexp.inc

getidt.o	: getidt.f tddim.inc tdfnam.inc stdio.inc tdexp.inc

eprps.o		: eprps.f $(TINC) timer.inc tdmat.inc

fsese.o		: fsese.f $(TINC) timer.inc tdmat.inc

evesa.o		: evesa.f $(LINC) eprmat.inc

momd.o		: momd.f $(MINC)

proc2d.o	: proc2d.f stdio.inc tdexp.inc tdfnam.inc rndoff.inc

dualqd.o	: dualqd.f stdio.inc

snglqd.o	: snglqd.f stdio.inc

ncont.o		: ncont.f stdio.inc

chres.o		: chres.f stdio.inc

stvpd.o		: stvpd.f stdio.inc eprdat.inc tdexp.inc tdfnam.inc

switch.o	: switch.f

fft.o		: fft.f

#------		Executable files	------#

tdip    : tdip.o prmpt.o pprmpt.o $(RWTD) rdfdat.o wrfdat.o
	$(FLOAD) $@ tdip.o prmpt.o pprmpt.o $(RWTD) rdfdat.o wrfdat.o $(LIB)

eprps   : $(EPS)  $(RWTD)
	$(FLOAD) $@ $(EPS) $(RWTD) $(LIB) -lessl

fsese   : $(FSE)  $(RWTD)
	$(FLOAD) $@ $(FSE) $(RWTD) $(LIB) -lessl

momd    : $(MMD) $(RWTD) $(EPO1) $(EPO2) $(EPO3) $(SESA)
	$(FLOAD) $@ $(MMD) $(RWTD) $(EPO1) $(EPO2) $(EPO3) $(SESA) $(LIB) -lessl

proc2d  : proc2d.o $(PRTD) fft.o switch.o prmpt.o pprmpt.o 
	$(FLOAD) $@ proc2d.o $(PRTD) fft.o switch.o prmpt.o pprmpt.o  $(LIB)

dualqd  : dualqd.o whris.o 
	$(FLOAD) $@ dualqd.o whris.o  $(LIB)

snglqd  : snglqd.o whris.o 
	$(FLOAD) $@ snglqd.o whris.o  $(LIB)

ncont   : ncont.o whris.o  prmpt.o pprmpt.o
	$(FLOAD) $@ ncont.o whris.o  prmpt.o pprmpt.o $(LIB)

chres   : chres.o whris.o  prmpt.o pprmpt.o
	$(FLOAD) $@ chres.o whris.o  prmpt.o pprmpt.o $(LIB)

stvpd   : stvpd.o $(RWTD) rdfdat.o 
	$(FLOAD) $@ stvpd.o $(RWTD) rdfdat.o  $(LIB)

psall	: tdip eprps momd proc2d dualqd snglqd ncont chres

#-----------------------------------------------------------------------
#		Object files
#-----------------------------------------------------------------------

lblf.o		: lblf.f $(LINC) maxl.inc

tnlf.o		: tnlf.f $(LINC) 

prune.o		: prune.f $(LINC) 

combas.o	: combas.f $(LINC) 

egsort.o	: egsort.f $(LINC) 

fmatrx.o	: fmatrx.f $(LINC) eprmat.inc

fstvec.o	: fstvec.f $(LINC)

fegvec.o	: fegvec.f $(LINC)

fegvec1.o	: fegvec1.f $(LINC)

eprlf.o 	: eprlf.f $(LINC) eprmat.inc egvmat.inc timer.inc

eprcgf.o	: eprcgf.f $(LINC) eprmat.inc egvmat.inc timer.inc

eprbf.o		: eprbf.f $(LINC) eprmat.inc timer.inc

eprlcg.o	: eprlcg.f $(LINC) eprmat.inc  timer.inc

epresa.o	: epresa.f $(LINC) eprmat.inc timer.inc

epregv.o	: epregv.f $(LINC) eprmat.inc timer.inc

cwspec.o	: cwspec.f $(LINC)

egl2p.o		: egl2p.f stddim.inc stdio.inc fnames.inc

tdlf.o		: tdlf.f $(LINC) pidef.inc

setflg.o 	: setflg.f stddim.inc eprdat.inc fnames.inc

ipar.o 		: ipar.f

rdfdat.o	: rdfdat.f stdio.inc eprdat.inc

wrfdat.o 	: wrfdat.f stdio.inc eprdat.inc

wrfprm.o 	: wrfprm.f rndoff.inc eprdat.inc

wrfbas.o	: wrfbas.f stddim.inc eprdat.inc indexf.inc

prmpt.o 	: prmpt.f stdio.inc

matrxo.o 	: matrxo.f $(LINC) eprmat.inc maxl.inc

matrxd.o 	: matrxd.f $(LINC) eprmat.inc maxl.inc

anxlk.o		: anxlk.f rndoff.inc eprdat.inc

w3j.o		: w3j.f rndoff.inc maxl.inc stdio.inc

cd2km.o 	: cd2km.f rndoff.inc pidef.inc

cscg.o 		: cscg.f $(STDINC) fnames.inc egvmat.inc

cscglc.o	: cscglc.f stddim.inc stdio.inc fnames.inc

cspccg.o 	: cspccg.f stddim.inc eprmat.inc rndoff.inc

cslnzs.o 	: cslnzs.f stddim.inc egvmat.inc

cslnlc.o 	: cslnlc.f stddim.inc

scmvm.o 	: scmvm.f stddim.inc rndoff.inc eprmat.inc eprdat.inc

zaxpy.o 	: zaxpy.f stddim.inc rndoff.inc

zaypx.o 	: zaypx.f stddim.inc rndoff.inc

znormu.o	: znormu.f stddim.inc rndoff.inc

zscsw.o		: zscsw.f stddim.inc rndoff.inc

zdotu.o		: zdotu.f stddim.inc rndoff.inc

indexx.o	: indexx.f stddim.inc

stvec.o 	: stvec.f $(LINC)

stvecp.o 	: stvecp.f stddim.inc eprdat.inc rndoff.inc indexf.inc

ccrints.o	: ccrints.f

fz.o		: fz.f eprdat.inc

bessi.o		: bessi.f rndoff.inc

bessi0.o	: bessi0.f rndoff.inc pidef.inc

bessi1.o	: bessi1.f rndoff.inc pidef.inc

plgndr.o	: plgndr.f

fbaso.o		: fbaso.f $(LINC)

fbasd.o		: fbasd.f stddim.inc stdio.inc eprdat.inc indexf.inc

cgltri.o	: cgltri.f stddim.inc rndoff.inc

cmtqli.o	: cmtqli.f stddim.inc rndoff.inc

cmtql1.o	: cmtql1.f rndoff.inc

cmtql2.o	: cmtql2.f rndoff.inc

csvec.o		: csvec.f stddim.inc rndoff.inc stdio.inc

setnam.o	: setnam.f stddim.inc fnames.inc eprdat.inc

getids.o	: getids.f fnames.inc stddim.inc stdio.inc

csval.o 	: csval.f $(STDINC) fnames.inc eprdat.inc

compev.o	: compev.f stddim.inc stdio.inc eprdat.inc

lump.o  	: lump.f stddim.inc stdio.inc eprdat.inc

comgap.o	: comgap.f stddim.inc stdio.inc

isoev.o 	: isoev.f stddim.inc stdio.inc eprdat.inc

inverr.o	: inverr.f $(STDINC) eprdat.inc

#-----------------------------------------------------------------------
#		Executable files
#-----------------------------------------------------------------------


fmatrx	: $(MLO)
	$(FLOAD) $@ $(MLO) $(LIB)

fstvec	: $(VLS)
	$(FLOAD) $@ $(VLS) $(LIB)

fegvec	: fegvec.o $(VLE)
	$(FLOAD) $@ fegvec.o $(VLE) $(LIB)

fegvec1	: fegvec1.o $(VLE)
	$(FLOAD) $@ fegvec1.o $(VLE) $(LIB)

egl2p	: egl2p.o whris.o getids.o 
	$(FLOAD) $@ egl2p.o whris.o getids.o  $(LIB)

lblf    : $(LBO)
	$(FLOAD) $@ $(LBO) $(LIB)

tdlf    : $(TDO)
	$(FLOAD) $@ $(TDO) $(LIB)

eprlf	: $(EPO1) $(EPO2) $(EPO3) $(EPO4) $(EPO5)
	$(FLOAD) $@ $(EPO1) $(EPO2) $(EPO3) $(EPO4) $(EPO5) $(LIB)
   
eprcgf	: $(EPO1) $(EPO2) $(EPO3) $(EPO4) $(EPO6)
	$(FLOAD) $@ $(EPO1) $(EPO2) $(EPO3) $(EPO4) $(EPO6) $(LIB)

eprbf	: $(EPO1) $(EPO2) $(EPO3) $(EPO4) $(EPO7)
	$(FLOAD) $@ $(EPO1) $(EPO2) $(EPO3) $(EPO4) $(EPO7) $(LIB)

eprlcg	: $(EPO1) $(EPO2) $(EPO3) $(EPO4) $(EPO8)
	$(FLOAD) $@ $(EPO1) $(EPO2) $(EPO3) $(EPO4) $(EPO8) $(LIB)
   
epresa	: $(EPO1) $(EPO2) $(EPO3) $(EPO9)
	$(FLOAD) $@ $(EPO1) $(EPO2) $(EPO3) $(EPO9) $(LIB)
   
epregv	: $(EPO1) $(EPO2) $(EPO3) $(EPOA)
	$(FLOAD) $@ $(EPO1) $(EPO2) $(EPO3) $(EPOA) $(LIB)
   
cwspec	: $(EPO1) cwspec.o
	$(FLOAD) $@ $(EPO1) cwspec.o $(LIB)
   
tnlf	: $(TNO)
	$(FLOAD) $@ $(TNO) $(LIB)

prune	: prune.o $(RDO) wrfdat.o prmpt.o pprmpt.o
	$(FLOAD) $@ prune.o $(RDO) wrfdat.o prmpt.o pprmpt.o $(LIB)

combas	: combas.o $(RDO) wrfdat.o
	$(FLOAD) $@ combas.o $(RDO) wrfdat.o $(LIB)

egsort	: egsort.o getids.o whris.o rdfdat.o indexx.o 
	$(FLOAD) $@ egsort.o getids.o whris.o rdfdat.o indexx.o $(LIB)

accso	: egsort fmatrx fstvec fegvec fegvec1 egl2p cwspec fsese

all	: lblf eprlf eprcgf eprbf eprlcg epresa epregv tdlf tnlf prune combas

#-----------------------------------------------------------------------
#			Default actions
#-----------------------------------------------------------------------

.c.o   :
	$(CC) $(CFLAGS) $*.c

.f.o   :
	$(F77) $(FFLAGS) $*.f

.inc.o :
	$(F77) $(FFLAGS) $*.f
