Browse Source

Backed out changeset f0b49dde7901

JNI-88
heck 6 years ago
parent
commit
9718a96b9d
  1. 4
      Makefile.conf
  2. 116
      src/Makefile
  3. 1
      src/get_header.cc

4
Makefile.conf

@ -24,9 +24,9 @@ LDLIBS=-lstdc++ -lpEpEngine -lpEpAdapter
######### C++ #########
ifeq ($(BUILD_FOR),Linux)
CXX=g++ -std=c++11
CXX=g++ -std=c++14
else ifeq ($(BUILD_FOR),Darwin)
CXX=clang -std=c++11
CXX=clang -std=c++14
endif
ifeq ($(BUILD_FOR),Linux)

116
src/Makefile

@ -9,7 +9,7 @@ ifndef JAVA_HOME
$(error JAVA_HOME is not set!)
endif
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
endif
DEST=out
AR_CXX=libpEpJNI.a
LIB_JAVA=pEp.jar
LIBRARY=libpEpJNI.a
JAR=pEp.jar
ifeq ($(BUILD_FOR),Linux)
LIB_CXX=libpEpJNI.so
SHARED=libpEpJNI.so
else ifeq ($(BUILD_FOR),Darwin)
LIB_CXX=libpEpJNI.dylib
SHARED=libpEpJNI.dylib
else
$(error I dont know how to build for $(BUILD_FOR).)
endif
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.yml2 $(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
ifdef OLD_JAVA
$(JAVA_BIN)/javah $(subst /,.,$(subst .java,,$<))
$(JP)/javah $(subst /,.,$(subst .java,,$<))
else
$(JAVA_BIN)/javac -h . $<
$(JP)/javac -h . $<
endif
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.yml2 gen_java_exceptions.ysl2 types_java.ysl2
status_list.yml2: pEp.yml2
bash ../utils/extract_pEp_status_codes_from_engine.sh "$(PEP_HEADER)" $@
foundation/pEp/jniadapter/pEpException.java: pEp.yml2 gen_java_exceptions.ysl2 pEp.yml2
$(YML2_PROC) -y gen_java_exceptions.ysl2 $< -o $@
foundation/pEp/jniadapter/Message.java: pEp.yml2 gen_java_Message.ysl2 types_java.ysl2
@ -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.yml2 gen_throw_pEp_exception.ysl2 textutils.ysl2
$(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.yml2
status_list.yml2: pEp.yml2 $(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

1
src/get_header.cc

@ -0,0 +1 @@
#include <pEp/pEpEngine.h>
Loading…
Cancel
Save