Sleds/libeye/Makefile.orig

334 lines
11 KiB
Makefile

# EyeContainer/Makefile
# This will build Darwin or Linux
# iOS uses XCode, Android uses .../jni/Android.mk, Windows uses Nmakefile or VisualStudio
<<<<<<< HEAD
#UNAME := $(shell uname)
include ../masterbuild/common.mk
=======
MVN_VERSION=1.2.8
UNAME := $(shell uname)
>>>>>>> cloud_release/1.2.8
ifeq (${UNAME},Darwin)
PLATFORM=Darwin
CC = gcc
CPP = g++
LD = g++
LIBEXTN = .dylib
INCLUDES = -I../thirdparty/openssl/include
JNI_INCLUDE = -I${JAVA_HOME}/include -I${JAVA_HOME}/include/darwin
CFLAGS = -g -Wall -pthread -m64 -Wno-deprecated-declarations -D${UNAME} -std=gnu++11 ${INCLUDES}
else
PLATFORM=lin64
CC = gcc
CPP = g++
LD = g++
LIBEXTN = .so
INCLUDES = -I../thirdparty/openssl/include
JNI_INCLUDE = -I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux
CFLAGS = -g -DDEBUG -DLIN64 -Wall -pthread -m64 -fPIC -std=c++11 ${INCLUDES}
OPTCFLAGS = -O2 -DLIN64 -Wall -pthread -m64 -fPIC -std=c++11
PROFCFLAGS = -g -pg -Wall -pthread -m64 -fPIC -std=c++11
LDFLAGS = -g -m64 -fPIC -std=c++11
MD5 = openssl md5
endif
LIBDIRS = -Llib/${PLATFORM} -Lzlib/${PLATFORM} -L../thirdparty/openssl/lib/${PLATFORM}
LINKLIBS = -lz -lcrypto -lm -lpthread -lstdc++
EXECLIBS = -leye -lcrypto -ldl -lm -lpthread
# linking stuff
LIBS = lib/${PLATFORM}/libeye${LIBEXTN} lib/${PLATFORM}/libeye.a
ZLIB = lib/${PLATFORM}/libz${LIBEXTN} lib/${PLATFORM}/libz.a
JAR = lib/eye-${MVN_VERSION}.jar
OBJS = obj/${PLATFORM}/eyeball.o \
obj/${PLATFORM}/eyebytes.o \
obj/${PLATFORM}/eyeconnection.o \
obj/${PLATFORM}/eyecontainer.o \
obj/${PLATFORM}/eyedb.o \
obj/${PLATFORM}/eyedirectory.o \
obj/${PLATFORM}/eyedrbg.o \
obj/${PLATFORM}/eyeencrypteddb.o \
obj/${PLATFORM}/eyeinterface.o \
obj/${PLATFORM}/eyejni.o \
obj/${PLATFORM}/eyejson.o \
obj/${PLATFORM}/eyelog.o \
obj/${PLATFORM}/eyenet.o \
obj/${PLATFORM}/eyering.o \
obj/${PLATFORM}/eyestream.o \
obj/${PLATFORM}/eyetime.o \
obj/${PLATFORM}/eyeutils.o \
obj/${PLATFORM}/sqlite3.o
all: init ${LIBS} ${JAR} obj/${PLATFORM}/ionu_pbkdf2
@echo all
compile: all
@echo compile
libs: ${LIBS}
analyze: ${LIBS}
clang --analyze -std=gnu++11 -I../ionu-openssl/include/lin64 ${JNI_INCLUDE} *.cpp
obj/${PLATFORM}/eyeball.o: eyeball.cpp eyeutils.h eyering.h eyecontainer.h eyelog.h eyeconstants.h
${CPP} ${CFLAGS} -c eyeball.cpp -o $*.o
obj/${PLATFORM}/eyebytes.o: eyebytes.cpp eyeutils.h eyelog.h
${CPP} ${CFLAGS} -c eyebytes.cpp -o $*.o
obj/${PLATFORM}/eyecontainer.o: eyecontainer.cpp eyeball.h eyeutils.h eyebytes.h eyejson.h eyecontainer.h eyelog.h eyeconstants.h
${CPP} ${CFLAGS} -c eyecontainer.cpp -o $*.o
obj/${PLATFORM}/eyedb.o: eyedb.cpp eyedb.h eyeutils.h eyelog.h
${CPP} ${CFLAGS} -c eyedb.cpp -o $*.o
obj/${PLATFORM}/eyedirectory.o: eyedirectory.cpp eyedirectory.h eyeutils.h eyelog.h
${CPP} ${CFLAGS} -c eyedirectory.cpp -o $*.o
obj/${PLATFORM}/eyedrbg.o: eyedrbg.cpp eyedrbg.h eyeutils.h eyelog.h
${CPP} ${CFLAGS} -c eyedrbg.cpp -o $*.o
obj/${PLATFORM}/eyeencrypteddb.o: eyeencrypteddb.cpp eyeencrypteddb.h eyedb.h eyelog.h
${CPP} ${CFLAGS} -c eyeencrypteddb.cpp -o $*.o
obj/${PLATFORM}/eyeinterface.o: eyeinterface.cpp eyeinterface.h eyeutils.h eyejson.h eyelog.h
${CPP} ${CFLAGS} -c eyeinterface.cpp -o $*.o
obj/${PLATFORM}/eyejson.o: eyejson.cpp eyejson.h eyeutils.h eyelog.h
${CPP} ${CFLAGS} -c eyejson.cpp -o $*.o
obj/${PLATFORM}/eyelog.o: eyelog.cpp eyeutils.h eyelog.h eyering.h
${CPP} ${CFLAGS} -c eyelog.cpp -o $*.o
obj/${PLATFORM}/eyenet.o: eyenet.cpp eyebytes.h eyeutils.h eyenet.h
${CPP} ${CFLAGS} -c eyenet.cpp -o $*.o
obj/${PLATFORM}/eyeconnection.o: eyeconnection.cpp eyeconnection.h eyeutils.h eyelog.h
${CPP} ${CFLAGS} -c eyeconnection.cpp -o $*.o
obj/${PLATFORM}/eyering.o: eyering.cpp eyebytes.h eyeutils.h eyering.h eyelog.h eyejson.h
${CPP} ${CFLAGS} -c eyering.cpp -o $*.o
obj/${PLATFORM}/eyestream.o: eyestream.cpp eyebytes.h eyestream.h eyecontainer.h
${CPP} ${CFLAGS} -c eyestream.cpp -o $*.o
obj/${PLATFORM}/eyetime.o: eyetime.cpp eyeutils.h eyetime.h
${CPP} ${CFLAGS} -c eyetime.cpp -o $*.o
obj/${PLATFORM}/eyeutils.o: eyeutils.cpp eyeutils.h eyelog.h
${CPP} ${CFLAGS} -c eyeutils.cpp -o $*.o
obj/${PLATFORM}/eyejni.o: eyejni.cpp eyeinterface.h
${CPP} ${CFLAGS} -Wno-unused-parameter ${JNI_INCLUDE} -c eyejni.cpp -o $*.o
obj/${PLATFORM}/sqlite3.o: sqlite/sqlite3.c sqlite/sqlite3.h
${CC} -Fpermissive -g -DDEBUG -Wall -m64 -fPIC -c sqlite/sqlite3.c -o $*.o
${LIBS}: init ${OBJS}
@echo libs ${LIBS}
cp -p zlib/${PLATFORM}/libz.a lib/${PLATFORM}
cp -p zlib/${PLATFORM}/libz${LIBEXTN} lib/${PLATFORM}
${CC} -shared -o lib/${PLATFORM}/libeye${LIBEXTN} ${OBJS} ${LDFLAGS} ${LIBDIRS} ${LINKLIBS}
rm -f lib/${PLATFORM}/libeye.a ; ar -cr lib/${PLATFORM}/libeye.a ${OBJS}
${ZLIB}: zlib/${PLATFORM}/libz.a
# cd zlib; ./configure; make; cd ..
# mkdir -p zlib/${PLATFORM}
# cp -p zlib/libz.a zlib/${PLATFORM}
# cp -p zlib/libz${LIBEXTN} zlib/${PLATFORM}
clean:
@echo clean
rm -f ${LIBS}
rm -f ${OBJS}
rm -f ${JAR}
rm -f testapi
rm -f obj/${PLATFORM}/ionu_pbkdf2
rm -rf classes
rm -f test/empty.*
rm -f test/Message*
# Force use specific install version because of HAL/Thomas problems in fetching from repository.
MVN_INSTALL_PLUGIN = org.apache.maven.plugins:maven-install-plugin:2.3.1:
install: ${LIBS} ${JAR} mongo-policy.txt obj/${PLATFORM}/ionu_pbkdf2
@echo Installing Java to Maven
mvn ${MVN_INSTALL_PLUGIN}install-file -Dfile=${JAR} -DgroupId=com.ionu -DartifactId=eye \
-Dversion=${MVN_VERSION} -Dpackaging=jar -DgeneratePom=true
@echo Deploying to Artifactory
mvn deploy:deploy-file -DgroupId=com.ionu \
-DartifactId=eye \
-Dversion=${MVN_VERSION} \
-Dpackaging=jar \
-Dfile=${JAR} \
-DrepositoryId=IONU\ Repository \
-Durl=http://artifactory.ionu.int:8069/artifactory/libs-release-local
Z_DLL = zlib/${PLATFORM}/zlib1.dll
SQL_DLL = sqlite/${PLATFORM}/sqlite3.dll
ifeq (${PLATFORM},win64)
RELDIR = ../smo-qt/bin/x64
else
RELDIR = ../smo-qt/bin
endif
install_win:
cp -p -f ${Z_DLL} ${RELDIR}
cp -p -f ${SQL_DLL} ${RELDIR}
# Test executable
testapi: testapi.cpp ${LIBS}
@echo testapi
${CPP} -o testapi ${CFLAGS} testapi.cpp ${LIBDIRS} ${EXECLIBS} ${LDFLAGS}
# Lock test executable
locktest: locktest.cpp eyeutils.h ${LIBS}
@echo locktest
${CPP} -o locktest ${CFLAGS} locktest.cpp ${LIBDIRS} ${EXECLIBS} ${LDFLAGS}
# P2P test executable
nettest: nettest.cpp eyeutils.h eyenet.h eyeconnection.h ${LIBS}
@echo nettest
${CPP} -o nettest ${CFLAGS} nettest.cpp ${LIBDIRS} ${EXECLIBS} ${LDFLAGS}
# Command line utility
eyecryptor: eyecryptor.cpp eyeutils.h eyering.h eyecontainer.h ${LIBS}
@echo eyecryptor
${CPP} -o eyecryptor ${CFLAGS} eyecryptor.cpp ${LIBDIRS} ${EXECLIBS} ${LDFLAGS}
# Performance analysis executable
performance: performance.cpp eyeutils.h eyering.h ${LIBS}
@echo performance
${CPP} -o performance ${CFLAGS} performance.cpp ${LIBDIRS} ${EXECLIBS} ${LDFLAGS}
obj/${PLATFORM}/ionu_pbkdf2: ionu_pbkdf2.c ${LIBS}
@echo ionu_pbkdf2
${CPP} -o obj/${PLATFORM}/ionu_pbkdf2 ${LIBDIRS} ${CFLAGS} ionu_pbkdf2.c \
lib/${PLATFORM}/libeye.a \
lib/${PLATFORM}/libz.a \
-g ${PLATFORMFLAGS} \
../thirdparty/openssl/lib/${PLATFORM}/libcrypto.a \
-ldl
${MD5} obj/${PLATFORM}/ionu_pbkdf2 > obj/${PLATFORM}/ionu_pbkdf2.md5
IONUPKG = com/ionu
IONUCLASSPKG = classes/${IONUPKG}
IONUSRCPKG = java/${IONUPKG}
SWIGINT = eyeinterface.i
SWIGJNI = eyejni.cpp
CLASSES = \
$(IONUCLASSPKG)/TestEye.class \
$(IONUCLASSPKG)/ByteArr.class \
$(IONUCLASSPKG)/Digester.class \
$(IONUCLASSPKG)/eyeinterface.class \
$(IONUCLASSPKG)/eyeinterfaceConstants.class \
$(IONUCLASSPKG)/eyeinterfaceJNI.class \
$(IONUCLASSPKG)/Key.class \
$(IONUCLASSPKG)/PolicyNames.class \
$(IONUCLASSPKG)/Keyring.class \
$(IONUCLASSPKG)/EyeDirectoryItem.class \
$(IONUCLASSPKG)/EyeDirectory.class \
$(IONUCLASSPKG)/EyeWrapper.class \
$(IONUCLASSPKG)/EYE_FILE_LOCK_TYPE.class \
$(IONUCLASSPKG)/EYE_FILE_LOCK_STATUS.class \
$(IONUCLASSPKG)/EYE_FILE_STATUS.class \
$(IONUCLASSPKG)/EYE_LOG_LEVEL.class \
$(IONUCLASSPKG)/EYE_LOG_SINK.class \
$(IONUCLASSPKG)/SWIGTYPE_p_size_t.class \
$(IONUCLASSPKG)/SWIGTYPE_p_std__ofstream.class \
$(IONUCLASSPKG)/SWIGTYPE_p_void.class \
$(IONUCLASSPKG)/SWIGTYPE_p_std__vectorT_std__string_t.class \
$(IONUCLASSPKG)/SWIGTYPE_p_unsigned_char.class
${JAR}: ${CLASSES}
@echo ${JAR}
(cd classes; \
jar -cvf ../${JAR} \
${IONUPKG}/ByteArr.class \
${IONUPKG}/Digester.class \
${IONUPKG}/eyeinterface.class \
${IONUPKG}/eyeinterfaceConstants.class \
${IONUPKG}/eyeinterfaceJNI.class \
${IONUPKG}/Key.class \
${IONUPKG}/Keyring.class \
${IONUPKG}/EyeDirectoryItem.class \
${IONUPKG}/EyeDirectory.class \
${IONUPKG}/EyeWrapper.class \
$(IONUPKG)/PolicyNames.class \
${IONUPKG}/EYE_FILE_LOCK_TYPE.class \
${IONUPKG}/EYE_FILE_LOCK_STATUS.class \
${IONUPKG}/EYE_FILE_STATUS.class \
${IONUPKG}/EYE_LOG_LEVEL.class \
${IONUPKG}/EYE_LOG_SINK.class \
${IONUPKG}/SWIGTYPE_p_size_t.class \
${IONUPKG}/SWIGTYPE_p_std__ofstream.class \
${IONUPKG}/SWIGTYPE_p_void.class \
$(IONUPKG)/SWIGTYPE_p_std__vectorT_std__string_t.class \
${IONUPKG}/SWIGTYPE_p_unsigned_char.class \
; \
cd ..)
CLASSPATH = classes:javalib/log4j-1.2.14.jar:javalib/json-20090211.jar:${HOME}/.m2/repository/com/dt/dovetail/1.4.0/dovetail-1.4.0.jar:javalib/junit-4.10.jar:${JAR}
$(IONUCLASSPKG)/%.class: $(IONUSRCPKG)/%.java
echo javac $<
javac -source ${JAVA_TARGET} -target ${JAVA_TARGET} -sourcepath java -d classes $<
mongo-policy.txt: eyeconstants.h
@echo Generate mongo-policy.txt from eyeconstants.h
python eyeconstants.py
${IONUSRCPKG}/PolicyNames.java: eyeconstants.h
@echo Generate PolicyNames.java from eyeconstants.h
python eyeconstants.py
${IONUCLASSPKG}/SWIGTYPE_p_size_t.class: ${IONUSRCPKG}/SWIGTYPE_p_size_t.java
@echo javac SWIGTYPE_p_size_t.java
javac -source 1.6 -target 1.6 -cp classes -sourcepath java -d classes ${IONUSRCPKG}/SWIGTYPE_p_size_t.java
${IONUCLASSPKG}/Permissions.class: ${IONUSRCPKG}/Permissions.java
@echo javac Permissions.java
javac -source 1.6 -target 1.6 -cp classes -sourcepath java -d classes ${IONUSRCPKG}/Permissions.java
testC: ${LIBS} testapi
@echo "\n\n*** testapi ***"
touch test/empty.ionu
touch test/empty.iks
cp test/tartest.orig test/tartest.txt
cp test/shredtest.ionu test/shred.ionu
mkdir -p test/thisisaverylongtestpathfortarformatcheckingandverificationpurposes_exceedstar1988maxpath
cp test/tartest.orig test/thisisaverylongtestpathfortarformatcheckingandverificationpurposes_exceedstar1988maxpath/verylongpathtartest.txt
./testapi
testJava: ${IONUCLASSPKG}/TestEye.class ${JAR}
@echo "\n\n*** test Java EyeContainer ***"
# cp testfile.txt.orig testfile.txt
# TODO use junit
#java -cp ${CLASSPATH} -Djava.library.path=./lib/${PLATFORM} org.junit.runner.JUnitCore com.ionu.TestEye
java -cp ${CLASSPATH} -Djava.library.path=./lib/${PLATFORM} com.ionu.TestEye
swig:
swig -c++ -o $(SWIGJNI) -java -outdir java/com/ionu -package com.ionu $(SWIGINT)
test: testC testJava
@echo "\n\nTESTS SUCCESSFUL!"
package:
@echo "Nothing to package"
certs:
@echo "Generate public/private pair for testapi"
openssl genrsa -out testapi.pem 1024
openssl rsa -in testapi.pem -out testapi-public.pem -outform PEM -pubout
init:
mkdir -p obj/${PLATFORM}
mkdir -p lib/${PLATFORM}
mkdir -p bin/${PLATFORM}
mkdir -p classes