# Alter these parameters to point to where things should be installed

BASE = /home/charissa/cascade
BIN = $(BASE)/bin
LIB = $(BASE)/lib

# End of configuration parameters

.SUFFIXES: .prj

.f.prj:
	ftnchek -project -noextern -library -columns=132 -portability $<

FFLAGS = -e -O4
LDFLAGS = -lV77
LIBRARIES =

CASCADEOBJS = fiscascade.o functn.o ground.o sierkbar.o fissn.o lildeck.o \
	cps.o leveld.o fndfusion.o barfit.o dpmpar.o enorm.o lmpar.o qrfac.o \
	qrsolv.o

LILITAOBJS = fislilita.o

FUNCEVALOBJS = funceval.o functn.o ground.o barfit.o lildeck.o

CASCADEPRJS = $(CASCADEOBJS:.o=.prj)
LILITAPRJS = $(LILITAOBJS:.o=.prj)
FUNCEVALPRJS = $(FUNCEVALOBJS:.o=.prj)

TARGETS = cascade lilita funceval runcascade runlilita tidycascade

all: $(TARGETS)

cascade : $(CASCADEOBJS)
	f77 -o cascade $(LDFLAGS) $(CASCADEOBJS) $(LIBRARIES)

lilita: $(LILITAOBJS)
	f77 -o lilita $(LDFLAGS) $(LILITAOBJS) $(LIBRARIES)

funceval: $(FUNCEVALOBJS)
	f77 -o funceval $(LDFLAGS) $(FUNCEVALOBJS) $(LIBRARIES)

check: cascadecheck lilitacheck funcevalcheck

cascadecheck: $(CASCADEPRJS)
	ftnchek -portability $(CASCADEPRJS)

lilitacheck: $(LILITAPRJS)
	ftnchek $(LILITAPRJS)

funcevalcheck: $(FUNCEVALPRJS)
	ftnchek $(FUNCEVALPRJS)

install: all
	mv $(TARGETS) $(BIN)
	chmod +x $(BIN)/runcascade $(BIN)/runlilita $(BIN)/tidycascade

clean:
	rm -f $(CASCADEOBJS)
	rm -f $(LILITAOBJS)
	rm -f $(FUNCEVALOBJS)
	rm -f $(CASCADEPRJS)
	rm -f $(LILITAPRJS)
	rm -f $(FUNCEVALPRJS)
	rm -f fiscascade.casmas fiscascade.castrans
	rm -f funceval.masstab functn.masstab lildeck.masstab
	rm -f fislilita.lildat
	rm -f core *~ *%

# Location dependencies

fiscascade.o: fiscascade.casmas
fiscascade.o: fiscascade.castrans
funceval.o: funceval.masstab
functn.o: functn.masstab
lildeck.o: lildeck.masstab
fislilita.o: fislilita.lildat

fiscascade.casmas: Makefile
	echo "      OPEN(UNIT=10,NAME='$(LIB)/casmas.asc',TYPE='OLD')" > $@

fiscascade.castrans: Makefile
	echo "      OPEN(UNIT=11,NAME='$(LIB)/castrans.sun',TYPE='OLD'," > $@
	echo "     &FORM='unformatted',RECL=26644,ACCESS='DIRECT')" >> $@

funceval.masstab: Makefile
	echo "      OPEN(UNIT=66,FILE='$(LIB)/MASSTAB.DAT'," > $@
	echo "     &ACCESS='DIRECT',RECORDTYPE='FIXED',RECL=168," >> $@
	echo "     &TYPE='OLD',READONLY,ERR=40)" >> $@

functn.masstab: Makefile
	echo "      OPEN(UNIT=66,FILE='$(LIB)/MASSTAB.DAT'," > $@
	echo "     &ACCESS='DIRECT',RECORDTYPE='FIXED',RECL=168," >> $@
	echo "     &TYPE='OLD',READONLY,err=10)" >> $@

lildeck.masstab: Makefile
	echo "      OPEN(UNIT=66,FILE='$(LIB)/MASSTAB.DAT'," > $@
	echo "     &ACCESS='DIRECT',RECORDTYPE='FIXED',RECL=168," >> $@
	echo "     &TYPE='OLD',READONLY,err=999)" >> $@

fislilita.lildat: Makefile
	(for i in 19 27 28 29 ; do \
	echo "      open(unit=$$i,file='$(LIB)/lil$$i.dat'," ; \
	echo "     &READONLY,STATUS='OLD')" ; done ) > $@

runcascade: runcascade.in
	sed 's,%%%,$(LIB),' runcascade.in > $@
	chmod +x $@

runlilita: runlilita.in
	cp runlilita.in $@
	chmod +x $@

tidycascade: tidycascade.in
	cp tidycascade.in $@
	chmod +x $@
