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

HEADERS = preimage_norm.h moment_norm.h

OBJECTS  = tree_policy.o tree_sim.o rom.o

PROGRAMS = pedist peinv peplt

all: $(PROGRAMS)

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

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

peinv : peinv.o $(OBJECTS) $(HEADERS)
	$(CXX) -o peinv peinv.o $(OBJECTS) $(LDFLAGS) 

peinv.o : $(SDIR)/peinv.cpp $(HEADERS)
	$(CXX) $(CXXFLAGS) $(SDIR)/peinv.cpp

peplt : peplt.o $(OBJECTS) $(HEADERS)
	$(CXX) -o peplt peplt.o $(OBJECTS) $(LDFLAGS) 

peplt.o : $(SDIR)/peplt.cpp $(HEADERS)
	$(CXX) $(CXXFLAGS) $(SDIR)/peplt.cpp

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

tree_policy.o : $(TREESRC)/tree_policy.cpp
	$(CXX) $(CXXFLAGS) $(TREESRC)/tree_policy.cpp

tree_sim.o : $(TREESRC)/tree_sim.cpp 
	$(CXX) $(CXXFLAGS) $(TREESRC)/tree_sim.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)
