Commit 8a5290e737a569b677cf81bc4a27139fc67d3f24

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

Implementando plugin rexx já no formato do ooRexx 4.1

configure.ac
... ... @@ -351,10 +351,14 @@ else
351 351 AC_DEFINE(HAVE_REXX)
352 352 AC_PATH_TOOL([REXXC], [rexxc], [cp], `$REXXCONFIG --prefix`/bin )
353 353 PLUGINS="$PLUGINS rx3270"
  354 + REXX_CFLAGS="$CFLAGS `$REXXCONFIG --cflags`"
  355 + REXX_LIBS="$LIBS `$REXXCONFIG --libs`"
354 356 fi
355 357  
356 358 AC_SUBST(REXXC)
357 359 AC_SUBST(REXXCONFIG)
  360 +AC_SUBST(REXX_CFLAGS)
  361 +AC_SUBST(REXX_LIBS)
358 362  
359 363 #--[ Pre-reqs ]-----------------------------------------------------------------------------------------------------------------------------------------------
360 364 AC_SUBST(LIB3270_REQUIRES)
... ...
pw3270.cbp
... ... @@ -235,6 +235,7 @@
235 235 <Unit filename="src/plugins/rx3270/pluginmain.c">
236 236 <Option compilerVar="CC" />
237 237 </Unit>
  238 + <Unit filename="src/plugins/rx3270/rx3270.h" />
238 239 <Unit filename="src/plugins/rx3270/rxapimain.c">
239 240 <Option compilerVar="CC" />
240 241 </Unit>
... ...
src/include/plugin.mak.in
... ... @@ -54,6 +54,8 @@ DLL_FLAGS=@DLL_FLAGS@
54 54 DLL_CFLAGS=@DLL_CFLAGS@
55 55 DEBUG_CFLAGS=-DDEBUG=1 -g -Wall
56 56 LIB3270_MODE ?= Default
  57 +DLL_NAME=@DLLDIR@/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@.@VERSION@
  58 +PLUGIN_NAME=plugins/$(MODULE_NAME)@DLLEXT@
57 59  
58 60 ifeq ($(LIB3270_MODE),Debug)
59 61 PW3270_LIBS="-L$(BINDBG)@DLLDIR@ -l3270"
... ...
src/plugins/rx3270/Makefile.in
... ... @@ -22,41 +22,47 @@
22 22 #
23 23 # perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)
24 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 27 #---[ Sources ]----------------------------------------------------------------
30 28  
31 29 MODULE_NAME=rx3270
32   -DEPENDS=*.h *.c ../../include/*.h ../../include/lib3270/*.h Makefile
  30 +DEPENDS=*.h ../../include/*.h ../../include/lib3270/*.h Makefile
33 31 PLUGIN_SRC=pluginmain.c
34 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 42 #---[ Include plugin rules ]---------------------------------------------------
37 43  
38 44 include ../../include/plugin.mak
39 45  
40 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 49 @echo " CCLD `basename $@`"
44 50 @$(MKDIR) `dirname $@`
45 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 54 @echo " CCLD `basename $@`"
49 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 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 61 @echo " CCLD `basename $@`"
56 62 @$(MKDIR) `dirname $@`
57 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 66 @echo " CCLD `basename $@`"
61 67 @$(MKDIR) `dirname $@`
62 68 @$(LD) $(DLL_FLAGS) $(LDSOFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) $(LIB3270_LIBS)
... ...
src/plugins/rx3270/pluginmain.c
... ... @@ -29,8 +29,8 @@
29 29  
30 30 #include <pw3270.h>
31 31 #include <pw3270/plugin.h>
32   - #include <errno.h>
33   - #include <lib3270/log.h>
  32 +
  33 + #include "rx3270.h"
34 34  
35 35 /*--[ Implement ]------------------------------------------------------------------------------------*/
36 36  
... ...
src/plugins/rx3270/rx3270.h
... ... @@ -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 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 +
... ...