CXX      = g++
SDIR     = .
DCFSRC  = ../dcfsrc
ISCL     = $(HOME)/lib/libscl/gpp
LSCL     = $(HOME)/lib/libscl/gpp
CXXFLAGS = -O2 -Wall -c -I$(SDIR) -I$(DCFSRC) -I$(ISCL)
LDFLAGS  = -lm -L$(LSCL) -lscl             

HEADERS = var1EXX.h lprior.h crra_mf.h

OBJECTS  = var1EXX.o lprior.o crra_mf.o

PROGRAMS = pedist_3d pedist_3d_alt peden_3d normal heatmap

all: $(PROGRAMS)

pedist_3d : pedist_3d.o $(OBJECTS)
	$(CXX) -o pedist_3d pedist_3d.o $(OBJECTS) $(LDFLAGS) 

pedist_3d.o : $(SDIR)/pedist_3d.cpp
	$(CXX) $(CXXFLAGS) $(SDIR)/pedist_3d.cpp

pedist_3d_alt : pedist_3d_alt.o $(OBJECTS)
	$(CXX) -o pedist_3d_alt pedist_3d_alt.o $(OBJECTS) $(LDFLAGS) 

pedist_3d_alt.o : $(SDIR)/pedist_3d_alt.cpp
	$(CXX) $(CXXFLAGS) $(SDIR)/pedist_3d_alt.cpp

peden_3d : peden_3d.o $(OBJECTS)
	$(CXX) -o peden_3d peden_3d.o $(OBJECTS) $(LDFLAGS) 

peden_3d.o : $(SDIR)/peden_3d.cpp
	$(CXX) $(CXXFLAGS) $(SDIR)/peden_3d.cpp

normal : normal.o $(OBJECTS)
	$(CXX) -o normal normal.o $(OBJECTS) $(LDFLAGS) 

normal.o : $(SDIR)/normal.cpp
	$(CXX) $(CXXFLAGS) $(SDIR)/normal.cpp

heatmap : heatmap.o $(OBJECTS)
	$(CXX) -o heatmap heatmap.o $(OBJECTS) $(LDFLAGS) 

heatmap.o : $(SDIR)/heatmap.cpp
	$(CXX) $(CXXFLAGS) $(SDIR)/heatmap.cpp

var1EXX.o : $(DCFSRC)/var1EXX.cpp
	$(CXX) $(CXXFLAGS) $(DCFSRC)/var1EXX.cpp

lprior.o : $(DCFSRC)/lprior.cpp
	$(CXX) $(CXXFLAGS) $(DCFSRC)/lprior.cpp

crra_mf.o : $(DCFSRC)/crra_mf.cpp
	$(CXX) $(CXXFLAGS) $(DCFSRC)/crra_mf.cpp

clean :
	rm -f *.o
	rm -f core core.*

dirclean :
	rm -f *.o
	rm -f core core.*
	rm -f $(PROGRAMS)

veryclean :
	rm -f *.o
	rm -f core core.*
	rm -f $(PROGRAMS)
