Commit 1985aec3b122b12af040c0098f25b63ca15784f5

Authored by Perry Werneck
1 parent 6f1e87d5
Exists in master and in 1 other branch develop

Updating plugin tester.

@@ -118,7 +118,7 @@ $(OBJDBG)/%.o: \ @@ -118,7 +118,7 @@ $(OBJDBG)/%.o: \
118 $(DEPENDS) 118 $(DEPENDS)
119 119
120 @echo $< ... 120 @echo $< ...
121 - @$(MKDIR) `dirname $@` 121 + @$(MKDIR) $(@D)
122 122
123 @$(CC) \ 123 @$(CC) \
124 $(CFLAGS) \ 124 $(CFLAGS) \
@@ -130,7 +130,7 @@ $(OBJDBG)/%.o: \ @@ -130,7 +130,7 @@ $(OBJDBG)/%.o: \
130 %.rc 130 %.rc
131 131
132 @echo $< ... 132 @echo $< ...
133 - @$(MKDIR) `dirname $@` 133 + @$(MKDIR) $(@D)
134 @$(WINDRES) $< -O coff -o $@ 134 @$(WINDRES) $< -O coff -o $@
135 135
136 #---[ Release Rules ]-------------------------------------------------------------------- 136 #---[ Release Rules ]--------------------------------------------------------------------
@@ -140,7 +140,7 @@ $(OBJRLS)/%.o: \ @@ -140,7 +140,7 @@ $(OBJRLS)/%.o: \
140 $(DEPENDS) 140 $(DEPENDS)
141 141
142 @echo $< ... 142 @echo $< ...
143 - @$(MKDIR) `dirname $@` 143 + @$(MKDIR) $(@D)
144 @$(CC) \ 144 @$(CC) \
145 $(CFLAGS) \ 145 $(CFLAGS) \
146 -DNDEBUG=1 \ 146 -DNDEBUG=1 \
@@ -150,7 +150,7 @@ $(OBJRLS)/%.o: \ @@ -150,7 +150,7 @@ $(OBJRLS)/%.o: \
150 %.rc 150 %.rc
151 151
152 @echo $< ... 152 @echo $< ...
153 - @$(MKDIR) `dirname $@` 153 + @$(MKDIR) $(@D)
154 @$(WINDRES) $< -O coff -o $@ 154 @$(WINDRES) $< -O coff -o $@
155 155
156 #---[ Misc Rules ]----------------------------------------------------------------------- 156 #---[ Misc Rules ]-----------------------------------------------------------------------
@@ -159,7 +159,7 @@ $(POTDIR)/$(MODULE_NAME)/%.pot: \ @@ -159,7 +159,7 @@ $(POTDIR)/$(MODULE_NAME)/%.pot: \
159 %.c 159 %.c
160 160
161 @echo $(notdir $@) ... 161 @echo $(notdir $@) ...
162 - @$(MKDIR) `dirname $@` 162 + @$(MKDIR) $(@D)
163 @$(XGETTEXT) \ 163 @$(XGETTEXT) \
164 --language=C \ 164 --language=C \
165 --keyword=_ \ 165 --keyword=_ \
@@ -173,7 +173,7 @@ $(POTDIR)/$(MODULE_NAME)/%.pot: \ @@ -173,7 +173,7 @@ $(POTDIR)/$(MODULE_NAME)/%.pot: \
173 %.rc 173 %.rc
174 174
175 @echo $< ... 175 @echo $< ...
176 - @$(MKDIR) `dirname $@` 176 + @$(MKDIR) $(@D)
177 @touch $@ 177 @touch $@
178 178
179 179
@@ -184,47 +184,9 @@ all: \ @@ -184,47 +184,9 @@ all: \
184 $(POTDIR)/$(MODULE_NAME).pot 184 $(POTDIR)/$(MODULE_NAME).pot
185 185
186 Release: \ 186 Release: \
187 - $(BINRLS)/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@ \ 187 + $(BINRLS)/$(MODULE_NAME)@DLLEXT@ \
188 $(BINRLS)/$(PACKAGE_NAME)d@EXEEXT@ 188 $(BINRLS)/$(PACKAGE_NAME)d@EXEEXT@
189 189
190 -$(BINRLS)/lib$(MODULE_NAME).a: \  
191 - $(foreach SRC, $(basename $(CORE_SOURCES)), $(OBJRLS)/$(SRC).o)  
192 -  
193 - @$(MKDIR) `dirname $@`  
194 - @echo $< ...  
195 -  
196 - @$(AR) rcs $@ $^  
197 -  
198 -$(BINRLS)/$(MODULE_NAME)@DLLEXT@: \  
199 - $(foreach SRC, $(basename $(PLUGIN_SOURCES)), $(OBJRLS)/$(SRC).o) \  
200 - $(BINRLS)/lib$(MODULE_NAME).a  
201 -  
202 - @$(MKDIR) `dirname $@`  
203 - @echo $< ...  
204 - @$(LD) \  
205 - -shared -Wl,-soname,$(@F) \  
206 - -o $@ \  
207 - $(LDFLAGS) \  
208 - $(foreach SRC, $(basename $(PLUGIN_SOURCES)), $(OBJRLS)/$(SRC).o) \  
209 - -L$(BINRLS) -l$(MODULE_NAME) \  
210 - $(V3270_LIBS) \  
211 - $(LIBS) \  
212 - $(GTK_LIBS)  
213 -  
214 -$(BINRLS)/$(PACKAGE_NAME)d@EXEEXT@: \  
215 - $(foreach SRC, $(basename $(SERVICE_SOURCES)), $(OBJRLS)/$(SRC).o) \  
216 - $(BINRLS)/lib$(MODULE_NAME).a  
217 -  
218 - @$(MKDIR) `dirname $@`  
219 - @echo $< ...  
220 - @$(LD) \  
221 - -o $@ \  
222 - $(foreach SRC, $(basename $(SERVICE_SOURCES)), $(OBJRLS)/$(SRC).o) \  
223 - -L$(BINRLS) \  
224 - $(LDFLAGS) \  
225 - $(LIBS) \  
226 - -l$(MODULE_NAME) \  
227 - $(GLIB_LIBS)  
228 190
229 191
230 #---[ Install Targets ]------------------------------------------------------------------ 192 #---[ Install Targets ]------------------------------------------------------------------
@@ -257,31 +219,22 @@ locale: \ @@ -257,31 +219,22 @@ locale: \
257 #---[ Debug Targets ]-------------------------------------------------------------------- 219 #---[ Debug Targets ]--------------------------------------------------------------------
258 220
259 Debug: \ 221 Debug: \
260 - $(BINDBG)/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@ \  
261 - $(BINDBG)/$(MODULE_NAME)@EXEEXT@ \  
262 - $(BINDBG)/$(PACKAGE_NAME)d@EXEEXT@  
263 -  
264 -Debug-plugin: \  
265 - $(BINDBG)/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@ \ 222 + $(BINDBG)/$(MODULE_NAME)@DLLEXT@ \
266 $(BINDBG)/$(MODULE_NAME)@EXEEXT@ 223 $(BINDBG)/$(MODULE_NAME)@EXEEXT@
267 224
268 -Debug-service: \  
269 - $(BINDBG)/$(PACKAGE_NAME)d@EXEEXT@  
270 -  
271 $(BINDBG)/lib$(MODULE_NAME).a: \ 225 $(BINDBG)/lib$(MODULE_NAME).a: \
272 $(foreach SRC, $(basename $(CORE_SOURCES)), $(OBJDBG)/$(SRC).o) 226 $(foreach SRC, $(basename $(CORE_SOURCES)), $(OBJDBG)/$(SRC).o)
273 227
274 - @$(MKDIR) `dirname $@` 228 + @$(MKDIR) $(@D)
275 @echo $< ... 229 @echo $< ...
276 230
277 @$(AR) rcs $@ $^ 231 @$(AR) rcs $@ $^
278 232
279 233
280 $(BINDBG)/$(MODULE_NAME)@EXEEXT@: \ 234 $(BINDBG)/$(MODULE_NAME)@EXEEXT@: \
281 - $(foreach SRC, $(basename $(TEST_SOURCES)), $(OBJDBG)/$(SRC).o) \  
282 - $(BINDBG)/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@ 235 + $(foreach SRC, $(basename $(TEST_SOURCES)), $(OBJDBG)/$(SRC).o)
283 236
284 - @$(MKDIR) `dirname $@` 237 + @$(MKDIR) $(@D)
285 @echo $< ... 238 @echo $< ...
286 @$(LD) \ 239 @$(LD) \
287 -o $@ \ 240 -o $@ \
@@ -290,15 +243,15 @@ $(BINDBG)/$(MODULE_NAME)@EXEEXT@: \ @@ -290,15 +243,15 @@ $(BINDBG)/$(MODULE_NAME)@EXEEXT@: \
290 -Wl,-rpath,$(BINDBG) \ 243 -Wl,-rpath,$(BINDBG) \
291 $(LDFLAGS) \ 244 $(LDFLAGS) \
292 $(LIBS) \ 245 $(LIBS) \
293 - -l$(MODULE_NAME) \  
294 $(V3270_LIBS) \ 246 $(V3270_LIBS) \
295 - $(GTK_LIBS) 247 + $(GTK_LIBS) \
  248 + $(GLIB_LIBS)
296 249
297 $(BINDBG)/$(PACKAGE_NAME)d@EXEEXT@: \ 250 $(BINDBG)/$(PACKAGE_NAME)d@EXEEXT@: \
298 $(foreach SRC, $(basename $(SERVICE_SOURCES)), $(OBJDBG)/$(SRC).o) \ 251 $(foreach SRC, $(basename $(SERVICE_SOURCES)), $(OBJDBG)/$(SRC).o) \
299 $(BINDBG)/lib$(MODULE_NAME).a 252 $(BINDBG)/lib$(MODULE_NAME).a
300 253
301 - @$(MKDIR) `dirname $@` 254 + @$(MKDIR) $(@D)
302 @echo $< ... 255 @echo $< ...
303 @$(LD) \ 256 @$(LD) \
304 -o $@ \ 257 -o $@ \
@@ -310,43 +263,11 @@ $(BINDBG)/$(PACKAGE_NAME)d@EXEEXT@: \ @@ -310,43 +263,11 @@ $(BINDBG)/$(PACKAGE_NAME)d@EXEEXT@: \
310 -l$(MODULE_NAME) \ 263 -l$(MODULE_NAME) \
311 $(GLIB_LIBS) 264 $(GLIB_LIBS)
312 265
313 -run-plugin: \  
314 - $(BINDBG)/$(MODULE_NAME)@EXEEXT@  
315 -  
316 - @LD_LIBRARY_PATH=$(BINDBG) \  
317 - $(BINDBG)/$(MODULE_NAME)@EXEEXT@  
318 -  
319 -run-service: \  
320 - $(BINDBG)/$(PACKAGE_NAME)d@EXEEXT@  
321 -  
322 - @LD_LIBRARY_PATH=$(BINDBG) \  
323 - $(BINDBG)/$(PACKAGE_NAME)d@EXEEXT@  
324 -  
325 -$(BINDBG)/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@: \  
326 - $(BINDBG)/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@.@PACKAGE_MAJOR_VERSION@  
327 -  
328 - @echo $< ...  
329 - @rm -f $@  
330 - @$(LN_S) \  
331 - @DLLPREFIX@$(MODULE_NAME)@DLLEXT@.@PACKAGE_MAJOR_VERSION@ \  
332 - $@  
333 -  
334 -$(BINDBG)/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@.@PACKAGE_MAJOR_VERSION@: \  
335 - $(BINDBG)/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@.@PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@  
336 -  
337 - @rm -f $@  
338 - @$(LN_S) \  
339 - @DLLPREFIX@$(MODULE_NAME)@DLLEXT@.@PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@ \  
340 - $@  
341 -  
342 -$(BINDBG)/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@.@PACKAGE_MAJOR_VERSION@.@PACKAGE_MINOR_VERSION@: \ 266 +$(BINDBG)/$(MODULE_NAME)@DLLEXT@: \
343 $(foreach SRC, $(basename $(PLUGIN_SOURCES)), $(OBJDBG)/$(SRC).o) \ 267 $(foreach SRC, $(basename $(PLUGIN_SOURCES)), $(OBJDBG)/$(SRC).o) \
344 $(BINDBG)/lib$(MODULE_NAME).a 268 $(BINDBG)/lib$(MODULE_NAME).a
345 269
346 - @rm -f $(BINDBG)/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@  
347 - @rm -f $(BINDBG)/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@.@PACKAGE_MAJOR_VERSION@  
348 -  
349 - @$(MKDIR) `dirname $@` 270 + @$(MKDIR) $(@D)
350 @echo $< ... 271 @echo $< ...
351 @$(LD) \ 272 @$(LD) \
352 -shared -Wl,-soname,$(@F) \ 273 -shared -Wl,-soname,$(@F) \
@@ -358,6 +279,23 @@ $(BINDBG)/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@.@PACKAGE_MAJOR_VERSION@.@PACKAGE_MIN @@ -358,6 +279,23 @@ $(BINDBG)/@DLLPREFIX@$(MODULE_NAME)@DLLEXT@.@PACKAGE_MAJOR_VERSION@.@PACKAGE_MIN
358 $(LIBS) \ 279 $(LIBS) \
359 $(GTK_LIBS) 280 $(GTK_LIBS)
360 281
  282 +
  283 +run: \
  284 + run-plugin
  285 +
  286 +run-plugin: \
  287 + $(BINDBG)/$(MODULE_NAME)@EXEEXT@
  288 +
  289 + @LD_LIBRARY_PATH=$(BINDBG) \
  290 + $(BINDBG)/$(MODULE_NAME)@EXEEXT@
  291 +
  292 +run-service: \
  293 + $(BINDBG)/$(PACKAGE_NAME)d@EXEEXT@
  294 +
  295 + @LD_LIBRARY_PATH=$(BINDBG) \
  296 + $(BINDBG)/$(PACKAGE_NAME)d@EXEEXT@
  297 +
  298 +
361 #---[ Clean Targets ]-------------------------------------------------------------------- 299 #---[ Clean Targets ]--------------------------------------------------------------------
362 300
363 clean: \ 301 clean: \
src/plugin/plugin.c
@@ -45,6 +45,10 @@ @@ -45,6 +45,10 @@
45 #include <v3270.h> 45 #include <v3270.h>
46 #include <lib3270/ipc.h> 46 #include <lib3270/ipc.h>
47 47
  48 + int pw3270_plugin_stop(GtkWidget *window, GtkWidget *terminal) {
  49 + g_object_set_data(G_OBJECT(terminal), "ipc-object-info", NULL);
  50 + }
  51 +
48 int pw3270_plugin_start(GtkWidget *window, GtkWidget *terminal) { 52 int pw3270_plugin_start(GtkWidget *window, GtkWidget *terminal) {
49 53
50 // Creates IPC, associate it with the terminal window 54 // Creates IPC, associate it with the terminal window
src/testprogram/testprogram.c
@@ -34,13 +34,37 @@ @@ -34,13 +34,37 @@
34 * 34 *
35 */ 35 */
36 36
  37 + #include <config.h>
37 #include <v3270.h> 38 #include <v3270.h>
38 #include <lib3270/ipc.h> 39 #include <lib3270/ipc.h>
39 #include <string.h> 40 #include <string.h>
40 #include <stdlib.h> 41 #include <stdlib.h>
41 42
  43 + /*---[ Globals ]------------------------------------------------------------------------------------*/
  44 +
  45 + const gchar * plugin_path = ".bin/Debug";
  46 + const gchar * plugin_name = "ipc3270." G_MODULE_SUFFIX;
  47 +
42 /*---[ Implement ]----------------------------------------------------------------------------------*/ 48 /*---[ Implement ]----------------------------------------------------------------------------------*/
43 49
  50 + static void close_module(GtkWidget *widget, GModule *module)
  51 + {
  52 + g_message("Closing module %p",module);
  53 +
  54 + static void (*stop)(GtkWidget *window, GtkWidget *terminal) = NULL;
  55 + if(!g_module_symbol(module,"pw3270_plugin_stop",(gpointer) &stop))
  56 + {
  57 + g_message("Can't get stop method from plugin: %s",g_module_error());
  58 + }
  59 + else
  60 + {
  61 + stop(gtk_widget_get_toplevel(widget),widget);
  62 + }
  63 +
  64 + g_module_close(module);
  65 + g_message("Module %p was closed",module);
  66 + }
  67 +
44 static void activate(GtkApplication* app, G_GNUC_UNUSED gpointer user_data) { 68 static void activate(GtkApplication* app, G_GNUC_UNUSED gpointer user_data) {
45 69
46 GtkWidget * window = gtk_application_window_new(app); 70 GtkWidget * window = gtk_application_window_new(app);
@@ -54,9 +78,38 @@ @@ -54,9 +78,38 @@
54 gtk_container_add(GTK_CONTAINER(window),terminal); 78 gtk_container_add(GTK_CONTAINER(window),terminal);
55 gtk_widget_show_all (window); 79 gtk_widget_show_all (window);
56 80
57 - pw3270_plugin_start(window, terminal); 81 + // Load plugin
  82 + {
  83 + g_autofree gchar * plugin = g_build_filename(plugin_path,plugin_name,NULL);
  84 +
  85 + g_message("Loading %s",plugin);
  86 +
  87 + GModule * module = g_module_open(plugin,G_MODULE_BIND_LOCAL);
  88 +
  89 + if(module)
  90 + {
  91 + g_signal_connect (terminal, "destroy", G_CALLBACK(close_module), module);
  92 + }
  93 + else
  94 + {
  95 + g_message("Can't open \"%s\": %s",plugin,g_module_error());
  96 + gtk_main_quit();
  97 + }
  98 +
  99 + static void (*start)(GtkWidget *window, GtkWidget *terminal) = NULL;
  100 + if(!g_module_symbol(module,"pw3270_plugin_start",(gpointer) &start))
  101 + {
  102 + g_message("Can't get start method from \"%s\": %s",plugin,g_module_error());
  103 + gtk_main_quit();
  104 + }
  105 +
  106 + g_message("Starting plugin %p",module);
  107 + start(window,terminal);
  108 +
  109 + }
58 110
59 - const gchar *url = getenv("LIB3270_DEFAULT_HOST"); 111 + // Setup title.
  112 + const gchar *url = lib3270_get_url(v3270_get_session(terminal));
60 if(url) { 113 if(url) {
61 114
62 v3270_set_url(terminal,url); 115 v3270_set_url(terminal,url);