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

Reply via email to