CC       = g++
SDIR     = ../src
LIBSCL   = ../../libscl/gpp
LIBMCMC  = ../../libmcmc
IDIRS    = -I. -I$(SDIR) -I$(LIBMCMC) -I$(LIBSCL)
LDIRS    = -L$(LIBMCMC) -L$(LIBSCL)
CFLAGS   = -O -Wall -c  $(IDIRS)
LFLAGS   = $(LDIRS) -lmcmc -lscl -lm

OBJECTS = habit_usrmod.o prop_defs.o

HEADERS = habit_main.h $(SDIR)/habit_usrmod.h $(SDIR)/prop_defs.h

LIBRARIES = libscl.a libmcmc.a

PROGRAMS = habit_main # best ends debug

all: $(LIBRARIES) $(PROGRAMS)

libscl.a :
	make -C $(LIBSCL)

libmcmc.a :
	make -C $(LIBMCMC)

habit_main	: habit_main.o $(OBJECTS) $(HEADERS) $(LIBRARIES)
	$(CC) -o habit_main habit_main.o $(OBJECTS) $(LFLAGS)

best	: best.o $(OBJECTS) $(HEADERS) $(LIBRARIES)
	$(CC) -o best best.o $(OBJECTS) $(LFLAGS)

ends	: ends.o $(OBJECTS) $(HEADERS) $(LIBRARIES)
	$(CC) -o ends ends.o $(OBJECTS) $(LFLAGS)

debug	: debug.o $(OBJECTS) $(HEADERS) $(LIBRARIES)
	$(CC) -o debug debug.o $(OBJECTS) $(LFLAGS)

habit_main.o : $(SDIR)/habit_main.cpp $(HEADERS)
	$(CC) $(CFLAGS) $(SDIR)/habit_main.cpp

best.o : best.cpp $(HEADERS)
	$(CC) $(CFLAGS) best.cpp

ends.o : ends.cpp $(HEADERS)
	$(CC) $(CFLAGS) ends.cpp

debug.o : debug.cpp $(HEADERS)
	$(CC) $(CFLAGS) debug.cpp

habit_usrmod.o : $(SDIR)/habit_usrmod.cpp $(HEADERS)
	$(CC) $(CFLAGS) $(SDIR)/habit_usrmod.cpp

prop_defs.o : $(SDIR)/prop_defs.cpp $(HEADERS)
	$(CC) $(CFLAGS) $(SDIR)/prop_defs.cpp

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

veryclean	:
	rm -f *.o core core.* 
	rm -f habit_main best ends debug
