##  Makefile
##  ========

#   make description file for test and illustrative applications with new and
#   old GTAP solution program


##	widely used variables
##	---------------------

.SUFFIXES :

SHELL = /usr/bin/sh

ifeq ($(strip $(LF90)),)
LF90 = lf90
endif

ifeq ($(strip $(GPDIR)),)
GPDIR := C:\\gp
endif
gpdir_cygwin := $(shell cygpath -u $$GPDIR)

models = gtap old

sims = dps food ghom income ndparsum new nincpar nqhom ohom oincpar old oqhom

newdat = gddparsum gpincpar


##	ordinary rules
##	--------------

all \
: \
ohom.sl4 \
ghom.sl4 \
old.sl4 \
new.sl4 \
oincpar.sl4 \
nincpar.sl4 \
ndparsum.sl4 \
oqhom.sl4 \
nqhom.sl4 \
income.sl4 \
food.sl4 \
dps.sl4 \

exes : $(addsuffix .exe,$(models))

#	dpsave experiment for new solution program
dps.sl4 : gtap.exe gset.har gpar.har gdat.har

#	food subsidy experiment
food.sl4 : gtap.exe gset.har gpar.har gdat.har

#	income growth experiment
income.sl4 : gtap.exe gset.har gpar.har gdat.har

#	quantity homogeneity test for new solution program
nqhom.sl4 : gtap.exe gset.har gpar.har gdat.har

#	quantity homogeneity test for old solution program
oqhom.sl4 : old.exe gset.har gpar.har odat.har

#	simulation with new model with rescaled DPARSUM
ndparsum.sl4 : gtap.exe gset.har gpar.har gddparsum.har

#	data file with rescaled INCPAR
gddparsum.har : gdat.har gddparsum.sti
	$(gpdir_cygwin)/modhar.exe -sti gddparsum.sti -los gddparsum.log

#	simulation with new model with rescaled INCPAR
nincpar.sl4 : gtap.exe gset.har gpincpar.har gdat.har

#	simulation with old model with rescaled INCPAR
oincpar.sl4 : old.exe gset.har gpincpar.har odat.har

#	params file with rescaled INCPAR
gpincpar.har : gpar.har gpincpar.sti
	$(gpdir_cygwin)/modhar.exe -sti gpincpar.sti -los gpincpar.log

#	simulation with new model
new.sl4 : gtap.exe gset.har gpar.har gdat.har tms.shk

#	simulation with old model
old.sl4 : old.exe gset.har gpar.har odat.har tms.shk

#	homogeneity test for new solution program
ghom.sl4 : gtap.exe gset.har gpar.har gdat.har

#	homogeneity test for old solution program
ohom.sl4 : old.exe gset.har gpar.har odat.har


##	pattern rules
##	-------------

%.exe : %.for
	./ltg.sh $*
	rm $*.f9m

%.for : %.fts %.tab
	$(gpdir_cygwin)/tablo.exe -sti $*.fts -los $*.ftl
	rm $*.ftl $*.inf $*.min

sexe = $(firstword $(filter %.exe, $^))
sim = $(basename $(notdir $@))
%.sl4 : %.cmf
	./$(sexe) -cmf $(sim).cmf -los $(sim).log
	rm $(addprefix $(sim).,eq4 har log slc)


##	rules of cleanliness
##	--------------------

sim_exts = SLI SOL sl4

sim_ered =  SLI SOL

dat_exts = har log

dat_ered = log

models = gtap old

mod_exts = axs axt exe

clean :
	for m in ${models}; do \
		for e in ${mod_exts}; do \
			[ ! -e $$m.$$e ] || rm $$m.$$e; \
		done; \
	done
	for s in ${sims}; do \
		for e in ${sim_exts}; do \
			[ ! -e $$s.$$e ] || rm $$s.$$e; \
		done; \
	done
	for d in $(newdat); do \
		for e in ${dat_exts}; do \
			[ ! -e $$d.$$e ] || rm $$d.$$e; \
		done; \
	done

simclean :
	for s in ${sims}; do \
		for e in ${sim_exts}; do \
			[ ! -e $$s.$$e ] || rm $$s.$$e; \
		done; \
	done
	for d in $(newdat); do \
		for e in ${dat_ered}; do \
			[ ! -e $$d.$$e ] || rm $$d.$$e; \
		done; \
	done

tidy :
	for s in ${sims}; do \
		for e in ${sim_ered}; do \
			[ ! -e $$s.$$e ] || rm $$s.$$e; \
		done; \
	done
	for d in $(newdat); do \
		for e in ${dat_ered}; do \
			[ ! -e $$d.$$e ] || rm $$d.$$e; \
		done; \
	done


##  end
##  ---
##  vi:comments=f\:##,\:#:noexpandtab:textwidth=0
