#####
# Makefile for Volume V - Computer Programs in Seismology
#
# To move this to another machine, the following variables must be
# defined:
#
#	#Machine Type  - Inform -fative Comment
#	FCMP	- name of FORTRAN Compiler with appropriate flags
#	CCMP	- name of C Compiler with appropriage flags
#	MCHDEP	- Name of object file for machine dependent initialization
#	MCHCMD	- Name of object file for getting number of command 
#			line arguments
#	CALFLAG - Name of CALPLOT graphics library or absolute path,
#		e.g., CALFLAG=-lcalpltf if it in /lib /usr/.lib or
#			/usr/local/lib
#		or CALFLAG=../../lib/libcalpltf.a
#	DEST	- Destination for the final execuable
#####
#	If one of the following models is appropriate, just uncomment
#	it by removing the first # sign
#
#	Otherwise, use the existing machine models as guides
#####


#####
#	LINUX Compilers
#####
FCMP=gfortran -frecord-marker=4 -O
CCMP=gcc -O
MCHDEP=mchdep.o 
MCHCMD=mnmarg.o mgtarg.o
CALFLAG=../../lib/libcalpltf.a
GETMOD=igetmod.o
TGETMOD=tgetmod.o



DEST=../../bin

.f.o:
	$(FCMP) -c $<

.c.o:
	$(CCMP) -c $<

f2csub.o:
	cp ../../SUBS/f2csub.f .
	$(FCMP) -c f2csub.f

f96subf.o:
	cp ../../SUBS/f96subf.f .
	$(FCMP) -c f96subf.f

igetmod.o:
	cp ../../SUBS/igetmod.f .
	$(FCMP) -c igetmod.f

iputmod.o:
	cp ../../SUBS/iputmod.f .
	$(FCMP) -c iputmod.f

mnmarg.o:
	cp ../../SUBS/mnmarg.f .
	$(FCMP) -c mnmarg.f

mgtarg.o:
	cp ../../SUBS/mgtarg.f .
	$(FCMP) -c mgtarg.f

mchdep.o:
	cp ../../SUBS/mchdep.f .
	$(FCMP) -c mchdep.f

lgstr.o:
	cp ../../SUBS/lgstr.f .
	$(FCMP) -c lgstr.f

sacsubf.o:
	cp ../../SUBS/sacsubf.f .
	$(FCMP) -c sacsubf.f

tgetmod.o:
	cp ../../SUBS/tgetmod.f .
	$(FCMP) -c tgetmod.f

all: hprep96 hspec96 hpulse96 hwhole96 hprep96p hspec96p hrftn96 rspec96 rspec96p \
	hspec96strain hpulse96strain hwhole96strain \
	sshspec96 sshspec96strain \
	tspec96 tspec96strain tspec96p trftn96  hudson96 hstat96 hsanal96 clean

hprep96:	hprep96.o tgetmod.o $(MCHDEP) lgstr.o $(MCHCMD)
	$(FCMP) hprep96.o tgetmod.o $(MCHDEP) lgstr.o $(MCHCMD) -o hprep96
	mv hprep96 $(DEST)

hspec96:	hspec96.o $(GETMOD) $(MCHDEP) lgstr.o $(MCHCMD)
	$(FCMP) hspec96.o $(GETMOD) $(MCHDEP) lgstr.o $(MCHCMD) -o hspec96
	mv hspec96 $(DEST)

hpulse96:	hpulse96.o f96subf.o $(MCHDEP) lgstr.o $(MCHCMD)
	$(FCMP) hpulse96.o f96subf.o $(MCHDEP) lgstr.o $(MCHCMD) -o hpulse96
	mv hpulse96 $(DEST)

hwhole96:	hwhole96.o $(GETMOD) $(MCHDEP) lgstr.o $(MCHCMD)
	$(FCMP) hwhole96.o $(GETMOD) $(MCHDEP) lgstr.o $(MCHCMD) -o hwhole96
	mv hwhole96 $(DEST)

hprep96p:	hprep96p.o tgetmod.o $(MCHDEP) lgstr.o $(MCHCMD)
	$(FCMP) hprep96p.o tgetmod.o $(MCHDEP) lgstr.o $(MCHCMD) -o hprep96p
	mv hprep96p $(DEST)

hspec96p:	hspec96p.o $(GETMOD) $(MCHDEP) lgstr.o $(MCHCMD)
	$(FCMP) hspec96p.o $(GETMOD) $(MCHDEP) lgstr.o $(MCHCMD) -o hspec96p
	mv hspec96p $(DEST)

hrftn96:	hrftn96.o $(GETMOD) sacsubf.o $(MCHDEP) lgstr.o $(MCHCMD)
	$(FCMP) hrftn96.o sacsubf.o $(GETMOD) $(MCHDEP) lgstr.o $(MCHCMD) -o hrftn96
	mv hrftn96 $(DEST)/hrftn96

hudson96: hudson96.o ${GETMOD} iputmod.o lgstr.o ${MCHCMD}
	$(FCMP) hudson96.o ${GETMOD} iputmod.o lgstr.o ${MCHCMD} -o hudson96
	mv hudson96 $(DEST)/hudson96

hsanal96:	hsanal96.o $(GETMOD) f96subf.o $(MCHDEP) lgstr.o $(MCHCMD)
	$(FCMP) hsanal96.o $(GETMOD) f96subf.o $(MCHDEP) lgstr.o $(MCHCMD) -o hsanal96
	mv hsanal96 $(DEST)

hstat96:	hstat96.o $(GETMOD) f96subf.o $(MCHDEP) lgstr.o $(MCHCMD)
	$(FCMP) hstat96.o $(GETMOD) f96subf.o $(MCHDEP) lgstr.o $(MCHCMD) -o hstat96
	mv hstat96 $(DEST)

rspec96:	rspec96.o rsubs.o $(GETMOD) $(MCHDEP) lgstr.o $(MCHCMD)
	$(FCMP) rspec96.o rsubs.o $(GETMOD) $(MCHDEP) lgstr.o $(MCHCMD) -o rspec96
	mv rspec96 $(DEST)

rspec96p:	rspec96p.o rsubs.o $(GETMOD) $(MCHDEP) lgstr.o $(MCHCMD)
	$(FCMP) rspec96p.o rsubs.o $(GETMOD) $(MCHDEP) lgstr.o $(MCHCMD) -o rspec96p
	mv rspec96p $(DEST)

sshspec96:	sshspec96.o $(GETMOD) $(MCHDEP) lgstr.o $(MCHCMD)
	$(FCMP) sshspec96.o $(GETMOD) $(MCHDEP) lgstr.o $(MCHCMD) -o sshspec96
	mv sshspec96 $(DEST)

#####
#	TI Media
#####

tspec96:	tspec96.o tgetmod.o $(MCHDEP) lgstr.o $(MCHCMD)
	$(FCMP) tspec96.o tgetmod.o $(MCHDEP) lgstr.o $(MCHCMD) -o tspec96
	mv tspec96 $(DEST)/tspec96

tspec96p:	tspec96p.o tgetmod.o $(MCHDEP) lgstr.o $(MCHCMD)
	$(FCMP) tspec96p.o tgetmod.o $(MCHDEP) lgstr.o $(MCHCMD) -o tspec96p
	mv tspec96p $(DEST)/tspec96p

trftn96:        trftn96.o tgetmod.o sacsubf.o $(MCHDEP) lgstr.o $(MCHCMD)
	$(FCMP) trftn96.o tgetmod.o sacsubf.o $(MCHDEP) lgstr.o $(MCHCMD) -o trftn96
	mv trftn96 $(DEST)/trftn96

hspec96strain:	hspec96strain.o $(GETMOD) $(MCHDEP) lgstr.o $(MCHCMD)
	$(FCMP) hspec96strain.o $(GETMOD) $(MCHDEP) lgstr.o $(MCHCMD) -o hspec96strain
	mv hspec96strain $(DEST)

sshspec96strain:	sshspec96strain.o $(GETMOD) $(MCHDEP) lgstr.o $(MCHCMD)
	$(FCMP) sshspec96strain.o $(GETMOD) $(MCHDEP) lgstr.o $(MCHCMD) -o sshspec96strain
	mv sshspec96strain $(DEST)

hwhole96strain:	hwhole96strain.o $(GETMOD) $(MCHDEP) lgstr.o $(MCHCMD)
	$(FCMP) hwhole96strain.o $(GETMOD) $(MCHDEP) lgstr.o $(MCHCMD) -o hwhole96strain
	mv hwhole96strain $(DEST)

hpulse96strain:	hpulse96strain.o sacsubf.o $(TGETMOD) $(MCHDEP) lgstr.o $(MCHCMD)
	$(FCMP) hpulse96strain.o sacsubf.o $(TGETMOD) $(MCHDEP) lgstr.o $(MCHCMD) -o hpulse96strain
	mv hpulse96strain $(DEST)

tspec96strain:	tspec96strain.o $(TGETMOD) $(MCHDEP) lgstr.o $(MCHCMD)
	$(FCMP) tspec96strain.o $(TGETMOD) $(MCHDEP) lgstr.o $(MCHCMD) -o tspec96strain
	mv tspec96strain $(DEST)


clean:
	rm -f f96subf.f 
	rm -f lgstr.f mchdep.f mnmarg.f mgtarg.f f2csub.f igetmod.f iputmod.f
	rm -f tgetmod.f 
	rm -f sacsubf.f
	rm -f *.o
