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++ ######### ######### C++ #########
ifeq ($(BUILD_FOR),Linux) ifeq ($(BUILD_FOR),Linux)
CXX=g++ -std=c++11 CXX=g++ -std=c++14
else ifeq ($(BUILD_FOR),Darwin) else ifeq ($(BUILD_FOR),Darwin)
CXX=clang -std=c++11 CXX=clang -std=c++14
endif endif
ifeq ($(BUILD_FOR),Linux) ifeq ($(BUILD_FOR),Linux)

116
src/Makefile

@ -9,7 +9,7 @@ ifndef JAVA_HOME
$(error JAVA_HOME is not set!) $(error JAVA_HOME is not set!)
endif 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`. # 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) NOT_USED:=$(shell which $(JAVA_HOME)/bin/javah)
@ -17,72 +17,71 @@ ifeq ($(.SHELLSTATUS),0)
OLD_JAVA=placeholder OLD_JAVA=placeholder
endif endif
DEST=out LIBRARY=libpEpJNI.a
JAR=pEp.jar
AR_CXX=libpEpJNI.a
LIB_JAVA=pEp.jar
ifeq ($(BUILD_FOR),Linux) ifeq ($(BUILD_FOR),Linux)
LIB_CXX=libpEpJNI.so SHARED=libpEpJNI.so
else ifeq ($(BUILD_FOR),Darwin) else ifeq ($(BUILD_FOR),Darwin)
LIB_CXX=libpEpJNI.dylib SHARED=libpEpJNI.dylib
else else
$(error I dont know how to build for $(BUILD_FOR).) $(error I dont know how to build for $(BUILD_FOR).)
endif endif
SRC_JAVA=$(shell find ./foundation/pEp/jniadapter/ -name '*.java') JAVA_SOURCES=foundation/pEp/jniadapter/AbstractEngine.java \
foundation/pEp/jniadapter/Blob.java \
SRC_CXX:=$(shell ls -1 | grep -E '.cc$|.hh$|.h$') foundation/pEp/jniadapter/CommType.java \
OBJS:=$(shell ls -1 | grep -E '.cc' | sed 's/\.cc/.o/g') foundation/pEp/jniadapter/Identity.java \
foundation/pEp/jniadapter/Pair.java \
foundation/pEp/jniadapter/Sync.java \
#JNI_GEN_H:=$(shell ls -1 |grep .cc | sed 's/\.cc/.h/g' | sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/ /g') foundation/pEp/jniadapter/_Blob.java \
JNI_GEN_H=foundation_pEp_jniadapter_AbstractEngine.h foundation_pEp_jniadapter_Engine.h foundation_pEp_jniadapter_Message.h foundation/pEp/jniadapter/_Identity.java \
foundation/pEp/jniadapter/pEpException.java \
.PHONY: all status_list codegen jnigen compile_cxx compile_java clean foundation/pEp/jniadapter/Message.java \
foundation/pEp/jniadapter/Engine.java \
# BUILD ALL
all: C_SOURCES=foundation_pEp_jniadapter_Engine.cc \
$(MAKE) codegen foundation_pEp_jniadapter_Engine.h \
$(MAKE) compile_java foundation_pEp_jniadapter_Message.cc \
foundation_pEp_jniadapter_Message.h \
# COMPILE JAVA throw_pEp_exception.cc \
compile_java: compile_cxx $(LIB_JAVA) throw_pEp_exception.hh \
foundation_pEp_jniadapter_AbstractEngine.h
$(LIB_JAVA): $(SRC_JAVA) $(SRC_CXX)
$(JAVA_BIN)/javac ./foundation/pEp/jniadapter/*.java PEP_HEADER:=$(shell $(CXX) $(CXXFLAGS) -E -M get_header.cc | grep -oe '[^[:space:]]*pEpEngine\.h' | head -1)
$(JAVA_BIN)/jar cf $@ ./foundation/pEp/jniadapter/*.class
.PHONY: all
# COMPILE C++ all: $(JAR) $(SHARED)
compile_cxx: jnigen $(LIB_CXX)
$(JAR): status_list.yml2 $(JAVA_SOURCES) $(C_SOURCES)
$(LIB_CXX): $(AR_CXX) $(JP)/javac foundation/pEp/jniadapter/*.java
$(CXX) *.o $(LDFLAGS) $(LDLIBS) -o $@ $(JP)/jar cf $@ foundation/pEp/jniadapter/*.class
$(AR_CXX): $(OBJS) BLUBB=foundation_pEp_jniadapter_AbstractEngine.h foundation_pEp_jniadapter_Engine.h foundation_pEp_jniadapter_Message.h
ar -r $@ *.o $(BLUBB): foundation_pEp_jniadapter_%.h: foundation/pEp/jniadapter/%.java
%.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
ifdef OLD_JAVA ifdef OLD_JAVA
$(JAVA_BIN)/javah $(subst /,.,$(subst .java,,$<)) $(JP)/javah $(subst /,.,$(subst .java,,$<))
else else
$(JAVA_BIN)/javac -h . $< $(JP)/javac -h . $<
endif 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 $(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
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 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 $@ $(YML2_PROC) -y gen_java_exceptions.ysl2 $< -o $@
foundation/pEp/jniadapter/Message.java: pEp.yml2 gen_java_Message.ysl2 types_java.ysl2 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 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 $(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 basic_api.o: basic_api.cc jniutils.hh throw_pEp_exception.hh
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 $@
.PHONY: clean
clean: clean:
rm -f $(LIB_JAVA) $(AR_CXX) $(LIB_CXX) rm -f $(JAR) $(LIBRARY) $(SHARED)
rm -f *.o rm -f *.o
rm -f *.class rm -f *.class
rm -f *.xml *.xsl rm -f *.xml *.xsl

1
src/get_header.cc

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