# makefile for hydra
SHELL = /bin/sh
ROOT = ..

# compiler and flags 
CC = gcc-5
CFLAGS = -g -Wall
INC = -I/sw/include -Jmodules
LIBS = -L${ROOT}/Library -lmt -L/sw/lib -lhdf5 -lhdf5_hl
OBJECTS=objects

# Compile-time options
OPT =
#OPT += -DMTTABLE

$(OBJECTS)/%.o : %.c
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $(OPT) $(INC) $< -o $(OBJECTS)/$*.o

# search path for source files (eliminates need for logical links)
vpath %.o $(OBJECTS)
vpath %.a ../lib

all: readtree

DTREESRCS = dumptree.c read_mock_data.c mt_read_mergertree.c mt_read_snaptable.c\
	mt_close.c mt_open.c mt_dump_mergertree.c mt_dump_snaptable.c mt_tidy.c
DTREEOBJS = $(DTREESRCS:%.c=$(OBJECTS)/%.o)

dumptree: $(DTREEOBJS)
	$(CC) -o dumptree $(CFLAGS) $(LIBS) $(DTREEOBJS)

RTREESRCS = readtree.c mt_close.c mt_open.c \
	mt_read_mergertree.c mt_read_snaptable.c \
	mt_tidy.c
RTREEOBJS = $(RTREESRCS:%.c=$(OBJECTS)/%.o)

readtree: $(RTREEOBJS)
	$(CC) -o readtree $(CFLAGS) $(RTREEOBJS) $(LIBS)

.PHONY: clean
clean:
	/bin/rm -rf tmp/* $(OBJECTS)/*

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

# list of dependencies for object files
$(OBJECTS)/create_mock_data.o: create_mock_data.c mt_data.h
$(OBJECTS)/mt_close.o: mt_close.c mt.h mt_data.h
$(OBJECTS)/mt_dump_mergertree: mt_dump_mergertree.c mt.h mt_data.h
$(OBJECTS)/mt_dump_snaptable.o: mt_dump_snaptable.c mt.h mt_data.h
$(OBJECTS)/mt_read_mergertree.o: mt_read_mergertree.c mt.h mt_data.h
$(OBJECTS)/mt_read_snaptable.o: mt_read_snaptable.c mt.h mt_data.h
$(OBJECTS)/mt_open.o: mt_open.c mt.h mt_data.h
$(OBJECTS)/mt_tidy.o: mt_tidy.c mt_data.h
$(OBJECTS)/readtree.o: readtree.c mt.h mt_data.h
$(OBJECTS)/read_test_data.o: read_test_data.c mt_data.h
$(OBJECTS)/readJulian.o: readJulian.c mt.h julian_data.h

