CC = g++
UP         = ../common

#CFLAGS = -g -Wall -D_GLIBCXX_DEBUG -I$(UP) #-fno-strict-aliasing  -fomit-frame-pointer -static
CFLAGS = -g -O3 -Wall -I$(UP) #-fno-strict-aliasing  -fomit-frame-pointer -static
#CFLAGS = -g -O3 -pg -Wall -I$(UP) #-fno-strict-aliasing  -fomit-frame-pointer -D NDEBUG -static
#CFLAGS = -g -O3 -Wall -I$(UP) #-fno-strict-aliasing  -fomit-frame-pointer -D NDEBUG -static

EXEC_FILE = stlsat

EXEC_FILES = stlsat\
	     stlsat.exe\

SOLVER_SRC = manager.cpp\
	     utils.cpp\
	     watched_list.cpp\
	     solver.cpp\
	     heap.cpp\
	     main.cpp\
	     kb_management.cpp\

SOLVER_OBJS=$(SOLVER_SRC:.cpp=.o)

HEADERS = constants.h structures.h 

.PHONY: clean all


stlsat: $(SOLVER_OBJS) UPTesting.o
	   $(CC) $(CFLAGS) -o $(EXEC_FILE) $(SOLVER_OBJS) UPTesting.o

UPTesting.o: $(UP)/UPTesting.h $(UP)/UPTesting.cpp
	$(CC) $(CFLAGS) -c $(UP)/UPTesting.cpp -o UPTesting.o

.cpp.o:
	$(CC) $(CFLAGS) -c $< 

all: stlsat

install:
	mv stlsat ../bin/stlsat
clean: 
	rm -f *.o $(EXEC_FILES)
deps: 
	$(CC) -I$(UP) -MM $(SOLVER_SRC) $<

manager.o: manager.cpp structures.h constants.h ../common/UPTesting.h \
  ../common/AtomNameMap.h
utils.o: utils.cpp structures.h constants.h ../common/UPTesting.h \
  ../common/AtomNameMap.h
watched_list.o: watched_list.cpp structures.h constants.h \
  ../common/UPTesting.h ../common/AtomNameMap.h
solver.o: solver.cpp structures.h constants.h ../common/UPTesting.h \
  ../common/AtomNameMap.h
heap.o: heap.cpp structures.h constants.h ../common/UPTesting.h \
  ../common/AtomNameMap.h
main.o: main.cpp structures.h constants.h ../common/UPTesting.h \
  ../common/AtomNameMap.h
kb_management.o: kb_management.cpp structures.h constants.h \
  ../common/UPTesting.h ../common/AtomNameMap.h
