SOURCES := main.cpp jsoncpp.cpp route.cpp settings.cpp genPDF.cpp key.cpp 
CSOURCES := url.c
SVCSRC := services/authServices.cpp services/streamServices.cpp services/router.cpp services/listServices.cpp services/reportServices.cpp services/linkServices.cpp
SVCHDR := services/authServices.h services/streamServices.h services/router.h services/listServices.h services/linkServices.h
CCTSRC := contact/email.cpp contact/apn.cpp
CCTHDR := contact/email.h contact/apn.h
SQLSRC := sql/sql.cpp sql/streamSQL.cpp sql/URLReportSQL.cpp sql/sqlDist.cpp sql/populateSQL.cpp sql/linksSQL.cpp sql/pn.cpp
SQLHDR := sql/sql.h 
OBJS := $(SOURCES:.cpp=.o)  $(CSOURCES:.c=.o) $(SVCSRC:.cpp=.o) $(SQLSRC:.cpp=.o) $(CCTSRC:.cpp=.o)
HEADERS := route.h settings.h url.h genPDF.h key.h $(SVCHDR) $(CCTHDR) $(SQLHDR)
INC := -I./libs/ -I./libs/json/ -I./libs/mysql-connector-c-6.1.6-src/include/ -I./libs/mysql-connector-c++-1.1.6/ -I./libs/mysql-connector-c++-1.1.6/driver/ -I./libs/boost_1_60_0/ -I./libs/openssl-1.0.2e/include/ -I./libs/libharu-libharu-d84867e/include/ -I./services -I./sql -I./contact -I. -I./libdistance-0.2.2 -I./mimetic-0.9.8 -I./curl-7.49.1/include/
CFLAGS := -g -std=c++11 -m64 -fpermissive
LIBS := -lmysqlclient_r -lmysqlcppconn-static  -lboost_thread -lboost_random -lcrypto -lssl  -lboost_random -lboost_system -lhpdfs -ldistance ./mimetic-0.9.8/mimetic/.libs/libmimetic.a -lcurl -lcurlpp
LIBPATHS := -L./libs/mysql-connector-c-6.1.6-src/libmysql/ -L./libs/mysql-connector-c++-1.1.6/cppconn/ -L./libs/mysql-connector-c++-1.1.6/driver/ -L./libs/boost_1_60_0/stage/lib/ -L./libs/openssl-1.0.2e/ -L./libs/libharu-libharu-d84867e/src/ -Llibdistance-0.2.2/ 

all: sql services zzio install database contact
install: deploy settings
rebuild: clean all

# Compile the binary 't' by calling the compiler with cflags, lflags, and any libs (if defined) and the list of objects.
zzio: $(OBJS) $(HEADERS)
	$(CXX) $(CFLAGS) -o zzio $(OBJS) $(LIBS) $(LIBPATHS) $(LFLAGS) 

services/%.o: services/%.cpp 
	$(CXX) -c $(INC) -o $@ $< $(CFLAGS) 

sql/%.o: sql/%.cpp 
	$(CXX) -c $(INC) -o $@ $< $(CFLAGS) 

contact/%.o: contact/%.cpp 
	$(CXX) -c $(INC) -o $@ $< $(CFLAGS) 

# Get a .o from a .cpp by calling compiler with cflags and includes (if defined)
.cpp.o:
	$(CXX) $(CFLAGS) $(INCLUDES) $(INC) -c $<

database: 
	mysqldump -uroot -pItadisbm1 --no-data zzio > db/schema.sql

deploy:
	cp zzio ../htdocs/svc/service.cgi
	cp zzio ./services/
	cp zzio ./sql/
	cp zzio ./contact/

settings:
	cp *.json ../conf

clean:
	\rm services/*.o *.o zzio db/*
