# 
# Makefile to build STEPCoulomb forecast model executables

DATA = master_file_GNS.txt

SUBDIRS = OpenSHA

TARGET ?= all

###  Build rules
.PHONY: default all $(SUBDIRS) install check clean testclean


###### Default Rules (no target is provided)
default: all

ifort_VERSION = ifort.version
farfalle_PROGRAM = farfalle_3.exe
read_canterbury_m5_source_PROGRAM = CSEPCoulomb

bin_PROGRAMS = $(farfalle_PROGRAM) $(read_canterbury_m5_source_PROGRAM)

farfalle_SOURCES = farfalle_3_source/auxiliary.F90 \
                   farfalle_3_source/COULOMB.F90 \
                   farfalle_3_source/CROSS.F90 \
                   farfalle_3_source/DC3D.F90 \
                   farfalle_3_source/DOT.F90 \
                   farfalle_3_source/EIGENJ.F90 \
                   farfalle_3_source/Gp2utm.F90 \
                   farfalle_3_source/locstrcmpnt.F90 \
                   farfalle_3_source/main.F90 \
                   farfalle_3_source/NORM2SD.F90 \
                   farfalle_3_source/OPTIMAL.F90 \
                   farfalle_3_source/pianiconiugati.F90 \
                   farfalle_3_source/PRINCIP.F90 \
                   farfalle_3_source/sd2locaxes.F90 \
                   farfalle_3_source/SD2NORM.F90 \
                   farfalle_3_source/SHSORT.F90 \
                   farfalle_3_source/stress2trac.F90 \
                   farfalle_3_source/UTM2GP.F90 \
                   farfalle_3_source/VECEQUAL.F90 \
                   farfalle_3_source/VECG2LOC.F90
read_canterbury_m5_source_SOURCES = precmod.f90 \
                                    stringmod.f90 \
                                    escribe.F90 \
                                    escribe_slip.F90 \
                                    main.F90

### all rules
all: $(bin_PROGRAMS)
	ifort --version > $(ifort_VERSION)
	@for dir in $(SUBDIRS); do \
	        pushd $$dir; $(MAKE) all; popd; \
    done

### Build rules for target programs
$(farfalle_PROGRAM): $(farfalle_SOURCES)
	ifort -o $@ $^

$(read_canterbury_m5_source_PROGRAM): $(read_canterbury_m5_source_SOURCES)
	ifort -o $@ $^

###### Install Rules
install: all
	@for dir in $(SUBDIRS); do \
		pushd $$dir; $(MAKE) install; popd; \
	done
ifeq '$(DESTDIR)' ''
else
	@echo destdir=$(DESTDIR)/src/SCECModels/NewZealand/src/STEPCoulombModel
	mkdir -p $(DESTDIR)/src/SCECModels/NewZealand/src/STEPCoulombModel;
	cp $(DATA) $(bin_PROGRAMS) $(ifort_VERSION) $(DESTDIR)/src/SCECModels/NewZealand/src/STEPCoulombModel;
endif

### Intall rules
install: all

### Clean rules
clean:
	rm -f $(bin_PROGRAMS)
	@for dir in $(SUBDIRS); do \
		cd $$dir; $(MAKE) clean; cd $(PWD); \
	done

### Test Clean rules - do nothing
testclean:

### Check rules - do nothing
check: install
	@for dir in $(SUBDIRS); do \
		pushd $$dir; $(MAKE) check; popd; \
	done

