ifndef F90C
F90C=gfortran
endif

ifndef UMFPACK_LIB_DIR
$(error "need UMFPACK_LIB_DIR to be set in the environment pointing to an installation of UMFPACK v 2.2")
endif

TDIRS=$(sort $(dir $(wildcard */)))

TDIRS_ALL=$(addsuffix _all, $(TDIRS))

all: driver $(TDIRS_ALL)

driver: solve.o test.o head.o driver.o 
	${F90C} -o $@ $^ -L${UMFPACK_LIB_DIR} -lumfpack -lblas
%.o : %.f90
	${F90C} -o $@ -c $< 

define generateAllDir
 $(1)_all: 
	cd $(1) && $(MAKE) 
endef   

$(foreach TDIR, $(TDIRS), $(eval $(call generateAllDir, $(TDIR))))

TDIRS_CLEAN=$(addsuffix _clean, $(TDIRS))
clean: $(TDIRS_CLEAN)
	rm -f *.o *.mod driver  

define generateCleanDir
 $(1)_clean: 
	cd $(1) && $(MAKE) clean
endef   

$(foreach TDIR, $(TDIRS), $(eval $(call generateCleanDir, $(TDIR))))

.PHONY: all $(TDIRS_ALL) clean $(TDIRS_CLEAN)

