From 000f528f6c7405f35cd00e11d5faaea391c2683f Mon Sep 17 00:00:00 2001 From: perry.werneck@gmail.com Date: Wed, 17 Jun 2015 17:54:30 +0000 Subject: [PATCH] Iniciando implementação do plugin java --- src/include/lib3270.h | 8 ++++---- src/java/Makefile.in | 35 ++++++++++++++++++----------------- src/java/jni3270.cbp | 1 + src/java/main.cc | 4 ++++ src/java/private.h | 8 ++++++++ 5 files changed, 35 insertions(+), 21 deletions(-) diff --git a/src/include/lib3270.h b/src/include/lib3270.h index 222c8fe..af4a8ef 100644 --- a/src/include/lib3270.h +++ b/src/include/lib3270.h @@ -284,20 +284,20 @@ #if defined( ANDROID ) - #define LIB3270_EXPORT __attribute__((visibility("hidden"))) extern + #define LIB3270_EXPORT extern __attribute__((visibility("hidden"))) #elif defined(_WIN32) #include - #define LIB3270_EXPORT __declspec (dllexport) + #define LIB3270_EXPORT extern __declspec (dllexport) #elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550) - #define LIB3270_EXPORT + #define LIB3270_EXPORT extern #elif defined (HAVE_GNUC_VISIBILITY) - #define LIB3270_EXPORT __attribute__((visibility("default"))) extern + #define LIB3270_EXPORT extern __attribute__((visibility("default"))) #else diff --git a/src/java/Makefile.in b/src/java/Makefile.in index a0f7e84..f899758 100644 --- a/src/java/Makefile.in +++ b/src/java/Makefile.in @@ -57,14 +57,15 @@ JRE_HOME=@JRE_HOME@ #---[ Paths ]------------------------------------------------------------------ -OBJDIR = .obj -BINDIR = .bin +ROOTDIR ?= . +OBJDIR ?= $(ROOTDIR)/.obj +BINDIR ?= $(ROOTDIR)/.bin -OBJDBG = $(OBJDIR)/Debug -BINDBG = $(BINDIR)/Debug +BINDBG ?= $(BINDIR)/Debug +BINRLS ?= $(BINDIR)/Release -OBJRLS = $(OBJDIR)/Release -BINRLS = $(BINDIR)/Release +OBJDBG ?= $(OBJDIR)/Debug +OBJRLS ?= $(OBJDIR)/Release #---[ lib3270 common class ]--------------------------------------------------- @@ -111,22 +112,22 @@ $(BINRLS)/$(PACKAGE_NAME).jar: $(BINDIR)/java/$(PACKAGE_NAME)/terminal.class #---[ Release targets ]-------------------------------------------------------- -all: $(BINRLS)/@DLLPREFIX@jni3270@DLLEXT@ +all: $(BINRLS)@DLLDIR@/@DLLPREFIX@jni3270@DLLEXT@ -Release: $(BINRLS)/@DLLPREFIX@jni3270@DLLEXT@ +Release: $(BINRLS)@DLLDIR@/@DLLPREFIX@jni3270@DLLEXT@ zip: jni3270.zip -jni3270.zip: $(BINRLS)/@DLLPREFIX@jni3270@DLLEXT@ $(BINRLS)/$(PACKAGE_NAME).jar testprogram.java doc +jni3270.zip: $(BINRLS)@DLLDIR@/@DLLPREFIX@jni3270@DLLEXT@ $(BINRLS)/$(PACKAGE_NAME).jar testprogram.java doc @rm -fr .tmp.zip @rm -f $@ - @zip -9 -j $@ $(BINRLS)/@DLLPREFIX@jni3270@DLLEXT@ $(BINRLS)/$(PACKAGE_NAME).jar testprogram.java + @zip -9 -j $@ $(BINRLS)@DLLDIR@/@DLLPREFIX@jni3270@DLLEXT@ $(BINRLS)/$(PACKAGE_NAME).jar testprogram.java @zip -9 -r $@ doc doc: terminal.java @$(JAVADOC) -encoding utf-8 -d doc $^ -$(BINRLS)/@DLLPREFIX@jni3270@DLLEXT@: \ +$(BINRLS)@DLLDIR@/@DLLPREFIX@jni3270@DLLEXT@: \ $(foreach SRC, $(basename $(SOURCES)), $(OBJRLS)/$(SRC)@OBJEXT@) \ $(CLASS_RELEASE_OBJECTS) @@ -137,24 +138,24 @@ $(BINRLS)/@DLLPREFIX@jni3270@DLLEXT@: \ #---[ Debug targets ]---------------------------------------------------------- -Debug: $(BINDBG)/@DLLPREFIX@jni3270@DLLEXT@ $(BINDIR)/java/testprogram.class +Debug: $(BINDBG)@DLLDIR@/@DLLPREFIX@jni3270@DLLEXT@ $(BINDIR)/java/testprogram.class -$(BINDBG)/@DLLPREFIX@jni3270@DLLEXT@: $(foreach SRC, $(basename $(SOURCES)), $(OBJDBG)/$(SRC)@OBJEXT@) \ +$(BINDBG)@DLLDIR@/@DLLPREFIX@jni3270@DLLEXT@: $(foreach SRC, $(basename $(SOURCES)), $(OBJDBG)/$(SRC)@OBJEXT@) \ $(CLASS_DEBUG_OBJECTS) @echo " LD `basename $@`" @$(MKDIR) `dirname $@` @$(CXX) @SYSDLL_FLAGS@ $(LDFLAGS) $(OO_LDFLAGS) -o $@ $^ $(CLASS_LIBS) -run: $(BINDBG)/@DLLPREFIX@jni3270@DLLEXT@ $(BINDIR)/java/testprogram.class - @LD_LIBRARY_PATH=../../.bin/Debug/lib/ java -Djava.library.path=$(BINDBG) -cp .bin/java/ testprogram +run: $(BINDBG)@DLLDIR@/@DLLPREFIX@jni3270@DLLEXT@ $(BINDIR)/java/testprogram.class + @LD_LIBRARY_PATH=../../.bin/Debug/lib/ java -Djava.library.path=$(BINDBG)@DLLDIR@ -cp .bin/java/ testprogram #---[ Misc targets ]----------------------------------------------------------- -install: $(BINRLS)/@DLLPREFIX@jni3270@DLLEXT@ $(BINRLS)/$(PACKAGE_NAME).jar doc +install: $(BINRLS)@DLLDIR@/@DLLPREFIX@jni3270@DLLEXT@ $(BINRLS)/$(PACKAGE_NAME).jar doc @$(MKDIR) $(DESTDIR)/$(jnidir) - @$(INSTALL_PROGRAM) $(BINRLS)/@DLLPREFIX@jni3270@DLLEXT@ $(DESTDIR)/$(jnidir) + @$(INSTALL_PROGRAM) $(BINRLS)@DLLDIR@/@DLLPREFIX@jni3270@DLLEXT@ $(DESTDIR)/$(jnidir) @mkdir -p $(DESTDIR)/$(jvmjardir) @$(INSTALL_DATA) $(BINRLS)/$(PACKAGE_NAME).jar $(DESTDIR)/$(jvmjardir) diff --git a/src/java/jni3270.cbp b/src/java/jni3270.cbp index 4c43660..0bc84a8 100644 --- a/src/java/jni3270.cbp +++ b/src/java/jni3270.cbp @@ -39,6 +39,7 @@ + diff --git a/src/java/main.cc b/src/java/main.cc index 9260fda..1b8f987 100644 --- a/src/java/main.cc +++ b/src/java/main.cc @@ -31,6 +31,10 @@ /*---[ Implement ]----------------------------------------------------------------------------------*/ +void set_java_session_factory(PW3270_NAMESPACE::session * (*factory)(const char *name)) { + session::set_plugin(factory); +} + static jfieldID getHandleField(JNIEnv *env, jobject obj) { jclass c = env->GetObjectClass(obj); // J is the type signature for long: diff --git a/src/java/private.h b/src/java/private.h index 6a4ec83..a8e9258 100644 --- a/src/java/private.h +++ b/src/java/private.h @@ -41,4 +41,12 @@ PW3270_NAMESPACE::session * getHandle(JNIEnv *env, jobject obj); + extern "C" { + + LIB3270_EXPORT void set_java_session_factory(PW3270_NAMESPACE::session * (*factory)(const char *name)); + + } + + + #endif // PRIVATE_H_INCLUDED -- libgit2 0.21.2