@ -9,7 +9,7 @@ ifndef JAVA_HOME
$( error JAVA_HOME is not set!)
e n d i f
JAVA_BIN = $( JAVA_HOME) /bin
JP = $( JAVA_HOME) /bin
# Old versions of a Java distribution have a `javah` binary, new versions do not. This checks whether or not `javah` can be found in the Java distribution found in the directory `$JAVA_HOME`.
NOT_USED := $( shell which $( JAVA_HOME) /bin/javah)
@ -17,72 +17,71 @@ ifeq ($(.SHELLSTATUS),0)
OLD_JAVA = placeholder
e n d i f
DEST = out
AR_CXX = libpEpJNI.a
LIB_JAVA = pEp.jar
LIBRARY = libpEpJNI.a
JAR = pEp.jar
i f e q ( $( BUILD_FOR ) , L i n u x )
LIB_CXX = libpEpJNI.so
SHARED = libpEpJNI.so
e l s e i f e q ( $( BUILD_FOR ) , D a r w i n )
LIB_CXX = libpEpJNI.dylib
SHARED = libpEpJNI.dylib
e l s e
$( error I dont know how to build for $( BUILD_FOR) .)
e n d i f
SRC_JAVA = $( shell find ./foundation/pEp/jniadapter/ -name '*.java' )
SRC_CXX := $( shell ls -1 | grep -E '.cc$|.hh$|.h$' )
OBJS := $( shell ls -1 | grep -E '.cc' | sed 's/\.cc/.o/g' )
#JNI_GEN_H:=$(shell ls -1 |grep .cc | sed 's/\.cc/.h/g' | sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/ /g')
JNI_GEN_H = foundation_pEp_jniadapter_AbstractEngine.h foundation_pEp_jniadapter_Engine.h foundation_pEp_jniadapter_Message.h
.PHONY : all status_list codegen jnigen compile_cxx compile_java clean
# BUILD ALL
all :
$( MAKE) codegen
$( MAKE) compile_java
# COMPILE JAVA
compile_java : compile_cxx $( LIB_JAVA )
$(LIB_JAVA) : $( SRC_JAVA ) $( SRC_CXX )
$( JAVA_BIN) /javac ./foundation/pEp/jniadapter/*.java
$( JAVA_BIN) /jar cf $@ ./foundation/pEp/jniadapter/*.class
# COMPILE C++
compile_cxx : jnigen $( LIB_CXX )
$(LIB_CXX) : $( AR_CXX )
$( CXX) *.o $( LDFLAGS) $( LDLIBS) -o $@
$(AR_CXX) : $( OBJS )
ar -r $@ *.o
%.o : %.cc %.h
$( CXX) $( CXXFLAGS) -c $< -o $@
# GENERATE JNI HEADERS
jnigen : codegen $( JNI_GEN_H )
$(JNI_GEN_H) : foundation_pEp_jniadapter_ %.h : foundation /pEp /jniadapter /%.java
JAVA_SOURCES = foundation/pEp/jniadapter/AbstractEngine.java \
foundation/pEp/jniadapter/Blob.java \
foundation/pEp/jniadapter/CommType.java \
foundation/pEp/jniadapter/Identity.java \
foundation/pEp/jniadapter/Pair.java \
foundation/pEp/jniadapter/Sync.java \
foundation/pEp/jniadapter/_Blob.java \
foundation/pEp/jniadapter/_Identity.java \
foundation/pEp/jniadapter/pEpException.java \
foundation/pEp/jniadapter/Message.java \
foundation/pEp/jniadapter/Engine.java \
C_SOURCES = foundation_pEp_jniadapter_Engine.cc \
foundation_pEp_jniadapter_Engine.h \
foundation_pEp_jniadapter_Message.cc \
foundation_pEp_jniadapter_Message.h \
throw_pEp_exception.cc \
throw_pEp_exception.hh \
foundation_pEp_jniadapter_AbstractEngine.h
PEP_HEADER := $( shell $( CXX) $( CXXFLAGS) -E -M get_header.cc | grep -oe '[^[:space:]]*pEpEngine\.h' | head -1)
.PHONY : all
all : $( JAR ) $( SHARED )
$(JAR) : status_list .yml 2 $( JAVA_SOURCES ) $( C_SOURCES )
$( JP) /javac foundation/pEp/jniadapter/*.java
$( JP) /jar cf $@ foundation/pEp/jniadapter/*.class
BLUBB = foundation_pEp_jniadapter_AbstractEngine.h foundation_pEp_jniadapter_Engine.h foundation_pEp_jniadapter_Message.h
$(BLUBB) : foundation_pEp_jniadapter_ %.h : foundation /pEp /jniadapter /%.java
i f d e f O L D _ J A V A
$( JAVA_BIN ) /javah $( subst /,.,$( subst .java,,$<) )
$( JP) /javah $( subst /,.,$( subst .java,,$<) )
e l s e
$( JAVA_BIN ) /javac -h . $<
$( JP) /javac -h . $<
e n d i f
foundation_pEp_jniadapter_AbstractEngine.o : %.o : %.cc %.h throw_pEp_exception .hh jniutils .hh
$( CXX) $( CXXFLAGS) -c $< -o $@
foundation_pEp_jniadapter_Engine.o foundation_pEp_jniadapter_Message.o : %.o : %.cc %.h
$( CXX) $( CXXFLAGS) -c $< -o $@
# CODEGEN
codegen : status_list foundation /pEp /jniadapter /pEpException .java foundation /pEp /jniadapter /Message .java foundation /pEp /jniadapter /Engine .java foundation_pEp_jniadapter_Message .cc foundation_pEp_jniadapter_Engine .cc throw_pEp_exception .cc throw_pEp_exception .hh
$(LIBRARY) : foundation_pEp_jniadapter_AbstractEngine .o foundation_pEp_jniadapter_Engine .o foundation_pEp_jniadapter_Message .o throw_pEp_exception .o jniutils .o basic_api .o
ar -r $@ *.o
$(SHARED) : $( LIBRARY )
$( CXX) *.o $( LDFLAGS) $( LDLIBS) -o $@
foundation/pEp/jniadapter/pEpException.java : pEp .yml 2 gen_java_exceptions .ysl 2 types_java .ysl 2
status_list.yml2 : pEp .yml 2
bash ../utils/extract_pEp_status_codes_from_engine.sh " $( PEP_HEADER) " $@
foundation/pEp/jniadapter/pEpException.java : pEp .yml 2 gen_java_exceptions .ysl 2 pEp .yml 2
$( YML2_PROC) -y gen_java_exceptions.ysl2 $< -o $@
foundation/pEp/jniadapter/Message.java : pEp .yml 2 gen_java_Message .ysl 2 types_java .ysl 2
@ -100,16 +99,13 @@ foundation_pEp_jniadapter_Engine.cc: pEp.yml2 gen_cpp_Engine.ysl2 types_c.ysl2
throw_pEp_exception.cc throw_pEp_exception.hh : pEp .yml 2 gen_throw_pEp_exception .ysl 2 textutils .ysl 2
$( YML2_PROC) -y gen_throw_pEp_exception.ysl2 $< -o throw_pEp_exception.cc
throw_pEp_exception.o : throw_pEp_exception .cc throw_pEp_exception .hh
# GENERATE STATUS LIST
status_list : status_list .yml 2
status_list.yml2 : pEp .yml 2 $( ENGINE_INC_PATH ) /pEp /pEpEngine .h
bash ../utils/extract_pEp_status_codes_from_engine.sh $( ENGINE_INC_PATH) /pEp/pEpEngine.h $@
basic_api.o : basic_api .cc jniutils .hh throw_pEp_exception .hh
.PHONY : clean
clean :
rm -f $( LIB_JAVA) $( AR_CXX) $( LIB_CXX )
rm -f $( JAR) $( LIBRARY) $( SHARED)
rm -f *.o
rm -f *.class
rm -f *.xml *.xsl