# makefile for hydra
SHELL = /bin/sh
ROOT = /Users/petert/sam/tree/MergerTree

# compiler and flags 
CC = gcc-5
FC = gfortran
#FFLAGS = -g -Wall -fbounds-check -fbacktrace -fno-underscoring
FFLAGS = -g -Wall -Wno-c-binding-type -fbounds-check -fbacktrace
CFLAGS = -g -Wall
INC = -I/sw/include -Jmodules
#LIBS = -L/sw/lib -lhdf5 -lhdf5_hl -lhdf5_fortran -lhdf5hl_fortran
LIBS = -L ${ROOT}/Library -lmt -L/sw/lib -lhdf5 -lhdf5_fortran -lhdf5_hl 

# read in make rules
include makerules

# search path for source files (eliminates need for logical links)
vpath %.f90 .
vpath %.mod modules /sw/include
vpath %.o objects
vpath %.a ../lib

all: dumptree readtree

dumptree: dumptree.o read_mock_data.o mt_close.o mt_dump_mergertree.o mt_dump_snaptable.o \
	mt_open.o mt_read_mergertree.o mt_read_snaptable.o mt_tidy.o 
	cd objects; \
	$(FC) -o dumptree $(FFLAGS) dumptree.o read_mock_data.o mt_close.o \
	mt_dump_mergertree.o mt_dump_snaptable.o mt_open.o mt_read_mergertree.o \
	mt_read_snaptable.o mt_tidy.o mt.o mt_data.o $(LIBS); \
	mv dumptree ../

readtree: readtree.o mt_close.o mt_open.o mt_read_mergertree.o mt_read_snaptable.o mt_tidy.o
	cd objects; \
	$(FC) -o readtree $(FFLAGS) readtree.o mt_close.o mt_open.o mt_read_mergertree.o \
	mt_read_snaptable.o mt_tidy.o mt.o mt_data.o $(LIBS); \
	mv readtree ../

.PHONY: clean
clean:
	/bin/rm -rf tmp/* modules/* objects/*

.PHONY: purge
purge:
	make clean
	/bin/rm -rf *~ dumptree readtree

# list of dependencies for object files
create_mock_data.o: create_mock_data.f90 mt_data.mod
dumptree.o: dumptree.f90 mt.mod mt_data.mod
mt_close.o: mt_close.f90 mt.mod mt_data.mod
mt_dump_mergertree.o: mt_dump_mergertree.f90 mt.mod mt_data.mod
mt_dump_snaptable.o: mt_dump_snaptable.f90 mt.mod mt_data.mod
mt_read_mergertree.o: mt_read_mergertree.f90 mt.mod mt_data.mod
mt_read_snaptable.o: mt_read_snaptable.f90 mt.mod mt_data.mod
mt_open.o: mt_open.f90 mt.mod mt_data.mod
readtree.o: readtree.f90 mt.mod mt_data.mod

# list of dependencies for mod files
mt.mod mt.o : mt.f90
mt_data.mod mt_data.o: mt_data.f90
