# Copyright (c) 2016 Sequence Logic, Inc. All rights reserved # Created August 2013 by Kendrick Webster # # K2Daemon/makefile # This will build for Linux and OSX # CC = gcc CPP = g++ LD = g++ MD5 = md5 CFLAGS = -Wall -m64 -Wfatal-errors -Wno-unused-parameter -DMONGO_HAVE_STDINT INCLUDES = -I../libeye -I../thirdparty/openssl/include -I../cppboost -I/usr/local/include -I/usr/local/include/libmongoc-1.0 -I/usr/local/include/libbson-1.0 LIBDIRS = -L../libeye/lib/${PLATFORM} -L/usr/local/lib -L../thirdparty/openssl/lib/${PLATFORM} LIBHEADER = ../libeye/eyeconstants.h ../libeye/eyelog.h LIBS = -ldl -lmongoc-1.0 -lbson-1.0 -leye -lz -lcrypto UNAME := $(shell uname) ifeq (${UNAME},Darwin) PLATFORM=Darwin LIBEXTN = .dylib LIBS += INCLUDES += -I/opt/local/include LIBDIRS += -L/opt/local/lib JNI_INCLUDE = -I${JAVA_HOME}/include -I${JAVA_HOME}/include/darwin CFLAGS += -D${UNAME} ${INCLUDES} CPPFLAGS = ${CFLAGS} -std=gnu++11 LDFLAGS = -std=gnu++11 else PLATFORM=lin64 LIBEXTN = .so LIBS += -lrt -lm -static-libstdc++ INCLUDES += JNI_INCLUDE = -I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux CFLAGS += -O2 -DLIN64 -fPIC -pthread ${INCLUDES} CPPFLAGS = ${CFLAGS} -Wno-unused-local-typedefs -std=c++11 LDFLAGS = -m64 -fPIC -std=c++11 MD5 = openssl md5 endif # target for 'all' or 'compile' TARGETNAME = K2Daemon TARGET = bin/${PLATFORM}/${TARGETNAME} COMMON_HEADERS = ${LIBHEADER} global.h LogTrace.h Hash.h LogMemstats.h OBJS = obj/${PLATFORM}/main.o \ obj/${PLATFORM}/Version.o \ obj/${PLATFORM}/LogTrace.o \ obj/${PLATFORM}/LogMemstats.o \ obj/${PLATFORM}/Hash.o \ obj/${PLATFORM}/ClientMap.o \ obj/${PLATFORM}/ClientCache.o \ obj/${PLATFORM}/OfficeSubscriptions.o \ obj/${PLATFORM}/MongoDB.o \ obj/${PLATFORM}/MongoNotifyQueue.o \ obj/${PLATFORM}/MongoDeviceStatus.o obj/${PLATFORM}/main.o : main.cpp ${COMMON_HEADERS} ClientCache.h MongoDB.h MongoNotifyQueue.h Version.h ${CPP} ${CPPFLAGS} -c main.cpp -o $*.o obj/${PLATFORM}/Version.o : Version.cpp ${COMMON_HEADERS} Version.h ${CPP} ${CPPFLAGS} -c Version.cpp -o $*.o obj/${PLATFORM}/LogTrace.o : LogTrace.cpp ${COMMON_HEADERS} ${CPP} ${CPPFLAGS} -c LogTrace.cpp -o $*.o obj/${PLATFORM}/LogMemstats.o : LogMemstats.cpp ${COMMON_HEADERS} ClientMap.h OfficeSubscriptions.h Version.h ${CPP} ${CPPFLAGS} -c LogMemstats.cpp -o $*.o obj/${PLATFORM}/Hash.o : Hash.c Hash.h ${CPP} ${CFLAGS} -c Hash.c -o $*.o obj/${PLATFORM}/ClientMap.o : ClientMap.cpp ${COMMON_HEADERS} ClientMap.h ${CPP} ${CPPFLAGS} -c ClientMap.cpp -o $*.o obj/${PLATFORM}/ClientCache.o : ClientCache.cpp ${COMMON_HEADERS} ClientCache.h ClientMap.h MongoDB.h MongoNotifyQueue.h MongoDeviceStatus.h OfficeSubscriptions.h Version.h ${CPP} ${CPPFLAGS} -c ClientCache.cpp -o $*.o obj/${PLATFORM}/OfficeSubscriptions.o : OfficeSubscriptions.cpp ${COMMON_HEADERS} OfficeSubscriptions.h ${CPP} ${CPPFLAGS} -c OfficeSubscriptions.cpp -o $*.o obj/${PLATFORM}/MongoDB.o : MongoDB.cpp ${COMMON_HEADERS} MongoDB.h ${CPP} ${CPPFLAGS} -c MongoDB.cpp -o $*.o obj/${PLATFORM}/MongoNotifyQueue.o : MongoNotifyQueue.cpp ${COMMON_HEADERS} MongoDB.h MongoNotifyQueue.h ${CPP} ${CPPFLAGS} -c MongoNotifyQueue.cpp -o $*.o obj/${PLATFORM}/MongoDeviceStatus.o : MongoDeviceStatus.cpp ${COMMON_HEADERS} MongoDB.h MongoDeviceStatus.h ${CPP} ${CPPFLAGS} -c MongoDeviceStatus.cpp -o $*.o ${TARGET} : ${OBJS} mkdir -p bin/${PLATFORM} ${LD} -o ${TARGET} ${OBJS} ${LIBDIRS} ${LDFLAGS} ${LIBS} ${MD5} ${TARGET} > ${TARGET}.md5 .PHONY: showconfig showconfig: init @echo showconfig - use make all/clean to actually build something @echo PLATFORM........ ${PLATFORM} @echo JAVA_HOME....... ${JAVA_HOME} @echo CFLAGS.......... ${CFLAGS} @echo CPPFLAGS........ ${CPPFLAGS} @echo LDFLAGS......... ${LDFLAGS} @echo LIBDIRS......... ${LIBDIRS} @echo LIBS............ ${LIBS} @echo CC.............. ${CC} @echo CPP............. ${CPP} @echo LD.............. ${LD} @echo MD5............. ${MD5} .PHONY: init init: @echo platform.mk init mkdir -p obj/${PLATFORM} mkdir -p obj/${PLATFORM}/client mkdir -p lib/${PLATFORM} mkdir -p bin/${PLATFORM} mkdir -p classes export LANG=en_US.US-ASCII .PHONY: clean clean : showconfig @echo clean rm -f ${TARGET} ${OBJS} rm -rf bin/${PLATFORM} .PHONY: all all: showconfig init ${TARGET} @echo all .PHONY: compile compile: all @echo compile docs: ifeq (${UNAME},Linux) doxygen K2Daemon.dox cd lib/docs/html; jar -cvf ../K2Daemon.docs.jar * endif .PHONY: install install: all docs @echo install .PHONY: test test: @echo No tests yet for Daemon .PHONY: package package: @echo "Nothing to package"