Commit 8a5290e737a569b677cf81bc4a27139fc67d3f24

Authored by perry.werneck@gmail.com
1 parent 7ea1140f

Implementando plugin rexx já no formato do ooRexx 4.1

@@ -351,10 +351,14 @@ else @@ -351,10 +351,14 @@ else
351 AC_DEFINE(HAVE_REXX) 351 AC_DEFINE(HAVE_REXX)
352 AC_PATH_TOOL([REXXC], [rexxc], [cp], `$REXXCONFIG --prefix`/bin ) 352 AC_PATH_TOOL([REXXC], [rexxc], [cp], `$REXXCONFIG --prefix`/bin )
353 PLUGINS="$PLUGINS rx3270" 353 PLUGINS="$PLUGINS rx3270"
  354 + REXX_CFLAGS="$CFLAGS `$REXXCONFIG --cflags`"
  355 + REXX_LIBS="$LIBS `$REXXCONFIG --libs`"
354 fi 356 fi
355 357
356 AC_SUBST(REXXC) 358 AC_SUBST(REXXC)
357 AC_SUBST(REXXCONFIG) 359 AC_SUBST(REXXCONFIG)
  360 +AC_SUBST(REXX_CFLAGS)
  361 +AC_SUBST(REXX_LIBS)
358 362
359 #--[ Pre-reqs ]----------------------------------------------------------------------------------------------------------------------------------------------- 363 #--[ Pre-reqs ]-----------------------------------------------------------------------------------------------------------------------------------------------
360 AC_SUBST(LIB3270_REQUIRES) 364 AC_SUBST(LIB3270_REQUIRES)
@@ -235,6 +235,7 @@ @@ -235,6 +235,7 @@
235 <Unit filename="src/plugins/rx3270/pluginmain.c"> 235 <Unit filename="src/plugins/rx3270/pluginmain.c">
236 <Option compilerVar="CC" /> 236 <Option compilerVar="CC" />
237 </Unit> 237 </Unit>
  238 + <Unit filename="src/plugins/rx3270/rx3270.h" />
238 <Unit filename="src/plugins/rx3270/rxapimain.c"> 239 <Unit filename="src/plugins/rx3270/rxapimain.c">
239 <Option compilerVar="CC" /> 240 <Option compilerVar="CC" />
240 </Unit> 241 </Unit>
src/include/plugin.mak.in
@@ -54,6 +54,8 @@ DLL_FLAGS=@DLL_FLAGS@ @@ -54,6 +54,8 @@ DLL_FLAGS=@DLL_FLAGS@
54 DLL_CFLAGS=@DLL_CFLAGS@ 54 DLL_CFLAGS=@DLL_CFLAGS@
55 DEBUG_CFLAGS=-DDEBUG=1 -g -Wall 55 DEBUG_CFLAGS=-DDEBUG=1 -g -Wall
56 LIB3270_MODE ?= Default 56 LIB3270_MODE ?= Default
  57 +DLL_NAME=@DLLDIR@/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@.@VERSION@
  58 +PLUGIN_NAME=plugins/$(MODULE_NAME)@DLLEXT@
57 59
58 ifeq ($(LIB3270_MODE),Debug) 60 ifeq ($(LIB3270_MODE),Debug)
59 PW3270_LIBS="-L$(BINDBG)@DLLDIR@ -l3270" 61 PW3270_LIBS="-L$(BINDBG)@DLLDIR@ -l3270"
src/plugins/rx3270/Makefile.in
@@ -22,41 +22,47 @@ @@ -22,41 +22,47 @@
22 # 22 #
23 # perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) 23 # perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)
24 # erico.mendonca@gmail.com (Erico Mascarenhas de Mendonça) 24 # erico.mendonca@gmail.com (Erico Mascarenhas de Mendonça)
25 -# licinio@bb.com.br (Licínio Luis Branco)  
26 -# kraucer@bb.com.br (Kraucer Fernandes Mazuco)  
27 # 25 #
28 26
29 #---[ Sources ]---------------------------------------------------------------- 27 #---[ Sources ]----------------------------------------------------------------
30 28
31 MODULE_NAME=rx3270 29 MODULE_NAME=rx3270
32 -DEPENDS=*.h *.c ../../include/*.h ../../include/lib3270/*.h Makefile 30 +DEPENDS=*.h ../../include/*.h ../../include/lib3270/*.h Makefile
33 PLUGIN_SRC=pluginmain.c 31 PLUGIN_SRC=pluginmain.c
34 EXTAPI_SRC=rxapimain.c 32 EXTAPI_SRC=rxapimain.c
35 33
  34 +#---[ Tools ]------------------------------------------------------------------
  35 +
  36 +REXXCONFIG=@REXXCONFIG@
  37 +LN_S=@LN_S@
  38 +
  39 +LIBS=@REXX_LIBS@
  40 +CFLAGS=@REXX_CFLAGS@
  41 +
36 #---[ Include plugin rules ]--------------------------------------------------- 42 #---[ Include plugin rules ]---------------------------------------------------
37 43
38 include ../../include/plugin.mak 44 include ../../include/plugin.mak
39 45
40 #---[ Debug Targets ]---------------------------------------------------------- 46 #---[ Debug Targets ]----------------------------------------------------------
41 47
42 -$(BINDBG)/plugins/$(MODULE_NAME)@DLLEXT@: $(foreach SRC, $(basename $(PLUGIN_SRC)), $(OBJDBG)/$(SRC).o) $(BINDBG)/lib$(MODULE_NAME)@DLLEXT@ 48 +$(BINDBG)/$(PLUGIN_NAME): $(foreach SRC, $(basename $(PLUGIN_SRC)), $(OBJDBG)/$(SRC).o) $(BINDBG)$(DLL_NAME)
43 @echo " CCLD `basename $@`" 49 @echo " CCLD `basename $@`"
44 @$(MKDIR) `dirname $@` 50 @$(MKDIR) `dirname $@`
45 @$(LD) $(DLL_FLAGS) $(LDSOFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) $(PW3270_LIBS) $(GTK_LIBS) 51 @$(LD) $(DLL_FLAGS) $(LDSOFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) $(PW3270_LIBS) $(GTK_LIBS)
46 52
47 -$(BINDBG)/lib$(MODULE_NAME)@DLLEXT@: $(foreach SRC, $(basename $(EXTAPI_SRC)), $(OBJDBG)/$(SRC).o) 53 +$(BINDBG)$(DLL_NAME): $(foreach SRC, $(basename $(EXTAPI_SRC)), $(OBJDBG)/$(SRC)@OBJEXT@)
48 @echo " CCLD `basename $@`" 54 @echo " CCLD `basename $@`"
49 @$(MKDIR) `dirname $@` 55 @$(MKDIR) `dirname $@`
50 - @$(LD) $(DLL_FLAGS) $(LDSOFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) $(LIB3270_LIBS) 56 + @$(LD) $(DLL_FLAGS) $(LDFLAGS) @DBGRPATH@ @LDSOFLAGS@ -o $@ $^ $(LIBS) $(LIB3270_LIBS)
51 57
52 #---[ Release Targets ]-------------------------------------------------------- 58 #---[ Release Targets ]--------------------------------------------------------
53 59
54 -$(BINRLS)/plugins/$(MODULE_NAME)@DLLEXT@: $(foreach SRC, $(basename $(PLUGIN_SRC)), $(OBJRLS)/$(SRC).o) $(BINRLS)/lib$(MODULE_NAME)@DLLEXT@ 60 +$(BINRLS)/$(PLUGIN_NAME): $(foreach SRC, $(basename $(PLUGIN_SRC)), $(OBJRLS)/$(SRC).o) $(BINRLS)$(DLL_NAME)
55 @echo " CCLD `basename $@`" 61 @echo " CCLD `basename $@`"
56 @$(MKDIR) `dirname $@` 62 @$(MKDIR) `dirname $@`
57 @$(LD) $(DLL_FLAGS) $(LDSOFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) $(PW3270_LIBS) $(GTK_LIBS) 63 @$(LD) $(DLL_FLAGS) $(LDSOFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) $(PW3270_LIBS) $(GTK_LIBS)
58 64
59 -$(BINRLS)/lib$(MODULE_NAME)@DLLEXT@: $(foreach SRC, $(basename $(EXTAPI_SRC)), $(OBJRLS)/$(SRC).o) 65 +$(BINRLS)$(DLL_NAME): $(foreach SRC, $(basename $(EXTAPI_SRC)), $(OBJRLS)/$(SRC).o)
60 @echo " CCLD `basename $@`" 66 @echo " CCLD `basename $@`"
61 @$(MKDIR) `dirname $@` 67 @$(MKDIR) `dirname $@`
62 @$(LD) $(DLL_FLAGS) $(LDSOFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) $(LIB3270_LIBS) 68 @$(LD) $(DLL_FLAGS) $(LDSOFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) $(LIB3270_LIBS)
src/plugins/rx3270/pluginmain.c
@@ -29,8 +29,8 @@ @@ -29,8 +29,8 @@
29 29
30 #include <pw3270.h> 30 #include <pw3270.h>
31 #include <pw3270/plugin.h> 31 #include <pw3270/plugin.h>
32 - #include <errno.h>  
33 - #include <lib3270/log.h> 32 +
  33 + #include "rx3270.h"
34 34
35 /*--[ Implement ]------------------------------------------------------------------------------------*/ 35 /*--[ Implement ]------------------------------------------------------------------------------------*/
36 36
src/plugins/rx3270/rx3270.h
@@ -0,0 +1,48 @@ @@ -0,0 +1,48 @@
  1 +/*
  2 + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270
  3 + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a
  4 + * aplicativos mainframe. Registro no INPI sob o nome G3270.
  5 + *
  6 + * Copyright (C) <2008> <Banco do Brasil S.A.>
  7 + *
  8 + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob
  9 + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela
  10 + * Free Software Foundation.
  11 + *
  12 + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER
  13 + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO
  14 + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para
  15 + * obter mais detalhes.
  16 + *
  17 + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este
  18 + * programa; se não, escreva para a Free Software Foundation, Inc., 59 Temple
  19 + * Place, Suite 330, Boston, MA, 02111-1307, USA
  20 + *
  21 + * Este programa está nomeado como pluginmain.c e possui - linhas de código.
  22 + *
  23 + * Contatos:
  24 + *
  25 + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)
  26 + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)
  27 + *
  28 + */
  29 +
  30 +#ifndef RX3270_H_INCLUDED
  31 +
  32 + #define RX3270_H_INCLUDED 1
  33 +
  34 + #include <errno.h>
  35 + #include <lib3270/config.h>
  36 + #include <lib3270.h>
  37 + #include <lib3270/log.h>
  38 + #include <oorexxapi.h>
  39 +
  40 +/*---[ Exports ]---------------------------------------------------------------------------------------------*/
  41 +
  42 + LIB3270_EXPORT RexxRoutineEntry rx3270_functions[];
  43 + LIB3270_EXPORT RexxPackageEntry rx3270_package_entry;
  44 +
  45 +/*---[ Globals ]---------------------------------------------------------------------------------------------*/
  46 +
  47 +
  48 +#endif // RX3270_H_INCLUDED
src/plugins/rx3270/rxapimain.c
@@ -26,3 +26,95 @@ @@ -26,3 +26,95 @@
26 * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) 26 * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça)
27 * 27 *
28 */ 28 */
  29 +
  30 + /*
  31 + * Reference:
  32 + *
  33 + * http://www.oorexx.org/docs/rexxpg/x2950.htm
  34 + *
  35 + */
  36 +
  37 + #include <pw3270.h>
  38 + #include <pw3270/plugin.h>
  39 + #include <oorexxapi.h>
  40 +
  41 + #include "rx3270.h"
  42 +
  43 +// create function declarations for the linker
  44 +REXX_TYPED_ROUTINE_PROTOTYPE(rx3270LoadFuncs);
  45 +REXX_TYPED_ROUTINE_PROTOTYPE(rx3270DropFuncs);
  46 +REXX_TYPED_ROUTINE_PROTOTYPE(rx3270Version);
  47 +
  48 +/*--[ Globals ]--------------------------------------------------------------------------------------*/
  49 +
  50 +#if defined WIN32
  51 + BOOL WINAPI DllMain(HANDLE hinst, DWORD dwcallpurpose, LPVOID lpvResvd);
  52 + static int librx3270_loaded(void);
  53 + static int librx3270_unloaded(void);
  54 +#else
  55 + int librx3270_loaded(void) __attribute__((constructor));
  56 + int librx3270_unloaded(void) __attribute__((destructor));
  57 +#endif
  58 +
  59 +/*--[ Rexx Package description ]---------------------------------------------------------------------*/
  60 +
  61 +
  62 +// now build the actual entry list
  63 +RexxRoutineEntry rx3270_functions[] =
  64 +{
  65 + REXX_TYPED_ROUTINE(rx3270Version, rx3270Version),
  66 + REXX_LAST_ROUTINE()
  67 +};
  68 +
  69 +RexxPackageEntry rx3270_package_entry =
  70 +{
  71 + STANDARD_PACKAGE_HEADER
  72 + REXX_INTERPRETER_4_0_0, /**> anything after 4.0.0 will work */
  73 + "RX3270", /**> name of the package */
  74 + PACKAGE_VERSION, /**> package information */
  75 + NULL, /**> no load/unload functions */
  76 + NULL, /**> no load/unload functions */
  77 + rx3270_functions, /**> the exported functions */
  78 + NULL /**> no methods in rx3270. */
  79 +};
  80 +
  81 +// package loading stub.
  82 +OOREXX_GET_PACKAGE(rx3270);
  83 +
  84 +/*--[ Implement ]------------------------------------------------------------------------------------*/
  85 +
  86 +#if defined WIN32
  87 +BOOL WINAPI DllMain(HANDLE hinst, DWORD dwcallpurpose, LPVOID lpvResvd)
  88 +{
  89 + switch(dwcallpurpose)
  90 + {
  91 + case DLL_PROCESS_ATTACH:
  92 + librx3270_loaded();
  93 + break;
  94 +
  95 + case DLL_PROCESS_DETACH:
  96 + librx3270_unloaded();
  97 + break;
  98 + }
  99 +
  100 + return TRUE;
  101 +}
  102 +#endif // WIN32
  103 +
  104 +int librx3270_loaded(void)
  105 +{
  106 + trace("%s %s %s",__FUNCTION__,__DATE__,__TIME__);
  107 + return 0;
  108 +}
  109 +
  110 +int librx3270_unloaded(void)
  111 +{
  112 + trace("%s",__FUNCTION__);
  113 + return 0;
  114 +}
  115 +
  116 +RexxRoutine0(CSTRING, rx3270Version)
  117 +{
  118 + return "teste"; // lib3270_get_version();
  119 +}
  120 +