Hi, Quick Summary:
Here's a simple patch to make the modules in the new modular evas to link to libevas otherwise certain symbols that these modules depend on are not found at runtime (in certain situations). Not quite sure if it is just an oversight or if there is a reason. If there is a reason, the below is a summary why I prefer them to link to libevas.so Explanation: * When a module gets loaded with dlopen, it contains symbols that are only in libevas.so (eg. evas_common_cpu_init). Problem is that if the libevas.so is loaded in an environment where RTLD_GLOBAL is not used, then the libevas.so symbols do not get exported to the dynamically loaded module (for example, software_x11/module.so). * An example of another project doing similar things is gtk-2. If you look at their theme engines, they are dynamically loaded, but the modules are linked to libgtk-x11-2.0.so. * Why I need it? Well, actually I've been working on and off on wrapping the EFL in python so I can quickly prototype apps that use evas/ecore. This is for certain prototypes I work on for my research lab. I know there is another group of people with another Python wrapper, but I'm more familiar with hacking on my own code which I will release in due course[1]. Python (correctly) loads modules using dlopen() but without RTLD_GLOBAL, and hence all the dynamically loaded libraries after that do not expose their symbols in the same way that you'd expect if you just compiled an executable such as evas_software_x11_test. Hope that helps explain why I'd like the modules to be linked back to libevas.so. My apologies if I just explained something painfully obvious to all but myself :) Cheers, Alastair [1] http://projects.liquidx.net/python/browser/pye/trunk/ -- Alastair Tse (liquidx) Python, Bluetooth, PDA, Chinese/JK Package Developer [W] http://dev.gentoo.org/~liquidx/ [EMAIL PROTECTED] [EMAIL PROTECTED]
Index: src/modules/engines/buffer/Makefile.am =================================================================== RCS file: /root/e17/libs/evas/src/modules/engines/buffer/Makefile.am,v retrieving revision 1.1.1.2 diff -u -r1.1.1.2 Makefile.am --- src/modules/engines/buffer/Makefile.am 14 Jan 2006 20:35:53 -0000 1.1.1.2 +++ src/modules/engines/buffer/Makefile.am 16 Jan 2006 13:38:56 -0000 @@ -21,9 +21,9 @@ evas_engine.c \ evas_outbuf.c +module_la_LIBADD = -levas module_la_LDFLAGS = -module -avoid-version \ -L$(top_builddir)/src/lib -L$(top_builddir)/src/lib/.libs - module_la_DEPENDENCIES = \ $(top_builddir)/config.h Index: src/modules/engines/cairo_common/Makefile.am =================================================================== RCS file: /root/e17/libs/evas/src/modules/engines/cairo_common/Makefile.am,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 Makefile.am --- src/modules/engines/cairo_common/Makefile.am 14 Jan 2006 12:35:36 -0000 1.1.1.1 +++ src/modules/engines/cairo_common/Makefile.am 16 Jan 2006 13:38:56 -0000 @@ -17,7 +17,7 @@ evas_cairo_private.h \ evas_cairo_main.c -libevas_engine_cairo_common_la_LIBADD = @CAIRO_LIBS@ +libevas_engine_cairo_common_la_LIBADD = @CAIRO_LIBS@ -levas libevas_engine_cairo_common_la_DEPENDENCIES = \ $(top_builddir)/config.h Index: src/modules/engines/cairo_x11/Makefile.am =================================================================== RCS file: /root/e17/libs/evas/src/modules/engines/cairo_x11/Makefile.am,v retrieving revision 1.1.1.2 diff -u -r1.1.1.2 Makefile.am --- src/modules/engines/cairo_x11/Makefile.am 14 Jan 2006 20:35:53 -0000 1.1.1.2 +++ src/modules/engines/cairo_x11/Makefile.am 16 Jan 2006 13:38:56 -0000 @@ -22,7 +22,7 @@ evas_engine.c \ evas_x_main.c -module_la_LIBADD = @CAIRO_LIBS@ @x_libs@ ../cairo_common/libevas_engine_cairo_common.la +module_la_LIBADD = @CAIRO_LIBS@ @x_libs@ ../cairo_common/libevas_engine_cairo_common.la -levas module_la_LDFLAGS = -module -avoid-version -L$(top_builddir)/src/lib -L$(top_builddir)/src/lib/.libs module_la_DEPENDENCIES = \ Index: src/modules/engines/directfb/Makefile.am =================================================================== RCS file: /root/e17/libs/evas/src/modules/engines/directfb/Makefile.am,v retrieving revision 1.1.1.2 diff -u -r1.1.1.2 Makefile.am --- src/modules/engines/directfb/Makefile.am 14 Jan 2006 20:35:53 -0000 1.1.1.2 +++ src/modules/engines/directfb/Makefile.am 16 Jan 2006 13:38:56 -0000 @@ -22,7 +22,7 @@ evas_engine_dfb_image_objects.h \ evas_engine_dfb.h -module_la_LIBADD = @DIRECTFB_LIBS@ +module_la_LIBADD = @DIRECTFB_LIBS@ -levas module_la_LDFLAGS = -module -avoid-version \ -L$(top_builddir)/src/lib -L$(top_builddir)/src/lib/.libs Index: src/modules/engines/fb/Makefile.am =================================================================== RCS file: /root/e17/libs/evas/src/modules/engines/fb/Makefile.am,v retrieving revision 1.1.1.2 diff -u -r1.1.1.2 Makefile.am --- src/modules/engines/fb/Makefile.am 14 Jan 2006 20:35:53 -0000 1.1.1.2 +++ src/modules/engines/fb/Makefile.am 16 Jan 2006 13:38:56 -0000 @@ -25,7 +25,7 @@ module_la_DEPENDENCIES = \ $(top_builddir)/config.h - +module_la_LIBADD = -levas module_la_LDFLAGS = -module -avoid-version \ -L$(top_builddir)/src/lib -L$(top_builddir)/src/lib/.libs Index: src/modules/engines/gl_common/Makefile.am =================================================================== RCS file: /root/e17/libs/evas/src/modules/engines/gl_common/Makefile.am,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 Makefile.am --- src/modules/engines/gl_common/Makefile.am 14 Jan 2006 12:35:36 -0000 1.1.1.1 +++ src/modules/engines/gl_common/Makefile.am 16 Jan 2006 13:38:56 -0000 @@ -25,7 +25,7 @@ evas_gl_rectangle.c \ evas_gl_texture.c -libevas_engine_gl_common_la_LIBADD = @gl_libs@ +libevas_engine_gl_common_la_LIBADD = @gl_libs@ -levas libevas_engine_gl_common_la_DEPENDENCIES = \ $(top_builddir)/config.h Index: src/modules/engines/gl_x11/Makefile.am =================================================================== RCS file: /root/e17/libs/evas/src/modules/engines/gl_x11/Makefile.am,v retrieving revision 1.1.1.2 diff -u -r1.1.1.2 Makefile.am --- src/modules/engines/gl_x11/Makefile.am 14 Jan 2006 20:35:53 -0000 1.1.1.2 +++ src/modules/engines/gl_x11/Makefile.am 16 Jan 2006 13:38:56 -0000 @@ -22,7 +22,7 @@ evas_engine.c \ evas_x_main.c -module_la_LIBADD = @gl_libs@ @x_libs@ ../gl_common/libevas_engine_gl_common.la +module_la_LIBADD = @gl_libs@ @x_libs@ ../gl_common/libevas_engine_gl_common.la -levas module_la_LDFLAGS = -module -avoid-version -L$(top_builddir)/src/lib -L$(top_builddir)/src/lib/.libs module_la_DEPENDENCIES = \ Index: src/modules/engines/software_qtopia/Makefile.am =================================================================== RCS file: /root/e17/libs/evas/src/modules/engines/software_qtopia/Makefile.am,v retrieving revision 1.1.1.3 diff -u -r1.1.1.3 Makefile.am --- src/modules/engines/software_qtopia/Makefile.am 14 Jan 2006 20:35:53 -0000 1.1.1.3 +++ src/modules/engines/software_qtopia/Makefile.am 16 Jan 2006 13:38:56 -0000 @@ -25,7 +25,7 @@ evas_outbuf.c \ evas_qt_main.cpp -module_la_LIBADD = @qt_libs@ +module_la_LIBADD = @qt_libs@ -levas module_la_LDFLAGS = -module -avoid-version -L$(top_builddir)/src/lib -L$(top_builddir)/src/lib/.libs module_la_DEPENDENCIES = \ Index: src/modules/engines/software_x11/Makefile.am =================================================================== RCS file: /root/e17/libs/evas/src/modules/engines/software_x11/Makefile.am,v retrieving revision 1.1.1.2 diff -u -r1.1.1.2 Makefile.am --- src/modules/engines/software_x11/Makefile.am 14 Jan 2006 20:35:53 -0000 1.1.1.2 +++ src/modules/engines/software_x11/Makefile.am 16 Jan 2006 13:38:56 -0000 @@ -25,7 +25,7 @@ evas_x_color.c \ evas_x_main.c -module_la_LIBADD = @x_libs@ +module_la_LIBADD = @x_libs@ -levas module_la_LDFLAGS = -module -avoid-version \ -L$(top_builddir)/src/lib -L$(top_builddir)/src/lib/.libs Index: src/modules/engines/software_xcb/Makefile.am =================================================================== RCS file: /root/e17/libs/evas/src/modules/engines/software_xcb/Makefile.am,v retrieving revision 1.1.1.3 diff -u -r1.1.1.3 Makefile.am --- src/modules/engines/software_xcb/Makefile.am 14 Jan 2006 20:35:53 -0000 1.1.1.3 +++ src/modules/engines/software_xcb/Makefile.am 16 Jan 2006 13:38:56 -0000 @@ -25,7 +25,7 @@ evas_xcb_color.c \ evas_xcb_main.c -module_la_LIBADD = @xcb_libs@ +module_la_LIBADD = @xcb_libs@ -levas module_la_LDFLAGS = -module -avoid-version -L$(top_builddir)/src/lib -L$(top_builddir)/src/lib/.libs module_la_DEPENDENCIES = \ Index: src/modules/engines/xrender_x11/Makefile.am =================================================================== RCS file: /root/e17/libs/evas/src/modules/engines/xrender_x11/Makefile.am,v retrieving revision 1.1.1.2 diff -u -r1.1.1.2 Makefile.am --- src/modules/engines/xrender_x11/Makefile.am 14 Jan 2006 20:35:53 -0000 1.1.1.2 +++ src/modules/engines/xrender_x11/Makefile.am 16 Jan 2006 13:38:56 -0000 @@ -26,7 +26,7 @@ evas_engine_font.c \ evas_engine_gradient.c -module_la_LIBADD = @x_libs@ +module_la_LIBADD = @x_libs@ -levas module_la_LDFLAGS = -module -avoid-version \ -L$(top_builddir)/src/lib -L$(top_builddir)/src/lib/.libs Index: src/modules/loaders/edb/Makefile.am =================================================================== RCS file: /root/e17/libs/evas/src/modules/loaders/edb/Makefile.am,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 Makefile.am --- src/modules/loaders/edb/Makefile.am 14 Jan 2006 20:05:41 -0000 1.1.1.1 +++ src/modules/loaders/edb/Makefile.am 16 Jan 2006 13:38:56 -0000 @@ -16,7 +16,7 @@ module_la_SOURCES = evas_image_load_edb.c -module_la_LIBADD = +module_la_LIBADD = -levas -ledb module_la_LDFLAGS = -module -avoid-version -L$(top_builddir)/src/lib -L$(top_builddir)/src/lib/.libs module_la_DEPENDENCIES = $(top_builddir)/config.h Index: src/modules/loaders/eet/Makefile.am =================================================================== RCS file: /root/e17/libs/evas/src/modules/loaders/eet/Makefile.am,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 Makefile.am --- src/modules/loaders/eet/Makefile.am 14 Jan 2006 20:05:41 -0000 1.1.1.1 +++ src/modules/loaders/eet/Makefile.am 16 Jan 2006 13:38:56 -0000 @@ -16,7 +16,7 @@ module_la_SOURCES = evas_image_load_eet.c -module_la_LIBADD = +module_la_LIBADD = -levas -leet module_la_LDFLAGS = -module -avoid-version -L$(top_builddir)/src/lib -L$(top_builddir)/src/lib/.libs module_la_DEPENDENCIES = $(top_builddir)/config.h Index: src/modules/loaders/jpeg/Makefile.am =================================================================== RCS file: /root/e17/libs/evas/src/modules/loaders/jpeg/Makefile.am,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 Makefile.am --- src/modules/loaders/jpeg/Makefile.am 14 Jan 2006 20:05:41 -0000 1.1.1.1 +++ src/modules/loaders/jpeg/Makefile.am 16 Jan 2006 13:38:56 -0000 @@ -16,7 +16,7 @@ module_la_SOURCES = evas_image_load_jpeg.c -module_la_LIBADD = +module_la_LIBADD = -levas -ljpeg module_la_LDFLAGS = -module -avoid-version -L$(top_builddir)/src/lib -L$(top_builddir)/src/lib/.libs module_la_DEPENDENCIES = $(top_builddir)/config.h Index: src/modules/loaders/png/Makefile.am =================================================================== RCS file: /root/e17/libs/evas/src/modules/loaders/png/Makefile.am,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 Makefile.am --- src/modules/loaders/png/Makefile.am 14 Jan 2006 20:05:41 -0000 1.1.1.1 +++ src/modules/loaders/png/Makefile.am 16 Jan 2006 13:38:56 -0000 @@ -16,7 +16,7 @@ module_la_SOURCES = evas_image_load_png.c -module_la_LIBADD = +module_la_LIBADD = -levas -lpng module_la_LDFLAGS = -module -avoid-version -L$(top_builddir)/src/lib -L$(top_builddir)/src/lib/.libs module_la_DEPENDENCIES = $(top_builddir)/config.h Index: src/modules/savers/edb/Makefile.am =================================================================== RCS file: /root/e17/libs/evas/src/modules/savers/edb/Makefile.am,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 Makefile.am --- src/modules/savers/edb/Makefile.am 15 Jan 2006 10:35:27 -0000 1.1.1.1 +++ src/modules/savers/edb/Makefile.am 16 Jan 2006 13:38:56 -0000 @@ -16,7 +16,7 @@ module_la_SOURCES = evas_image_save_edb.c -module_la_LIBADD = +module_la_LIBADD = -ledb -levas module_la_LDFLAGS = -module -avoid-version -L$(top_builddir)/src/lib -L$(top_builddir)/src/lib/.libs module_la_DEPENDENCIES = $(top_builddir)/config.h Index: src/modules/savers/eet/Makefile.am =================================================================== RCS file: /root/e17/libs/evas/src/modules/savers/eet/Makefile.am,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 Makefile.am --- src/modules/savers/eet/Makefile.am 15 Jan 2006 10:35:27 -0000 1.1.1.1 +++ src/modules/savers/eet/Makefile.am 16 Jan 2006 13:38:56 -0000 @@ -16,7 +16,7 @@ module_la_SOURCES = evas_image_save_eet.c -module_la_LIBADD = +module_la_LIBADD = -leet -levas module_la_LDFLAGS = -module -avoid-version -L$(top_builddir)/src/lib -L$(top_builddir)/src/lib/.libs module_la_DEPENDENCIES = $(top_builddir)/config.h Index: src/modules/savers/jpeg/Makefile.am =================================================================== RCS file: /root/e17/libs/evas/src/modules/savers/jpeg/Makefile.am,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 Makefile.am --- src/modules/savers/jpeg/Makefile.am 15 Jan 2006 10:35:27 -0000 1.1.1.1 +++ src/modules/savers/jpeg/Makefile.am 16 Jan 2006 13:38:56 -0000 @@ -16,7 +16,7 @@ module_la_SOURCES = evas_image_save_jpeg.c -module_la_LIBADD = +module_la_LIBADD = -ljpeg -levas module_la_LDFLAGS = -module -avoid-version -L$(top_builddir)/src/lib -L$(top_builddir)/src/lib/.libs module_la_DEPENDENCIES = $(top_builddir)/config.h Index: src/modules/savers/png/Makefile.am =================================================================== RCS file: /root/e17/libs/evas/src/modules/savers/png/Makefile.am,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 Makefile.am --- src/modules/savers/png/Makefile.am 15 Jan 2006 10:35:27 -0000 1.1.1.1 +++ src/modules/savers/png/Makefile.am 16 Jan 2006 13:38:56 -0000 @@ -16,7 +16,7 @@ module_la_SOURCES = evas_image_save_png.c -module_la_LIBADD = +module_la_LIBADD = -lpng -levas module_la_LDFLAGS = -module -avoid-version -L$(top_builddir)/src/lib -L$(top_builddir)/src/lib/.libs module_la_DEPENDENCIES = $(top_builddir)/config.h