Sleds/K2Daemon/makefile

159 lines
4.6 KiB
Makefile
Raw Normal View History

2025-03-13 21:28:38 +00:00
# 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"