* evas: Move to Eina module and make it possible to build a libevas with
authorcedric <cedric@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Tue, 16 Jun 2009 13:01:36 +0000 (13:01 +0000)
committercedric <cedric@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Tue, 16 Jun 2009 13:01:36 +0000 (13:01 +0000)
everything in it.

Note: This patch break the module API, so make sure you recompile and install
every thing.

git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/evas@41055 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

80 files changed:
configure.ac
m4/evas_check_engine.m4
m4/evas_check_loader.m4
src/lib/Makefile.am
src/lib/canvas/evas_main.c
src/lib/engines/common/evas_image_load.c
src/lib/engines/common/evas_image_save.c
src/lib/file/evas_module.c
src/lib/file/evas_module.h
src/modules/engines/Makefile.am
src/modules/engines/buffer/Makefile.am
src/modules/engines/buffer/evas_engine.c
src/modules/engines/cairo_x11/Makefile.am
src/modules/engines/cairo_x11/evas_engine.c
src/modules/engines/direct3d/Makefile.am
src/modules/engines/direct3d/evas_engine.c
src/modules/engines/directfb/Makefile.am
src/modules/engines/directfb/evas_engine.c
src/modules/engines/fb/Makefile.am
src/modules/engines/fb/evas_engine.c
src/modules/engines/gl_glew/Makefile.am
src/modules/engines/gl_glew/evas_engine.c
src/modules/engines/gl_x11/Makefile.am
src/modules/engines/gl_x11/evas_engine.c
src/modules/engines/quartz/Makefile.am
src/modules/engines/quartz/evas_engine.c
src/modules/engines/software_16/Makefile.am
src/modules/engines/software_16/evas_engine.c
src/modules/engines/software_16_ddraw/Makefile.am
src/modules/engines/software_16_ddraw/evas_engine.c
src/modules/engines/software_16_sdl/Makefile.am
src/modules/engines/software_16_sdl/evas_engine.c
src/modules/engines/software_16_wince/Makefile.am
src/modules/engines/software_16_wince/evas_engine.c
src/modules/engines/software_16_x11/Makefile.am
src/modules/engines/software_16_x11/evas_engine.c
src/modules/engines/software_ddraw/Makefile.am
src/modules/engines/software_ddraw/evas_engine.c
src/modules/engines/software_gdi/Makefile.am
src/modules/engines/software_gdi/evas_engine.c
src/modules/engines/software_generic/Makefile.am
src/modules/engines/software_generic/evas_engine.c
src/modules/engines/software_qtopia/Makefile.am
src/modules/engines/software_qtopia/evas_engine.c
src/modules/engines/software_sdl/Makefile.am
src/modules/engines/software_sdl/evas_engine.c
src/modules/engines/software_x11/Makefile.am
src/modules/engines/software_x11/evas_engine.c
src/modules/engines/xrender_x11/Makefile.am
src/modules/engines/xrender_x11/evas_engine.c
src/modules/loaders/Makefile.am
src/modules/loaders/edb/Makefile.am
src/modules/loaders/edb/evas_image_load_edb.c
src/modules/loaders/eet/Makefile.am
src/modules/loaders/eet/evas_image_load_eet.c
src/modules/loaders/gif/Makefile.am
src/modules/loaders/gif/evas_image_load_gif.c
src/modules/loaders/jpeg/Makefile.am
src/modules/loaders/jpeg/evas_image_load_jpeg.c
src/modules/loaders/pmaps/Makefile.am
src/modules/loaders/pmaps/evas_image_load_pmaps.c
src/modules/loaders/png/Makefile.am
src/modules/loaders/png/evas_image_load_png.c
src/modules/loaders/svg/Makefile.am
src/modules/loaders/svg/evas_image_load_svg.c
src/modules/loaders/tiff/Makefile.am
src/modules/loaders/tiff/evas_image_load_tiff.c
src/modules/loaders/xpm/Makefile.am
src/modules/loaders/xpm/evas_image_load_xpm.c
src/modules/savers/Makefile.am
src/modules/savers/edb/Makefile.am
src/modules/savers/edb/evas_image_save_edb.c
src/modules/savers/eet/Makefile.am
src/modules/savers/eet/evas_image_save_eet.c
src/modules/savers/jpeg/Makefile.am
src/modules/savers/jpeg/evas_image_save_jpeg.c
src/modules/savers/png/Makefile.am
src/modules/savers/png/evas_image_save_png.c
src/modules/savers/tiff/Makefile.am
src/modules/savers/tiff/evas_image_save_tiff.c

index 249a2d0..a346425 100644 (file)
@@ -405,6 +405,33 @@ if test "x$have_evas_engine_software_16_wince" = "xyes"; then
 fi
 AM_CONDITIONAL(BUILD_ENGINE_SOFTWARE_16, test "x$have_evas_engine_software_16" = "xyes")
 
+# if software generic need to be build as part of libevas.so
+have_static_software_generic="no"
+AC_ARG_ENABLE([static-software-generic],
+   [AC_HELP_STRING([--enable-static-software-generic], [Build software generic engine as part of libevas])],
+   [have_static_software_generic=${enableval}]
+)
+AC_MSG_CHECKING([Whether to build software generic engine as part of libevas])
+AC_MSG_RESULT([${have_static_software_generic}])
+
+AM_CONDITIONAL(EVAS_STATIC_BUILD_SOFTWARE_GENERIC, test "x${have_static_software_generic}" = "xyes")
+if test "x${have_static_software_generic}" = "xyes"; then
+   AC_DEFINE(EVAS_STATIC_BUILD_SOFTWARE_GENERIC, [1], [Build software generic engine as part of libevas])
+fi
+
+# if software 16 need to be build as part of libevas.so
+have_static_software_16="no"
+AC_ARG_ENABLE([static-software-16],
+   [AC_HELP_STRING([--enable-static-software-16], [Build software 16 engine as part of libevas])],
+   [have_static_software_16=${enableval}]
+)
+AC_MSG_CHECKING([Whether to build software 16 engine as part of libevas])
+AC_MSG_RESULT([${have_static_software_16}])
+
+AM_CONDITIONAL(EVAS_STATIC_BUILD_SOFTWARE_16, test "x${have_static_software_16}" = "xyes")
+if test "x${have_static_software_16}" = "xyes"; then
+   AC_DEFINE(EVAS_STATIC_BUILD_SOFTWARE_16, [1], [Build software 16 engine as part of libevas])
+fi
 
 #####################################################################
 ## Image loaders
@@ -1198,37 +1225,37 @@ echo
 echo "Configuration Options Summary:"
 echo
 echo "Engines:"
-echo "  Software Memory Buffer.....: $have_evas_engine_buffer"
-echo "  Software X11...............: $have_evas_engine_software_x11 (XCB: $have_evas_engine_software_xcb)"
-echo "  XRender X11................: $have_evas_engine_xrender_x11 (XCB: $have_evas_engine_xrender_xcb)"
-echo "  OpenGL X11.................: $have_evas_engine_gl_x11"
-#echo "  Cairo X11..................: $have_evas_engine_cairo_x11"
-echo "  Software GDI...............: $have_evas_engine_software_gdi"
-echo "  Software DirectDraw........: $have_evas_engine_software_ddraw"
-echo "  Direct3d...................: $have_evas_engine_direct3d"
-echo "  Quartz.....................: $have_evas_engine_quartz"
-echo "  OpenGL Glew................: $have_evas_engine_gl_glew"
-echo "  Software SDL...............: $have_evas_engine_software_sdl (primitive: $sdl_primitive)"
-echo "  Software Framebuffer.......: $have_evas_engine_fb"
-echo "  DirectFB...................: $have_evas_engine_directfb"
-#echo "  Software Qtopia............: $have_evas_engine_software_qtopia"
-echo "  Software 16bit ............: $have_evas_engine_software_16"
-echo "  Software 16bit X11.........: $have_evas_engine_software_16_x11"
-echo "  Software 16bit Directdraw..: $have_evas_engine_software_16_ddraw"
-echo "  Software 16bit WinCE.......: $have_evas_engine_software_16_wince"
-echo "  Software 16bit SDL.........: $have_evas_engine_software_sdl (primitive: $sdl_primitive)"
+echo "  Software Memory Buffer.....: $have_evas_engine_buffer $have_static_evas_engine_buffer"
+echo "  Software X11...............: $have_evas_engine_software_x11  $have_static_evas_engine_software_x11 (XCB: $have_evas_engine_software_xcb)"
+echo "  XRender X11................: $have_evas_engine_xrender_x11 $have_static_evas_engine_xrender_x11 (XCB: $have_evas_engine_xrender_xcb)"
+echo "  OpenGL X11.................: $have_evas_engine_gl_x11 $have_static_evas_engine_gl_x11"
+#echo "  Cairo X11..................: $have_evas_engine_cairo_x11 $have_static_evas_engine_cairo_x11"
+echo "  Software GDI...............: $have_evas_engine_software_gdi $have_static_evas_engine_gdi"
+echo "  Software DirectDraw........: $have_evas_engine_software_ddraw $have_static_evas_engine_ddraw"
+echo "  Direct3d...................: $have_evas_engine_direct3d $have_static_evas_engine_direct3d"
+echo "  Quartz.....................: $have_evas_engine_quartz $have_static_evas_engine_quartz"
+echo "  OpenGL Glew................: $have_evas_engine_gl_glew $have_static_evas_engine_gl_glew"
+echo "  Software SDL...............: $have_evas_engine_software_sdl $have_static_evas_engine_software_sdl (primitive: $sdl_primitive)"
+echo "  Software Framebuffer.......: $have_evas_engine_fb $have_static_evas_engine_fb"
+echo "  DirectFB...................: $have_evas_engine_directfb $have_static_evas_engine_directfb"
+#echo "  Software Qtopia............: $have_evas_engine_software_qtopia $have_static_evas_engine_software_qtopia"
+echo "  Software 16bit ............: $have_evas_engine_software_16 $have_static_evas_engine_software_16"
+echo "  Software 16bit X11.........: $have_evas_engine_software_16_x11 $have_static_evas_engine_software_16_x11"
+echo "  Software 16bit Directdraw..: $have_evas_engine_software_16_ddraw $have_static_evas_engine_ddraw"
+echo "  Software 16bit WinCE.......: $have_evas_engine_software_16_wince $have_static_evas_engine_wince"
+echo "  Software 16bit SDL.........: $have_evas_engine_software_sdl $have_static_evas_engine_software_sdl (primitive: $sdl_primitive)"
 # FIXME: opengl engine needs to be fixed and tested lots for all drivers
 echo
 echo "Image Loaders:"
-echo "  EDB.....................: $have_evas_image_loader_edb"
-echo "  EET.....................: $have_evas_image_loader_eet"
-echo "  GIF.....................: $have_evas_image_loader_gif"
-echo "  JPEG....................: $have_evas_image_loader_jpeg"
-echo "  PMAPS...................: $have_evas_image_loader_pmaps"
-echo "  PNG.....................: $have_evas_image_loader_png"
-echo "  SVG.....................: $have_evas_image_loader_svg"
-echo "  TIFF....................: $have_evas_image_loader_tiff"
-echo "  XPM.....................: $have_evas_image_loader_xpm"
+echo "  EDB.....................: $have_evas_image_loader_edb $have_static_evas_image_loader_edb"
+echo "  EET.....................: $have_evas_image_loader_eet $have_static_evas_image_loader_eet"
+echo "  GIF.....................: $have_evas_image_loader_gif $have_static_evas_image_loader_gif"
+echo "  JPEG....................: $have_evas_image_loader_jpeg $have_static_evas_image_loader_jpg"
+echo "  PMAPS...................: $have_evas_image_loader_pmaps $have_static_evas_image_loader_pmaps"
+echo "  PNG.....................: $have_evas_image_loader_png $have_static_evas_image_loader_png"
+echo "  SVG.....................: $have_evas_image_loader_svg $have_static_evas_image_loader_svg"
+echo "  TIFF....................: $have_evas_image_loader_tiff $have_static_evas_image_loader_tiff"
+echo "  XPM.....................: $have_evas_image_loader_xpm $have_static_evas_image_loader_xpm"
 # FIXME: need to add modular image loader system
 # FIXME: add more image loader modules
 echo
index 2ad18f8..1af1c30 100644 (file)
@@ -617,6 +617,24 @@ fi
 
 AM_CONDITIONAL(BUILD_ENGINE_[]UP, [test "x${have_evas_engine_[]DOWN}" = "xyes"])
 
+want_static="no"
+have_static_evas_engine_[]DOWN=""
+
+AC_ARG_ENABLE([static-$1],
+   [AC_HELP_STRING([--enable-static-$1], [enable static build of $4 rendering backend])],
+   [want_static=${enableval}]
+)
+
+AC_MSG_CHECKING([whether to statically include $4 rendering backend inside evas library])
+AC_MSG_RESULT([${want_static}])
+
+AM_CONDITIONAL(EVAS_STATIC_BUILD_[]UP, [test "x${want_static}" = "xyes" -a "x${have_evas_engine_[]DOWN}" = "xyes"])
+
+if test "x${want_static}" = "xyes" -a "x${have_evas_engine_[]DOWN}" = "xyes"; then
+   have_static_evas_engine_[]DOWN="(static)"
+   AC_DEFINE(EVAS_STATIC_BUILD_[]UP, [1], [Build $1 engine inside libevas])
+fi
+
 m4_popdef([UP])
 m4_popdef([DOWN])
 
index e30d2c0..c0b7c76 100644 (file)
@@ -304,6 +304,23 @@ fi
 
 AM_CONDITIONAL(BUILD_LOADER_[]UP, [test "x${have_evas_image_loader_[]DOWN}" = "xyes"])
 
+want_static_[]DOWN="no"
+have_static_evas_image_loader_[]DOWN=""
+
+AC_ARG_ENABLE([static-image-loader-[]DOWN],
+   [AC_HELP_STRING([--enable-static-image-loader-[]DOWN], [Build $1 image loader inside evas library])],
+   [want_static_[]DOWN=${enableval}]
+)
+AC_MSG_CHECKING([whether to build inside evas library $1 image loader])
+AC_MSG_RESULT([${want_static_[]DOWN}])
+
+AM_CONDITIONAL(EVAS_STATIC_BUILD_[]UP, [test "x${want_static_[]DOWN}" = "xyes" -a "x${have_evas_image_loader_[]DOWN}" = "xyes"])
+
+if test "x${want_static_[]DOWN}" = "xyes" -a "x${have_evas_image_loader_[]DOWN}" = "xyes"; then
+   have_static_evas_image_loader_[]DOWN="(static)"
+   AC_DEFINE(EVAS_STATIC_BUILD_[]UP, [1], [Build $1 image loader inside libevas])
+fi
+
 m4_popdef([UP])
 m4_popdef([DOWN])
 
index 4b22a87..67895d0 100644 (file)
@@ -1,6 +1,164 @@
 MAINTAINERCLEANFILES = Makefile.in
 
 SUBDIRS = canvas data cache cserve file engines imaging include
+EVAS_STATIC_MODULE =
+EVAS_STATIC_LIBADD =
+
+if EVAS_STATIC_BUILD_SOFTWARE_GENERIC
+SUBDIRS += ../modules/engines/software_generic/
+EVAS_STATIC_MODULE += ../modules/engines/software_generic/libevas_engine_software_generic.la
+endif
+if EVAS_STATIC_BUILD_BUFFER
+SUBDIRS += ../modules/engines/buffer/
+EVAS_STATIC_MODULE += ../modules/engines/buffer/libevas_engine_buffer.la
+endif
+if EVAS_STATIC_BUILD_DIRECT3D
+SUBDIRS += ../modules/engines/direct3d/
+EVAS_STATIC_MODULE += ../modules/engines/direct3d/libevas_engine_direct3d.la
+EVAS_STATIC_LIBADD += @evas_engine_direct3d_libs@
+endif
+if EVAS_STATIC_BUILD_DIRECTFB
+SUBDIRS += ../modules/engines/directfb/
+EVAS_STATIC_MODULE += ../modules/engines/directfb/libevas_engine_directfb.la
+EVAS_STATIC_LIBADD += @evas_engine_directfb_libs@
+endif
+if EVAS_STATIC_BUILD_FB
+SUBDIRS += ../modules/engines/fb/
+EVAS_STATIC_MODULE += ../modules/engines/fb/libevas_engine_fb.la
+EVAS_STATIC_LIBADD += @evas_engine_fb_libs@
+endif
+if EVAS_STATIC_BUILD_GL_GLEW
+SUBDIRS += \
+       ../modules/engines/gl_common \
+       ../modules/engines/gl_glew
+EVAS_STATIC_MODULE += \
+       ../modules/engines/gl_common/libevas_engine_gl_common.la \
+       ../modules/engines/gl_glew/libevas_engine_gl_glew.la
+EVAS_STATIC_LIBADD += @evas_engine_gl_common_libs@ @evas_engine_gl_glew_libs@
+endif
+if EVAS_STATIC_BUILD_GL_X11
+SUBDIRS += \
+       ../modules/engines/gl_common \
+       ../modules/engines/gl_x11
+EVAS_STATIC_MODULE += \
+       ../modules/engines/gl_common/libevas_engine_gl_common.la \
+       ../modules/engines/gl_x11/libevas_engine_gl_x11.la
+EVAS_STATIC_LIBADD += @evas_engine_gl_common_libs@ @evas_engine_gl_x11_libs@
+endif
+if EVAS_STATIC_BUILD_QUARTZ
+SUBDIRS += ../modules/engines/quartz/
+EVAS_STATIC_MODULE += ../modules/engines/quartz/libevas_engine_quartz.la
+EVAS_STATIC_LIBADD += @evas_engine_quartz_libs@
+endif
+if EVAS_STATIC_BUILD_SOFTWARE_16
+SUBDIRS += ../modules/engines/software_16/
+EVAS_STATIC_MODULE += ../modules/engines/software_16/libevas_engine_software_16.la
+endif
+if EVAS_STATIC_BUILD_SOFTWARE_16_DDRAW
+SUBDIRS += ../modules/engines/software_16_ddraw/
+EVAS_STATIC_MODULE += ../modules/engines/software_16_ddraw/libevas_engine_software_16_ddraw.la
+EVAS_STATIC_LIBADD += @evas_engine_software_16_ddraw_libs@
+endif
+if EVAS_STATIC_BUILD_SOFTWARE_16_WINCE
+SUBDIRS += ../modules/engines/software_16_wince/
+EVAS_STATIC_MODULE += ../modules/engines/software_16_wince/libevas_engine_software_16_wince.la
+EVAS_STATIC_LIBADD += @evas_engine_software_16_wince_libs@
+endif
+if EVAS_STATIC_BUILD_SOFTWARE_16_X11
+SUBDIRS += ../modules/engines/software_16_x11/
+EVAS_STATIC_MODULE += ../modules/engines/software_16_x11/libevas_engine_software_16_x11.la
+EVAS_STATIC_LIBADD += @evas_engine_software_16_x11_libs@
+endif
+if EVAS_STATIC_BUILD_SOFTWARE_SDL
+SUBDIRS += \
+       ../modules/engines/software_16_sdl/ \
+       ../modules/engines/software_sdl/
+EVAS_STATIC_MODULE += \
+       ../modules/engines/software_16_sdl/libevas_engine_software_16_sdl.la \
+       ../modules/engines/software_sdl/libevas_engine_software_sdl.la
+EVAS_STATIC_LIBADD += @SDL_LIBS@
+endif
+if EVAS_STATIC_BUILD_SOFTWARE_DDRAW
+SUBDIRS += ../modules/engines/software_ddraw/
+EVAS_STATIC_MODULE += ../modules/engines/software_ddraw/libevas_engine_software_ddraw.la
+EVAS_STATIC_LIBADD += @evas_engine_software_ddraw_libs@
+endif
+if EVAS_STATIC_BUILD_SOFTWARE_GDI
+SUBDIRS += ../modules/engines/software_gdi/
+EVAS_STATIC_MODULE += ../modules/engines/software_gdi/libevas_engine_software_gdi.la
+EVAS_STATIC_LIBADD += @evas_engine_software_gdi_libs@
+endif
+if EVAS_STATIC_BUILD_SOFTWARE_X11
+SUBDIRS += ../modules/engines/software_x11/
+EVAS_STATIC_MODULE += ../modules/engines/software_x11/libevas_engine_software_x11.la
+EVAS_STATIC_LIBADD += @evas_engine_software_x11_libs@ @evas_engine_software_xcb_libs@
+endif
+if EVAS_STATIC_BUILD_XRENDER_X11
+SUBDIRS += ../modules/engines/xrender_x11/
+EVAS_STATIC_MODULE += ../modules/engines/xrender_x11/libevas_engine_xrender_x11.la
+EVAS_STATIC_LIBADD += @evas_engine_xrender_x11_libs@ @evas_engine_xrender_xcb_libs@
+endif
+if EVAS_STATIC_BUILD_EDB
+SUBDIRS += ../modules/savers/edb ../modules/loaders/edb
+EVAS_STATIC_MODULE += ../modules/savers/edb/libevas_saver_edb.la ../modules/loaders/edb/libevas_loader_edb.la
+EVAS_STATIC_LIBADD += @evas_image_loader_edb_libs@
+endif
+if EVAS_STATIC_BUILD_EET
+SUBDIRS += ../modules/savers/eet ../modules/loaders/eet
+EVAS_STATIC_MODULE += ../modules/savers/eet/libevas_saver_eet.la ../modules/loaders/eet/libevas_loader_eet.la
+EVAS_STATIC_LIBADD += @evas_image_loader_eet_libs@
+endif
+if EVAS_STATIC_BUILD_GIF
+SUBDIRS += ../modules/loaders/gif
+EVAS_STATIC_MODULE += ../modules/loaders/gif/libevas_loader_gif.la
+EVAS_STATIC_LIBADD += @evas_image_loader_gif_libs@
+endif
+if EVAS_STATIC_BUILD_JPEG
+SUBDIRS += ../modules/savers/jpeg ../modules/loaders/jpeg
+EVAS_STATIC_MODULE += ../modules/savers/jpeg/libevas_saver_jpeg.la ../modules/loaders/jpeg/libevas_loader_jpeg.la
+EVAS_STATIC_LIBADD += @evas_image_loader_jpeg_libs@
+endif
+if EVAS_STATIC_BUILD_PMAPS
+SUBDIRS += ../modules/loaders/pmaps
+EVAS_STATIC_MODULE += ../modules/loaders/pmaps/libevas_loader_pmaps.la
+EVAS_STATIC_LIBADD += @evas_image_loader_pmaps_libs@
+endif
+if EVAS_STATIC_BUILD_PNG
+SUBDIRS += ../modules/savers/png ../modules/loaders/png
+EVAS_STATIC_MODULE += ../modules/savers/png/libevas_saver_png.la ../modules/loaders/png/libevas_loader_png.la
+EVAS_STATIC_LIBADD += @evas_image_loader_png_libs@
+endif
+if EVAS_STATIC_BUILD_SVG
+SUBDIRS += ../modules/loaders/svg
+EVAS_STATIC_MODULE += ../modules/loaders/svg/libevas_loader_svg.la
+EVAS_STATIC_LIBADD += @evas_image_loader_svg_libs@
+endif
+if EVAS_STATIC_BUILD_TIFF
+SUBDIRS += ../modules/savers/tiff ../modules/loaders/tiff
+EVAS_STATIC_MODULE += ../modules/savers/tiff/libevas_saver_tiff.la ../modules/loaders/tiff/libevas_loader_tiff.la
+EVAS_STATIC_LIBADD += @evas_image_loader_tiff_libs@
+endif
+if EVAS_STATIC_BUILD_XPM
+SUBDIRS += ../modules/loaders/xpm
+EVAS_STATIC_MODULE += ../modules/loaders/xpm/libevas_loader_xpm.la
+EVAS_STATIC_LIBADD += @evas_image_loader_xpm_libs@
+endif
+
+
+#if EVAS_STATIC_BUILD_CAIRO_X11
+#SUBDIRS += \
+#      ../modules/engines/cairo_common \
+#      ../modules/engines/cairo_x11
+#EVAS_STATIC_MODULE += \
+#      ../modules/engines/cairo_common/libevas_engine_cairo_common.la \
+#      ../modules/engines/cairo_x11/libevas_engine_cairo_x11.la
+#EVAS_STATIC_LIBADD += @CAIRO_CFLAGS@
+#endif
+#if EVAS_STATIC_BUILD_SOFTWARE_QTOPIA
+#SUBDIRS += ../modules/engines/software_qtopia/
+#EVAS_STATIC_MODULE += ../modules/engines/software_qtopia/libevas_engine_software_qtopia.la
+#EVAS_STATIC_LIBADD += @evas_engine_software_qtopia_libs@
+#endif
 
 AM_CPPFLAGS = \
 -I. \
@@ -45,6 +203,8 @@ engines/common/libevas_engine_common.la \
 @FONTCONFIG_LIBS@ \
 @pthread_libs@ \
 @EINA_LIBS@ \
+$(EVAS_STATIC_MODULE) \
+$(EVAS_STATIC_LIBADD) \
 -lm
 
 libevas_la_DEPENDENCIES = \
@@ -54,7 +214,8 @@ file/libevas_file.la \
 cache/libevas_cache.la \
 imaging/libevas_imaging.la \
 $(libevas_cserve_la) \
-engines/common/libevas_engine_common.la
+engines/common/libevas_engine_common.la \
+$(EVAS_STATIC_MODULE)
 
 if BUILD_ENGINE_SOFTWARE_16
 
index 707b392..3953f77 100644 (file)
@@ -2,7 +2,6 @@
 #include "evas_private.h"
 #include "evas_cs.h"
 
-extern Eina_List *evas_modules;
 static int initcount = 0;
 
 Eina_Mempool *_evas_rectangle_mp = NULL;
@@ -250,7 +249,6 @@ evas_free(Evas *e)
 EAPI void
 evas_output_method_set(Evas *e, int render_method)
 {
-   Eina_List *l;
    Evas_Module *em;
 
    MAGIC_CHECK(e, Evas, MAGIC_EVAS);
@@ -261,27 +259,22 @@ evas_output_method_set(Evas *e, int render_method)
    if (render_method == RENDER_METHOD_INVALID) return;
    /* if the engine is already set up - abort */
    if (e->output.render_method != RENDER_METHOD_INVALID) return;
-   /* iterate trough the list to find the id */
-   EINA_LIST_FOREACH(evas_modules, l, em)
-     {
-       Evas_Module_Engine *eme;
-
-       if (em->type != EVAS_MODULE_TYPE_ENGINE) continue;
-       if (!em->data) continue;
-       eme = (Evas_Module_Engine *)em->data;
-       if (eme->id != render_method) continue;
-       if (!evas_module_load(em)) return;
-       /* set the correct render */
-       e->output.render_method = render_method;
-       e->engine.func = (em->functions);
-       evas_module_use(em);
-       if (e->engine.module) evas_module_unref(e->engine.module);
-       e->engine.module = em;
-       evas_module_ref(em);
-       /* get the engine info struct */
-       if (e->engine.func->info) e->engine.info = e->engine.func->info(e);
-       return;
-     }
+   /* Request the right engine. */
+   em = evas_module_engine_get(render_method);
+   if (!em) return ;
+   if (em->id_engine != render_method) return;
+   if (!evas_module_load(em)) return;
+
+   /* set the correct render */
+   e->output.render_method = render_method;
+   e->engine.func = (em->functions);
+   evas_module_use(em);
+   if (e->engine.module) evas_module_unref(e->engine.module);
+   e->engine.module = em;
+   evas_module_ref(em);
+   /* get the engine info struct */
+   if (e->engine.func->info) e->engine.info = e->engine.func->info(e);
+   return;
 }
 
 /**
@@ -689,25 +682,14 @@ evas_coord_world_y_to_screen(const Evas *e, Evas_Coord y)
 EAPI int
 evas_render_method_lookup(const char *name)
 {
-   static int i = 1;
    Evas_Module *em;
-   Evas_Module_Engine *eem;
-   
+
    if (!name) return RENDER_METHOD_INVALID;
    /* search on the engines list for the name */
    em = evas_module_find_type(EVAS_MODULE_TYPE_ENGINE, name);
-   
    if (!em) return RENDER_METHOD_INVALID;
-   
-   eem = (Evas_Module_Engine *)em->data;
-   if (!eem)
-     {
-       eem = malloc(sizeof(Evas_Module_Engine));
-       em->data = eem;
-       eem->id = i;
-       i++;
-     }
-   return eem->id;
+
+   return em->id_engine;
 }
 
 /**
@@ -748,58 +730,58 @@ evas_render_method_list(void)
 
    /* FIXME: get from modules - this is currently coded-in */
 #ifdef BUILD_ENGINE_SOFTWARE_GDI
-   methods = eina_list_append(methods, strdup("software_gdi"));
+   methods = eina_list_append(methods, "software_gdi");
 #endif
 #ifdef BUILD_ENGINE_SOFTWARE_DDRAW
-   methods = eina_list_append(methods, strdup("software_ddraw"));
+   methods = eina_list_append(methods, "software_ddraw");
 #endif
 #ifdef BUILD_ENGINE_SOFTWARE_16_DDRAW
-   methods = eina_list_append(methods, strdup("software_16_ddraw"));
+   methods = eina_list_append(methods, "software_16_ddraw");
 #endif
 #ifdef BUILD_ENGINE_DIRECT3D
-   methods = eina_list_append(methods, strdup("direct3d"));
+   methods = eina_list_append(methods, "direct3d");
 #endif
 #ifdef BUILD_ENGINE_SOFTWARE_16_WINCE
-   methods = eina_list_append(methods, strdup("software_16_wince"));
+   methods = eina_list_append(methods, "software_16_wince");
 #endif
 #ifdef BUILD_ENGINE_SOFTWARE_X11
-   methods = eina_list_append(methods, strdup("software_x11"));
+   methods = eina_list_append(methods, "software_x11");
 #endif
 #ifdef BUILD_ENGINE_XRENDER_X11
-   methods = eina_list_append(methods, strdup("xrender_x11"));
+   methods = eina_list_append(methods, "xrender_x11");
 #endif
 #ifdef BUILD_ENGINE_XRENDER_XCB
-   methods = eina_list_append(methods, strdup("xrender_xcb"));
+   methods = eina_list_append(methods, "xrender_xcb");
 #endif
 #ifdef BUILD_ENGINE_SOFTWARE_16_X11
-   methods = eina_list_append(methods, strdup("software_16_x11"));
+   methods = eina_list_append(methods, "software_16_x11");
 #endif
 #ifdef BUILD_ENGINE_GL_X11
-   methods = eina_list_append(methods, strdup("gl_x11"));
+   methods = eina_list_append(methods, "gl_x11");
 #endif
 #ifdef BUILD_ENGINE_GL_GLEW
-   methods = eina_list_append(methods, strdup("gl_glew"));
+   methods = eina_list_append(methods, "gl_glew");
 #endif
 #ifdef BUILD_ENGINE_CAIRO_X11
-   methods = eina_list_append(methods, strdup("cairo_x11"));
+   methods = eina_list_append(methods, "cairo_x11");
 #endif
 #ifdef BUILD_ENGINE_DIRECTFB
-   methods = eina_list_append(methods, strdup("directfb"));
+   methods = eina_list_append(methods, "directfb");
 #endif
 #ifdef BUILD_ENGINE_FB
-   methods = eina_list_append(methods, strdup("fb"));
+   methods = eina_list_append(methods, "fb");
 #endif
 #ifdef BUILD_ENGINE_BUFFER
-   methods = eina_list_append(methods, strdup("buffer"));
+   methods = eina_list_append(methods, "buffer");
 #endif
 #ifdef BUILD_ENGINE_SOFTWARE_WIN32_GDI
-   methods = eina_list_append(methods, strdup("software_win32_gdi"));
+   methods = eina_list_append(methods, "software_win32_gdi");
 #endif
 #ifdef BUILD_ENGINE_SOFTWARE_QTOPIA
-   methods = eina_list_append(methods, strdup("software_qtopia"));
+   methods = eina_list_append(methods, "software_qtopia");
 #endif
 #ifdef BUILD_ENGINE_SOFTWARE_SDL
-   methods = eina_list_append(methods, strdup("software_sdl"));
+   methods = eina_list_append(methods, "software_sdl");
 #endif
 
    return methods;
@@ -835,11 +817,7 @@ evas_render_method_list(void)
 EAPI void
 evas_render_method_list_free(Eina_List *list)
 {
-   while (list)
-     {
-       free(list->data);
-       list = eina_list_remove(list, list->data);
-     }
+   eina_list_free(list);
 }
 
 /**
index d6b1736..e65884f 100644 (file)
@@ -6,8 +6,6 @@
 #include "evas_private.h"
 #include "evas_cs.h"
 
-extern Eina_List *evas_modules;
-
 struct ext_loader_s {
    const char* extention;
    const char* loader;
@@ -34,12 +32,30 @@ static struct ext_loader_s  loaders[] = {
    { "pnm", "pmaps" }
 };
 
+static Eina_Bool
+_evas_image_foreach_loader(const Eina_Hash *hash, const char *key, Evas_Module *em, Image_Entry *ie)
+{
+   Evas_Image_Load_Func *evas_image_load_func = NULL;
+
+   if (!evas_module_load(em)) return EINA_TRUE;
+   evas_image_load_func = em->functions;
+   evas_module_use(em);
+   if (evas_image_load_func && evas_image_load_func->file_head(ie, ie->file, ie->key))
+     {
+       ie->info.module = (void*) em;
+       ie->info.loader = (void*) evas_image_load_func;
+       evas_module_ref((Evas_Module*) ie->info.module);
+       return EINA_FALSE;
+     }
+
+   return EINA_TRUE;
+}
+
 EAPI int
 evas_common_load_rgba_image_module_from_file(Image_Entry *ie)
 {
    Evas_Image_Load_Func *evas_image_load_func = NULL;
    const char           *loader = NULL;
-   Eina_List            *l;
    Evas_Module          *em;
    char                 *dot;
    int                   i;
@@ -82,21 +98,9 @@ evas_common_load_rgba_image_module_from_file(Image_Entry *ie)
          }
      }
 
-   EINA_LIST_FOREACH(evas_modules, l, em)
-     {
-       if (em->type != EVAS_MODULE_TYPE_IMAGE_LOADER) continue;
-       if (!evas_module_load(em)) continue;
-        evas_image_load_func = em->functions;
-       evas_module_use(em);
-       if (evas_image_load_func && evas_image_load_func->file_head(ie, ie->file, ie->key))
-         {
-            if (evas_modules != l)
-              {
-                 evas_modules = eina_list_promote_list(evas_modules, l);
-              }
-            goto ok;
-         }
-     }
+   /* FIXME: We don't try not loaded module yet, changed behaviour with previous one. */
+   evas_module_foreach_image_loader(_evas_image_foreach_loader, ie);
+   if (ie->info.module) return 0;
 
    return -1;
 
index 21d666c..a2fa3c8 100644 (file)
@@ -12,8 +12,6 @@
 #include "evas_private.h"
 
 
-extern Eina_List *evas_modules;
-
 int
 evas_common_save_image_to_file(RGBA_Image *im, const char *file, const char *key, int quality, int compress)
 {
index 46f6071..7bb05f1 100644 (file)
@@ -2,35 +2,35 @@
 # define _GNU_SOURCE
 #endif
 
-#include <dirent.h>    /* DIR, dirent */
-#include <dlfcn.h>     /* dlopen,dlclose,etc */
+#include <string.h>
 
 #include <evas_common.h>
 #include <evas_private.h>
 
-Eina_List *evas_modules = NULL;
+static Eina_Hash *evas_modules[4] = {
+  NULL,
+  NULL,
+  NULL,
+  NULL
+};
+
+static Eina_List *eina_evas_modules = NULL;
 static Eina_List *evas_module_paths = NULL;
+static Eina_Array *evas_engines = NULL;
 
-static void
-_evas_module_path_append(Evas_Module_Type type, char *path, const char *subdir)
+static Eina_List *
+_evas_module_append(Eina_List *list, char *path)
 {
-   Evas_Module_Path *mp;
-   char *buf;
-
-   buf = evas_file_path_join(path, subdir);
-   if (!buf) return;
-   if (evas_file_path_exists(buf))
+   if (path)
      {
-       mp = malloc(sizeof(Evas_Module_Path));
-       mp->type = type;
-       mp->path = buf;
-       evas_module_paths = eina_list_append(evas_module_paths, mp);
+       if (evas_file_path_exists(path))
+         list = eina_list_append(list, path);
+       else
+         free(path);
      }
-   else
-     free(buf);
+   return list;
 }
 
-
 /* this will alloc a list of paths to search for the modules */
 /* by now these are:  */
 /* 1. ~/.evas/modules/ */
@@ -40,73 +40,21 @@ _evas_module_path_append(Evas_Module_Type type, char *path, const char *subdir)
 void
 evas_module_paths_init(void)
 {
-
    char *prefix;
    char *path;
-   Eina_List *paths = NULL;
 
    /* 1. ~/.evas/modules/ */
-   prefix = getenv("HOME");
-   if (prefix)
-     {
-       path = malloc(strlen(prefix) + 1 + strlen("/.evas/modules"));
-       if (path)
-         {
-            path[0] = 0;
-            strcpy(path, prefix);
-            strcat(path, "/.evas/modules");
-            if (evas_file_path_exists(path))
-              paths = eina_list_append(paths, path);
-            else
-              free(path);
-         }
-     }
+   path = eina_module_environment_path_get("HOME", "/.evas/modules");
+   evas_module_paths = _evas_module_append(evas_module_paths, path);
 
    /* 2. $(EVAS_MODULE_DIR)/evas/modules/ */
-   prefix = getenv("EVAS_MODULES_DIR");
-   if (prefix)
-     {
-       path = malloc(strlen(prefix) + 1 + strlen("/evas/modules"));
-       if (path)
-         {
-            path[0] = 0;
-            strcpy(path, prefix);
-            strcat(path, "/evas/modules");
-            if (evas_file_path_exists(path))
-              paths = eina_list_append(paths, path);
-            else
-              free(path);
-         }
-     }
+   path = eina_module_environment_path_get("EVAS_MODULES_DIR", "/evas/modules");
+   evas_module_paths = _evas_module_append(evas_module_paths, path);
+
+   /* 3. libevas.so/../evas/modules/ */
+   path = eina_module_symbol_path_get(evas_module_paths_init, "/evas/modules");
+   evas_module_paths = _evas_module_append(evas_module_paths, path);
 
-#ifdef HAVE_DLADDR
-     {
-       Dl_info evas_dl;
-       /* 3. libevas.so/../evas/modules/ */
-       if (dladdr(evas_module_paths_init, &evas_dl))
-         {
-            int length;
-
-            if (strrchr(evas_dl.dli_fname, '/'))
-              {
-                 length = strlen(strrchr(evas_dl.dli_fname, '/'));
-                 path = malloc(strlen(evas_dl.dli_fname) - length +
-                               strlen("/evas/modules") + 1);
-                 if (path)
-                   {
-                      strncpy(path, evas_dl.dli_fname,
-                              strlen(evas_dl.dli_fname) - length);
-                      path[strlen(evas_dl.dli_fname) - length] = 0;
-                      strcat(path, "/evas/modules");
-                      if (evas_file_path_exists(path))
-                        paths = eina_list_append(paths, path);
-                      else
-                        free(path);
-                   }
-              }
-         }
-     }
-#else
    /* 4. PREFIX/evas/modules/ */
    prefix = PACKAGE_LIB_DIR;
    path = malloc(strlen(prefix) + 1 + strlen("/evas/modules"));
@@ -114,187 +62,323 @@ evas_module_paths_init(void)
      {
        strcpy(path, prefix);
        strcat(path, "/evas/modules");
-       if (evas_file_path_exists(path))
-         paths = eina_list_append(paths, path);
-       else
-         free(path);
-     }
-#endif
-
-   /* append all the module types subdirs */
-   while (paths)
-     {
-       /* here must be added all the types of modules and their subdirectory */
-       /* do this on a separate function */
-       /* 1. engines */
-       _evas_module_path_append(EVAS_MODULE_TYPE_ENGINE, paths->data, "engines");
-       _evas_module_path_append(EVAS_MODULE_TYPE_IMAGE_LOADER, paths->data, "loaders");
-       _evas_module_path_append(EVAS_MODULE_TYPE_IMAGE_SAVER, paths->data, "savers");
-       _evas_module_path_append(EVAS_MODULE_TYPE_OBJECT, paths->data, "objects");
-       free(paths->data);
-       paths = eina_list_remove_list(paths, paths);
+       evas_module_paths = _evas_module_append(evas_module_paths, path);
      }
 }
 
+#define EVAS_EINA_STATIC_MODULE_DEFINE(Tn, Name)       \
+  Eina_Bool evas_##Tn##_##Name##_init(void);           \
+  void evas_##Tn##_##Name##_shutdown(void);
+
+#define EVAS_EINA_STATIC_MODULE_USE(Tn, Name)  \
+  { evas_##Tn##_##Name##_init, evas_##Tn##_##Name##_shutdown }
+
+EVAS_EINA_STATIC_MODULE_DEFINE(engine, buffer);
+EVAS_EINA_STATIC_MODULE_DEFINE(engine, cairo_x11);
+EVAS_EINA_STATIC_MODULE_DEFINE(engine, direct3d);
+EVAS_EINA_STATIC_MODULE_DEFINE(engine, directfb);
+EVAS_EINA_STATIC_MODULE_DEFINE(engine, fb);
+EVAS_EINA_STATIC_MODULE_DEFINE(engine, gl_glew);
+EVAS_EINA_STATIC_MODULE_DEFINE(engine, gl_x11);
+EVAS_EINA_STATIC_MODULE_DEFINE(engine, quartz);
+EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_16);
+EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_16_ddraw);
+EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_16_sdl);
+EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_16_wince);
+EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_16_x11);
+EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_ddraw);
+EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_gdi);
+EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_generic);
+EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_qtopia);
+EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_sdl);
+EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_x11);
+EVAS_EINA_STATIC_MODULE_DEFINE(engine, xrender_x11);
+EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, xpm);
+EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, tiff);
+EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, svg);
+EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, png);
+EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, pmaps);
+EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, jpeg);
+EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, gif);
+EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, eet);
+EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, edb);
+EVAS_EINA_STATIC_MODULE_DEFINE(image_saver, edb);
+EVAS_EINA_STATIC_MODULE_DEFINE(image_saver, eet);
+EVAS_EINA_STATIC_MODULE_DEFINE(image_saver, jpeg);
+EVAS_EINA_STATIC_MODULE_DEFINE(image_saver, png);
+EVAS_EINA_STATIC_MODULE_DEFINE(image_saver, tiff);
+
+static const struct {
+   Eina_Bool (*init)(void);
+   void (*shutdown)(void);
+} evas_static_module[] = {
+#ifdef EVAS_STATIC_BUILD_BUFFER
+  EVAS_EINA_STATIC_MODULE_USE(engine, buffer),
+#endif
+#ifdef EVAS_STATIC_BUILD_CAIRO_X11
+  EVAS_EINA_STATIC_MODULE_USE(engine, cairo_x11),
+#endif
+#ifdef EVAS_STATIC_BUILD_DIRECT3D
+  EVAS_EINA_STATIC_MODULE_USE(engine, direct3d),
+#endif
+#ifdef EVAS_STATIC_BUILD_DIRECTFB
+  EVAS_EINA_STATIC_MODULE_USE(engine, directfb),
+#endif
+#ifdef EVAS_STATIC_BUILD_FB
+  EVAS_EINA_STATIC_MODULE_USE(engine, fb),
+#endif
+#ifdef EVAS_STATIC_BUILD_GL_GLEW
+  EVAS_EINA_STATIC_MODULE_USE(engine, gl_glew),
+#endif
+#ifdef EVAS_STATIC_BUILD_GL_X11
+  EVAS_EINA_STATIC_MODULE_USE(engine, gl_x11),
+#endif
+#ifdef EVAS_STATIC_BUILD_QUARTZ
+  EVAS_EINA_STATIC_MODULE_USE(engine, quartz),
+#endif
+#ifdef EVAS_STATIC_BUILD_SOFTWARE_16
+  EVAS_EINA_STATIC_MODULE_USE(engine, software_16),
+#endif
+#ifdef EVAS_STATIC_BUILD_SOFTWARE_16_DDRAW
+  EVAS_EINA_STATIC_MODULE_USE(engine, software_16_ddraw),
+#endif
+#ifdef EVAS_STATIC_BUILD_SOFTWARE_16_SDL
+  EVAS_EINA_STATIC_MODULE_USE(engine, software_16_sdl),
+#endif
+#ifdef EVAS_STATIC_BUILD_SOFTWARE_16_WINCE
+  EVAS_EINA_STATIC_MODULE_USE(engine, software_16_wince),
+#endif
+#ifdef EVAS_STATIC_BUILD_SOFTWARE_16_X11
+  EVAS_EINA_STATIC_MODULE_USE(engine, software_16_x11),
+#endif
+#ifdef EVAS_STATIC_BUILD_SOFTWARE_16_DDRAW
+  EVAS_EINA_STATIC_MODULE_USE(engine, software_ddraw),
+#endif
+#ifdef EVAS_STATIC_BUILD_SOFTWARE_16_GDI
+  EVAS_EINA_STATIC_MODULE_USE(engine, software_gdi),
+#endif
+#ifdef EVAS_STATIC_BUILD_SOFTWARE_GENERIC
+  EVAS_EINA_STATIC_MODULE_USE(engine, software_generic),
+#endif
+#ifdef EVAS_STATIC_BUILD_SOFTWARE_QTOPIA
+  EVAS_EINA_STATIC_MODULE_USE(engine, software_qtopia),
+#endif
+#ifdef EVAS_STATIC_BUILD_SOFTWARE_SDL
+  EVAS_EINA_STATIC_MODULE_USE(engine, software_sdl),
+#endif
+#ifdef EVAS_STATIC_BUILD_SOFTWARE_X11
+  EVAS_EINA_STATIC_MODULE_USE(engine, software_x11),
+#endif
+#ifdef EVAS_STATIC_BUILD_XRENDER_X11
+  EVAS_EINA_STATIC_MODULE_USE(engine, xrender_x11),
+#endif
+#ifdef EVAS_STATIC_BUILD_XPM
+  EVAS_EINA_STATIC_MODULE_USE(image_loader, xpm),
+#endif
+#ifdef EVAS_STATIC_BUILD_TIFF
+  EVAS_EINA_STATIC_MODULE_USE(image_loader, tiff),
+#endif
+#ifdef EVAS_STATIC_BUILD_SVG
+  EVAS_EINA_STATIC_MODULE_USE(image_loader, svg),
+#endif
+#ifdef EVAS_STATIC_BUILD_PNG
+  EVAS_EINA_STATIC_MODULE_USE(image_loader, png),
+#endif
+#ifdef EVAS_STATIC_BUILD_PMAPS
+  EVAS_EINA_STATIC_MODULE_USE(image_loader, pmaps),
+#endif
+#ifdef EVAS_STATIC_BUILD_JPEG
+  EVAS_EINA_STATIC_MODULE_USE(image_loader, jpeg),
+#endif
+#ifdef EVAS_STATIC_BUILD_GIF
+  EVAS_EINA_STATIC_MODULE_USE(image_loader, gif),
+#endif
+#ifdef EVAS_STATIC_BUILD_EET
+  EVAS_EINA_STATIC_MODULE_USE(image_loader, eet),
+#endif
+#ifdef EVAS_STATIC_BUILD_EDB
+  EVAS_EINA_STATIC_MODULE_USE(image_loader, edb),
+#endif
+#ifdef EVAS_STATIC_BUILD_
+  EVAS_EINA_STATIC_MODULE_USE(image_saver, edb),
+#endif
+#ifdef EVAS_STATIC_BUILD_
+  EVAS_EINA_STATIC_MODULE_USE(image_saver, eet),
+#endif
+#ifdef EVAS_STATIC_BUILD_
+  EVAS_EINA_STATIC_MODULE_USE(image_saver, jpeg),
+#endif
+#ifdef EVAS_STATIC_BUILD_
+  EVAS_EINA_STATIC_MODULE_USE(image_saver, png),
+#endif
+#ifdef EVAS_STATIC_BUILD_
+  EVAS_EINA_STATIC_MODULE_USE(image_saver, tiff),
+#endif
+  { NULL, NULL }
+};
+
 /* this will alloc an Evas_Module struct for each module
  * it finds on the paths */
 void
 evas_module_init(void)
 {
-   Eina_List *l;
-   Evas_Module_Path *mp;
-   int new_id_engine = 1;
+   int i;
 
-/*    printf("[init modules]\n"); */
    evas_module_paths_init();
-   EINA_LIST_FOREACH(evas_module_paths, l, mp)
-     {
-       DIR *dir;
-       struct dirent *de;
 
-       if (!(dir = opendir(mp->path))) break;
-/*     printf("[evas module] searching modules on %s\n", mp->path); */
-       while ((de = readdir(dir)))
-         {
-            char *buf;
-
-            if ((!strcmp(de->d_name, ".")) || (!strcmp(de->d_name, "..")))
-              continue;
-            buf = malloc(strlen(mp->path) + 1 + strlen(de->d_name) + 1);
-            sprintf(buf, "%s/%s", mp->path, de->d_name);
-            if (evas_file_path_is_dir(buf))
-              {
-                 Evas_Module *em;
-
-                 em = calloc(1, sizeof(Evas_Module));
-                 if (!em) continue;
-                 em->name = strdup(de->d_name);
-                 em->path = strdup(mp->path);
-                 em->type = mp->type;
-                 em->handle = NULL;
-                 em->data = NULL;
-                  em->loaded = 0;
-#ifdef BUILD_ASYNC_PRELOAD                  
-                  LKI(em->lock);
-#endif                  
-//#if defined(BUILD_PTHREAD) && defined(BUILD_ASYNC_PRELOAD)
-//               pthread_mutex_init(&em->lock, NULL);
-//#endif
-                 if (em->type == EVAS_MODULE_TYPE_ENGINE)
-                   {
-                      Evas_Module_Engine *eme;
-
-                      eme = malloc(sizeof(Evas_Module_Engine));
-                      if (eme)
-                        {
-                           eme->id = new_id_engine;
-                           em->data = eme;
-                           new_id_engine++;
-                        }
-                   }
-                  else if (em->type == EVAS_MODULE_TYPE_IMAGE_LOADER)
-                   {
-                   }
-                  else if (em->type == EVAS_MODULE_TYPE_IMAGE_SAVER)
-                   {
-                   }
-/*               printf("[evas module] including module path %s/%s of type %d\n",em->path, em->name, em->type); */
-                 evas_modules = eina_list_append(evas_modules, em);
-              }
-            free(buf);
-         }
-       closedir(dir);
+   evas_modules[EVAS_MODULE_TYPE_ENGINE] = eina_hash_string_small_new(/* FIXME: Add a function to cleanup stuff. */ NULL);
+   evas_modules[EVAS_MODULE_TYPE_IMAGE_LOADER] = eina_hash_string_small_new(/* FIXME: Add a function to cleanup stuff. */ NULL);
+   evas_modules[EVAS_MODULE_TYPE_IMAGE_SAVER] = eina_hash_string_small_new(/* FIXME: Add a function to cleanup stuff. */ NULL);
+   evas_modules[EVAS_MODULE_TYPE_OBJECT] = eina_hash_string_small_new(/* FIXME: Add a function to cleanup stuff. */ NULL);
+
+   evas_engines = eina_array_new(4);
+
+   for (i = 0; evas_static_module[i].init != NULL; ++i)
+     evas_static_module[i].init();
+}
+
+Eina_Bool
+evas_module_register(const Evas_Module_Api *module, Evas_Module_Type type)
+{
+   Evas_Module *em;
+
+   if (type < 0 || type > 3) return EINA_FALSE;
+   if (module->version != EVAS_MODULE_API_VERSION) return EINA_FALSE;
+   if (!module) return EINA_FALSE;
+
+   em = eina_hash_find(evas_modules[type], module->name);
+   if (em) return EINA_FALSE;
+
+   em = calloc(1, sizeof (Evas_Module));
+   if (!em) return EINA_FALSE;
+
+   em->public = module;
+
+   if (type == EVAS_MODULE_TYPE_ENGINE)
+     {
+       eina_array_push(evas_engines, em);
+       em->id_engine = eina_array_count_get(evas_engines);
      }
+
+   eina_hash_direct_add(evas_modules[type], module->name, em);
+
+   return EINA_TRUE;
 }
 
+Eina_Bool
+evas_module_unregister(const Evas_Module_Api *module, Evas_Module_Type type)
+{
+   Evas_Module *em;
+
+   if (type < 0 || type > 3) return EINA_FALSE;
+   if (!module) return EINA_FALSE;
+
+   em = eina_hash_find(evas_modules[type], module->name);
+   if (!em || em->public != module) return EINA_FALSE;
+
+   if (type == EVAS_MODULE_TYPE_ENGINE)
+     eina_array_data_set(evas_engines, em->id_engine, NULL);
+
+   eina_hash_del(evas_modules[type], module->name, em);
+   free(em);
+
+   return EINA_TRUE;
+}
+
+#if defined(__CEGCC__) || defined(__MINGW32CE__)
+# define EVAS_MODULE_NAME_IMAGE_SAVER "saver_%s.dll"
+# define EVAS_MODULE_NAME_IMAGE_LOADER "loader_%s.dll"
+# define EVAS_MODULE_NAME_ENGINE "engine_%s.dll"
+# define EVAS_MODULE_NAME_OBJECT "object_%s.dll"
+#elif _WIN32
+# define EVAS_MODULE_NAME_IMAGE_SAVER "module.dll"
+# define EVAS_MODULE_NAME_IMAGE_LOADER "module.dll"
+# define EVAS_MODULE_NAME_ENGINE "module.dll"
+# define EVAS_MODULE_NAME_OBJECT "module.dll"
+#else
+# define EVAS_MODULE_NAME_IMAGE_SAVER "module.so"
+# define EVAS_MODULE_NAME_IMAGE_LOADER "module.so"
+# define EVAS_MODULE_NAME_ENGINE "module.so"
+# define EVAS_MODULE_NAME_OBJECT "module.so"
+#endif
+
 Evas_Module *
 evas_module_find_type(Evas_Module_Type type, const char *name)
 {
-   Eina_List *l;
+   const char *path;
+   const char *format = NULL;
+   char buffer[4096];
    Evas_Module *em;
+   Eina_Module *en;
+   Eina_List *l;
+
+   if (type < 0 || type > 3) return NULL;
+
+   em = eina_hash_find(evas_modules[type], name);
+   if (em) return em;
 
-   EINA_LIST_FOREACH(evas_modules, l, em)
+   EINA_LIST_FOREACH(evas_module_paths, l, path)
      {
-       if ((type == em->type) && (!strcmp(name,em->name)))
+       switch (type)
          {
-             if (evas_modules != l)
-              {
-                 evas_modules = eina_list_promote_list(evas_modules, l);
-              }
+          case EVAS_MODULE_TYPE_ENGINE: format = "%s/engines/%s/%s/" EVAS_MODULE_NAME_ENGINE; break;
+          case EVAS_MODULE_TYPE_IMAGE_LOADER: format = "%s/loaders/%s/%s/" EVAS_MODULE_NAME_IMAGE_LOADER; break;
+          case EVAS_MODULE_TYPE_IMAGE_SAVER: format = "%s/savers/%s/%s/" EVAS_MODULE_NAME_IMAGE_SAVER; break;
+          case EVAS_MODULE_TYPE_OBJECT: format = "%s/object/%s/%s/" EVAS_MODULE_NAME_OBJECT; break;
+         }
+
+       snprintf(buffer, sizeof (buffer), format, path, name, MODULE_ARCH, name);
+       if (!evas_file_path_is_file(buffer)) continue;
+
+       en = eina_module_new(buffer);
+       if (!en) continue;
+
+       if (!eina_module_load(en))
+         {
+            eina_module_delete(en);
+            continue;
+         }
+
+       em = eina_hash_find(evas_modules[type], name);
+       if (em)
+         {
+            eina_evas_modules = eina_list_append(eina_evas_modules, en);
             return em;
          }
+
+       eina_module_delete(en);
      }
+
    return NULL;
 }
 
+Evas_Module *
+evas_module_engine_get(int render_method)
+{
+   if (render_method <= 0 || render_method > eina_array_count_get(evas_engines))
+     return NULL;
+   return eina_array_data_get(evas_engines, render_method - 1);
+}
+
+void
+evas_module_foreach_image_loader(Eina_Hash_Foreach cb, const void *fdata)
+{
+   eina_hash_foreach(evas_modules[EVAS_MODULE_TYPE_IMAGE_LOADER], cb, fdata);
+}
+
 int
 evas_module_load(Evas_Module *em)
 {
-   char buf[4096];
-   void *handle;
-
    if (em->loaded) return 1;
+   if (em->public == NULL) return 0;
 
-/*   printf("LOAD %s\n", em->name); */
-#if defined(__CEGCC__) || defined(__MINGW32CE__)
-   switch (em->type) {
-     case EVAS_MODULE_TYPE_IMAGE_SAVER:
-        snprintf(buf, sizeof(buf), "%s/%s/%s/saver_%s.dll", em->path, em->name, MODULE_ARCH, em->name);
-        break;
-     case EVAS_MODULE_TYPE_IMAGE_LOADER:
-        snprintf(buf, sizeof(buf), "%s/%s/%s/loader_%s.dll", em->path, em->name, MODULE_ARCH, em->name);
-        break;
-     case EVAS_MODULE_TYPE_ENGINE:
-        snprintf(buf, sizeof(buf), "%s/%s/%s/engine_%s.dll", em->path, em->name, MODULE_ARCH, em->name);
-        break;
-     default:
-        snprintf(buf, sizeof(buf), "%s/%s/%s/object_%s.dll", em->path, em->name, MODULE_ARCH, em->name);
-   }
-#elif _WIN32
-   snprintf(buf, sizeof(buf), "%s/%s/%s/module.dll", em->path, em->name, MODULE_ARCH);
-#else
-   snprintf(buf, sizeof(buf), "%s/%s/%s/module.so", em->path, em->name, MODULE_ARCH);
-#endif
-   if (!evas_file_path_exists(buf))
-     {
-       printf("[evas module] error loading the module %s. It doesnt exists\n", buf);
-       return 0;
-     }
+   if (!em->public->func.open(em)) return 0;
+   em->loaded = 1;
 
-   handle = dlopen(buf, RTLD_LAZY);
-   if (handle)
-     {
-       em->handle = handle;
-       em->func.open = dlsym(em->handle, "module_open");
-       em->func.close = dlsym(em->handle, "module_close");
-       em->api = dlsym(em->handle, "evas_modapi");
-
-       if ((!em->func.open) || (!em->api) || (!em->func.close))
-         goto error_dl;
-       /* check the api */
-       if (em->api->version != EVAS_MODULE_API_VERSION)
-         {
-            printf("[evas module] error loading the modules %s. The version doesnt match\n", buf);
-            goto error_dl;
-         }
-       em->func.open(em);
-       em->loaded = 1;
-       return 1;
-     }
-   error_dl:
-     {
-       const char *err;
-
-       err = dlerror();
-       printf("[evas module] error loading the module %s. %s\n", buf, err);
-       if (handle)
-         dlclose(handle);
-       em->handle = NULL;
-       em->func.open = NULL;
-       em->func.close = NULL;
-       em->api = NULL;
-     }
-   return 0;
+#ifdef BUILD_ASYNC_PRELOAD
+   LKI(em->lock);
+#endif
+   return 1;
 }
 
 void
@@ -302,22 +386,15 @@ evas_module_unload(Evas_Module *em)
 {
    if (!em->loaded)
      return;
-   if (em->handle)
-     {
-       em->func.close(em);
-       dlclose(em->handle);
-     }
-   em->handle = NULL;
-   em->func.open = NULL;
-   em->func.close = NULL;
-   em->api = NULL;
+   if (em->public == NULL)
+     return ;
+
+   em->public->func.close(em);
    em->loaded = 0;
-#ifdef BUILD_ASYNC_PRELOAD   
+
+#ifdef BUILD_ASYNC_PRELOAD
    LKD(em->lock);
 #endif
-//#if defined(BUILD_PTHREAD) && defined(BUILD_ASYNC_PRELOAD)
-//   pthread_mutex_destroy(&em->lock);
-//#endif
 }
 
 void
@@ -325,18 +402,11 @@ evas_module_ref(Evas_Module *em)
 {
 #ifdef BUILD_ASYNC_PRELOAD
    LKL(em->lock);
-#endif   
-//#if defined(BUILD_PTHREAD) && defined(BUILD_ASYNC_PRELOAD)
-//   pthread_mutex_lock(&em->lock);
-//#endif
+#endif
    em->ref++;
-/*   printf("M: %s ref++ = %i\n", em->name, em->ref); */
 #ifdef BUILD_ASYNC_PRELOAD
    LKU(em->lock);
 #endif
-//#if defined(BUILD_PTHREAD) && defined(BUILD_ASYNC_PRELOAD)
-//   pthread_mutex_unlock(&em->lock);
-//#endif
 }
 
 void
@@ -344,18 +414,11 @@ evas_module_unref(Evas_Module *em)
 {
 #ifdef BUILD_ASYNC_PRELOAD
    LKL(em->lock);
-#endif   
-//#if defined(BUILD_PTHREAD) && defined(BUILD_ASYNC_PRELOAD)
-//   pthread_mutex_lock(&em->lock);
-//#endif
+#endif
    em->ref--;
-/*   printf("M: %s ref-- = %i\n", em->name, em->ref); */
 #ifdef BUILD_ASYNC_PRELOAD
    LKU(em->lock);
 #endif
-//#if defined(BUILD_PTHREAD) && defined(BUILD_ASYNC_PRELOAD)
-//   pthread_mutex_unlock(&em->lock);
-//#endif
 }
 
 static int use_count = 0;
@@ -370,10 +433,10 @@ void
 evas_module_clean(void)
 {
    static int call_count = 0;
-   int ago;
+/*    int ago; */
    int noclean = -1;
-   Eina_List *l;
-   Evas_Module *em;
+/*    Eina_List *l; */
+/*    Evas_Module *em; */
 
    /* only clean modules every 256 calls */
    call_count++;
@@ -393,64 +456,51 @@ evas_module_clean(void)
    /* disable module cleaning for now - may cause instability with some modules */
    return;
 
-   /* incriment use counter = 28bits */
-   use_count++;
-   if (use_count > 0x0fffffff) use_count = 0;
-
-   /* printf("CLEAN!\n"); */
-   /* go through all modules */
-   EINA_LIST_FOREACH(evas_modules, l, em)
-     {
-        /* printf("M %s %i %i\n", em->name, em->ref, em->loaded); */
-       /* if the module is refernced - skip */
-       if ((em->ref > 0) || (!em->loaded)) continue;
-       /* how many clean cycles ago was this module last used */
-       ago = use_count - em->last_used;
-       if (em->last_used > use_count) ago += 0x10000000;
-       /* if it was used last more than N clean cycles ago - unload */
-       if (ago > 5)
-         {
-            /* printf("  UNLOAD %s\n", em->name); */
-            evas_module_unload(em);
-         }
-     }
+   /* FIXME: Don't know what it is supposed to do. */
+/*    /\* incriment use counter = 28bits *\/ */
+/*    use_count++; */
+/*    if (use_count > 0x0fffffff) use_count = 0; */
+
+/*    /\* printf("CLEAN!\n"); *\/ */
+/*    /\* go through all modules *\/ */
+/*    EINA_LIST_FOREACH(evas_modules, l, em) */
+/*      { */
+/*         /\* printf("M %s %i %i\n", em->name, em->ref, em->loaded); *\/ */
+/*     /\* if the module is refernced - skip *\/ */
+/*     if ((em->ref > 0) || (!em->loaded)) continue; */
+/*     /\* how many clean cycles ago was this module last used *\/ */
+/*     ago = use_count - em->last_used; */
+/*     if (em->last_used > use_count) ago += 0x10000000; */
+/*     /\* if it was used last more than N clean cycles ago - unload *\/ */
+/*     if (ago > 5) */
+/*       { */
+/*             /\* printf("  UNLOAD %s\n", em->name); *\/ */
+/*          evas_module_unload(em); */
+/*       } */
+/*      } */
 }
 
 /* will dlclose all the modules loaded and free all the structs */
 void
 evas_module_shutdown(void)
 {
-   Evas_Module *em;
+   Eina_Module *en;
+   char *path;
+   int i;
 
-/*    printf("[shutdown modules]\n"); */
-   while (evas_modules)
-     {
-       em = (Evas_Module *)evas_modules->data;
-       evas_module_unload(em);
-       if (em->name) free(em->name);
-       if (em->path) free(em->path);
-       if (em->type == EVAS_MODULE_TYPE_ENGINE)
-         {
-            if (em->data) free(em->data);
-         }
-       else if (em->type == EVAS_MODULE_TYPE_IMAGE_LOADER)
-         {
-         }
-       else if (em->type == EVAS_MODULE_TYPE_IMAGE_SAVER)
-         {
-         }
-       free(evas_modules->data);
-       evas_modules = eina_list_remove_list(evas_modules, evas_modules);
-     }
-   while (evas_module_paths)
-     {
-       Evas_Module_Path *mp;
+   for (i = 0; evas_static_module[i].shutdown != NULL; ++i)
+     evas_static_module[i].shutdown();
 
-       mp = evas_module_paths->data;
-       evas_module_paths = eina_list_remove_list(evas_module_paths, evas_module_paths);
-       free(mp->path);
-       free(mp);
-     }
+   EINA_LIST_FREE(eina_evas_modules, en)
+     eina_module_delete(en);
+
+   eina_hash_free(evas_modules[EVAS_MODULE_TYPE_ENGINE]);
+   eina_hash_free(evas_modules[EVAS_MODULE_TYPE_IMAGE_LOADER]);
+   eina_hash_free(evas_modules[EVAS_MODULE_TYPE_IMAGE_SAVER]);
+   eina_hash_free(evas_modules[EVAS_MODULE_TYPE_OBJECT]);
+
+   EINA_LIST_FREE(evas_module_paths, path)
+     free(path);
 }
 
 EAPI int
index d297fcd..e853bca 100644 (file)
@@ -3,16 +3,16 @@
 
 
 /* the module api version */
-#define EVAS_MODULE_API_VERSION 1
+#define EVAS_MODULE_API_VERSION 2
 
 
 /* the module types */
 typedef enum _Evas_Module_Type
 {
-   EVAS_MODULE_TYPE_ENGINE,
-   EVAS_MODULE_TYPE_IMAGE_LOADER,
-   EVAS_MODULE_TYPE_IMAGE_SAVER,
-     EVAS_MODULE_TYPE_OBJECT
+   EVAS_MODULE_TYPE_ENGINE = 0,
+   EVAS_MODULE_TYPE_IMAGE_LOADER = 1,
+   EVAS_MODULE_TYPE_IMAGE_SAVER = 2,
+   EVAS_MODULE_TYPE_OBJECT = 3
 } Evas_Module_Type;
 
 
@@ -20,40 +20,34 @@ typedef struct _Evas_Module_Api    Evas_Module_Api;
 typedef struct _Evas_Module        Evas_Module;
 typedef struct _Evas_Module_Path   Evas_Module_Path;
 typedef struct _Evas_Module_Engine Evas_Module_Engine;
+typedef struct _Evas_Module_Public Evas_Module_Public;
 
 /* the module api structure, all modules should define this struct */
 struct _Evas_Module_Api
 {
    int                 version;
-   Evas_Module_Type    type;
    const char          *name;
    const char          *author;
-};
 
-/* the module structure */
-struct _Evas_Module
-{
-   Evas_Module_Api     *api;
-   void                        *handle;        /* the dlopen handle */
-   char                        *path;          /* the path where this modules is */
-   char                        *name;          /* the name of the dir where this module is */
    struct
      {
        int (*open)(Evas_Module *);
        void (*close)(Evas_Module *);
      } func;
-   void                *functions;     /* this are the functions exported by the module */
-   void                *data;          /* some internal data for the module i.e the id for engines */
+};
+
+/* the module structure */
+struct _Evas_Module
+{
+   const Evas_Module_Api *public;
 
-   Evas_Module_Type    type;           /* the type detected by the path */
+   void                *functions;     /* this are the functions exported by the module */
+   int           id_engine;    /* some internal data for the module i.e the id for engines */
 
    int           ref; /* how many refs */
    int           last_used; /* the cycle count when it was last used */
 
    LK(lock);
-//#if defined(HAVE_PTHREAD_H) && defined(BUILD_ASYNC_PRELOAD)
-//   pthread_mutex_t lock;
-//#endif
 
    unsigned char       loaded : 1;
 };
@@ -68,14 +62,11 @@ struct _Evas_Module_Path
    char                       *path;
 };
 
-struct _Evas_Module_Engine
-{
-   int                 id;
-};
-
 void         evas_module_paths_init (void);
 void         evas_module_init       (void);
 Evas_Module *evas_module_find_type  (Evas_Module_Type type, const char *name);
+Evas_Module *evas_module_engine_get(int render_method);
+void         evas_module_foreach_image_loader(Eina_Hash_Foreach cb, const void *fdata);
 int          evas_module_load       (Evas_Module *em);
 void         evas_module_unload     (Evas_Module *em);
 void         evas_module_ref        (Evas_Module *em);
@@ -83,6 +74,21 @@ void         evas_module_unref      (Evas_Module *em);
 void         evas_module_use        (Evas_Module *em);
 void         evas_module_clean      (void);
 void         evas_module_shutdown   (void);
-
+Eina_Bool    evas_module_register   (const Evas_Module_Api *module, Evas_Module_Type type);
+Eina_Bool    evas_module_unregister (const Evas_Module_Api *module, Evas_Module_Type type);
+
+#define EVAS_MODULE_DEFINE(Type, Tn, Name)             \
+  Eina_Bool evas_##Tn##_##Name##_init(void)            \
+  {                                                    \
+     return evas_module_register(&evas_modapi, Type);  \
+  }                                                    \
+  void evas_##Tn##_##Name##_shutdown(void)             \
+  {                                                    \
+     evas_module_unregister(&evas_modapi, Type);       \
+  }
+
+#define EVAS_EINA_MODULE_DEFINE(Tn, Name)      \
+  EINA_MODULE_INIT(evas_##Tn##_##Name##_init); \
+  EINA_MODULE_SHUTDOWN(evas_##Tn##_##Name##_shutdown);
 
 #endif /* _EVAS_MODULE_H */
index 3ddd1f3..7a20c88 100644 (file)
@@ -1,25 +1,65 @@
 MAINTAINERCLEANFILES = Makefile.in
 
-SUBDIRS = \
-software_generic \
-buffer \
-directfb \
-fb \
-gl_common \
-gl_x11 \
-gl_glew \
-software_gdi \
-software_ddraw \
-software_x11 \
-xrender_x11 \
-software_sdl \
-software_16 \
-software_16_x11 \
-direct3d \
-software_16_ddraw \
-software_16_wince \
-software_16_sdl \
-quartz
+SUBDIRS =
+
+if !EVAS_STATIC_BUILD_SOFTWARE_GENERIC
+SUBDIRS += software_generic
+endif
+if !EVAS_STATIC_BUILD_BUFFER
+SUBDIRS += buffer
+endif
+if !EVAS_STATIC_BUILD_DIRECT3D
+SUBDIRS += direct3d
+endif
+if !EVAS_STATIC_BUILD_DIRECTFB
+SUBDIRS += directfb
+endif
+if !EVAS_STATIC_BUILD_FB
+SUBDIRS += fb
+endif
+if !EVAS_STATIC_BUILD_GL_GLEW
+SUBDIRS += gl_common gl_glew
+endif
+if !EVAS_STATIC_BUILD_GL_X11
+SUBDIRS += gl_common gl_x11
+endif
+if !EVAS_STATIC_BUILD_QUARTZ
+SUBDIRS += quartz
+endif
+if !EVAS_STATIC_BUILD_SOFTWARE_16
+SUBDIRS += software_16
+endif
+if !EVAS_STATIC_BUILD_SOFTWARE_16_DDRAW
+SUBDIRS += software_16_ddraw
+endif
+if !EVAS_STATIC_BUILD_SOFTWARE_16_WINCE
+SUBDIRS += software_16_wince
+endif
+if !EVAS_STATIC_BUILD_SOFTWARE_16_X11
+SUBDIRS += software_16_x11
+endif
+if !EVAS_STATIC_BUILD_SOFTWARE_SDL
+SUBDIRS += software_16_sdl software_sdl
+endif
+if !EVAS_STATIC_BUILD_SOFTWARE_DDRAW
+SUBDIRS += software_ddraw
+endif
+if !EVAS_STATIC_BUILD_SOFTWARE_GDI
+SUBDIRS += software_gdi
+endif
+if !EVAS_STATIC_BUILD_SOFTWARE_X11
+SUBDIRS += software_x11
+endif
+if !EVAS_STATIC_BUILD_XRENDER_X11
+SUBDIRS += xrender_x11
+endif
+
+
+#if !EVAS_STATIC_BUILD_CAIRO_X11
+#SUBDIRS +=
 #cairo_common
 #cairo_x11
-#software_qtopia
+#endif
+#if !EVAS_STATIC_BUILD_SOFTWARE_QTOPIA
+#SUBDIRS += software_qtopia
+#endif
index 7d9b7c9..371eabd 100644 (file)
@@ -13,20 +13,30 @@ AM_CFLAGS = @WIN32_CFLAGS@
 
 if BUILD_ENGINE_BUFFER
 
+BUFFER_SOURCES = \
+evas_engine.c \
+evas_outbuf.c
+
 pkgdir = $(libdir)/evas/modules/engines/buffer/$(MODULE_ARCH)
 
-pkg_LTLIBRARIES = module.la
+include_HEADERS = Evas_Engine_Buffer.h
 
-module_la_SOURCES = \
-evas_engine.c \
-evas_outbuf.c
+if !EVAS_STATIC_BUILD_BUFFER
 
+pkg_LTLIBRARIES = module.la
+
+module_la_SOURCES = $(BUFFER_SOURCES)
 module_la_LIBADD = $(top_builddir)/src/lib/libevas.la @EINA_LIBS@
 module_la_LDFLAGS =  -no-undefined @lt_enable_auto_import@ -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
 
-include_HEADERS = Evas_Engine_Buffer.h
+else
 
+noinst_LTLIBRARIES = libevas_engine_buffer.la
+
+libevas_engine_buffer_la_SOURCES = $(BUFFER_SOURCES)
+
+endif
 endif
 
 EXTRA_DIST = evas_engine.h
index e5af0cc..5343f1c 100644 (file)
@@ -323,7 +323,7 @@ eng_output_idle_flush(void *data)
 }
 
 /* module advertising code */
-EAPI int
+static int
 module_open(Evas_Module *em)
 {
    if (!em) return 0;
@@ -351,15 +351,25 @@ module_open(Evas_Module *em)
    return 1;
 }
 
-EAPI void
-module_close(void)
+static void
+module_close(Evas_Module *em)
 {
 }
 
-EAPI Evas_Module_Api evas_modapi = 
+static Evas_Module_Api evas_modapi =
 {
-   EVAS_MODULE_API_VERSION, 
-     EVAS_MODULE_TYPE_ENGINE,
-     "buffer",
-     "none"
+   EVAS_MODULE_API_VERSION,
+   "buffer",
+   "none",
+   {
+     module_open,
+     module_close
+   }
 };
+
+EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_ENGINE, engine, buffer);
+
+#ifndef EVAS_STATIC_BUILD_BUFFER
+EVAS_EINA_MODULE_DEFINE(engine, buffer);
+#endif
+
index e1dcc4d..e861db2 100644 (file)
@@ -12,20 +12,34 @@ AM_CPPFLAGS = \
 
 if BUILD_ENGINE_CAIRO_X11
 
+CAIRO_X11_SOURCES = \
+evas_engine.c \
+evas_x_main.c
+
+CAIRO_X11_LIBADD = @evas_engine_cairo_x11_libs@ $(top_builddir)/src/modules/engines/cairo_common/libevas_engine_cairo_common.la
+
 pkgdir = $(libdir)/evas/modules/engines/cairo_x11/$(MODULE_ARCH)
 
+include_HEADERS = Evas_Engine_Cairo_X11.h
+
+if !EVAS_STATIC_BUILD_CAIRO_X11
+
 pkg_LTLIBRARIES = module.la
 
-module_la_SOURCES  = \
-evas_engine.c \
-evas_x_main.c
+module_la_SOURCES = $(CAIRO_X11_SOURCES)
 
-module_la_LIBADD = @EINA_LIBS@ @evas_engine_cairo_x11_libs@ $(top_builddir)/src/modules/engines/cairo_common/libevas_engine_cairo_common.la $(top_builddir)/src/lib/libevas.la
+module_la_LIBADD = @EINA_LIBS@ $(CAIRO_X11_SOURCES) $(top_builddir)/src/lib/libevas.la
 module_la_LDFLAGS = -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
 
-include_HEADERS = Evas_Engine_Cairo_X11.h
+else
 
+noinst_LTLIBRARIES = libevas_engine_cairo_x11.la
+
+libevas_engine_cairo_x11_la_SOURCES = $(CAIRO_X11_SOURCES)
+libevas_engine_cairo_x11_la_LIBADD = $(CAIRO_X11_LIBADD)
+
+endif
 endif
 
 EXTRA_DIST = evas_engine.h
index 57c3b9f..768cffb 100644 (file)
@@ -1478,7 +1478,7 @@ eng_font_hinting_can_hint(void *data, int hinting)
    re = (Render_Engine *)data;
 }
 
-EAPI int
+static int
 module_open(Evas_Module *em)
 {
    if (!em) return 0;
@@ -1486,16 +1486,24 @@ module_open(Evas_Module *em)
    return 1;
 }
 
-EAPI void
-module_close(void)
+static void
+module_close(Evas_Module *em)
 {
-   
 }
 
-EAPI Evas_Module_Api evas_modapi =
+static Evas_Module_Api evas_modapi =
 {
    EVAS_MODULE_API_VERSION,
-     EVAS_MODULE_TYPE_ENGINE,
-     "cairo_x11",
-     "none"
+   "cairo_x11",
+   "none",
+   {
+     module_open,
+     module_close
+   }
 };
+
+EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_ENGINE, engine, cairo_x11);
+
+#ifndef EVAS_STATIC_BUILD_CAIRO_X11
+EVAS_EINA_MODULE_DEFINE(engine, cairo_x11);
+#endif
index fda6fac..26ec71f 100644 (file)
@@ -12,10 +12,7 @@ AM_CPPFLAGS = \
 
 if BUILD_ENGINE_DIRECT3D
 
-pkgdir = $(libdir)/evas/modules/engines/direct3d/$(MODULE_ARCH)
-
-pkg_LTLIBRARIES = module.la
-module_la_SOURCES = \
+DIRECT3D_SOURCES = \
 evas_engine.c \
 evas_direct3d_context.cpp \
 evas_direct3d_device.cpp \
@@ -30,13 +27,29 @@ evas_direct3d_scene.cpp \
 evas_direct3d_shader_pack.cpp \
 evas_direct3d_vertex_buffer_cache.cpp
 
+DIRECT3D_LIBADD = @evas_engine_direct3d_libs@
+
+pkgdir = $(libdir)/evas/modules/engines/direct3d/$(MODULE_ARCH)
+
+include_HEADERS = Evas_Engine_Direct3D.h
+
+if !EVAS_STATIC_BUILD_DIRECT3D
+
+pkg_LTLIBRARIES = module.la
+module_la_SOURCES = $(DIRECT3D_SOURCES)
 module_la_CXXFLAGS = -fno-exceptions
-module_la_LIBADD = $(top_builddir)/src/lib/libevas.la @EINA_LIBS@ @evas_engine_direct3d_libs@
+module_la_LIBADD = $(top_builddir)/src/lib/libevas.la $(DIRECT3D_LIBADD) @EINA_LIBS@
 module_la_LDFLAGS = -no-undefined -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
 
-include_HEADERS = Evas_Engine_Direct3D.h
+else
 
+noinst_LTLIBRARIES = libevas_engine_direct3d.la
+
+libevas_engine_direct3d_la_SOURCES = $(DIRECT3D_SOURCES)
+libevas_engine_direct3d_la_LIBADD = $(DIRECT3D_LIBADD)
+
+endif
 endif
 
 EXTRA_DIST = \
index 6ff9021..736d3b7 100644 (file)
@@ -527,7 +527,7 @@ eng_gradient2_radial_draw(void *data, void *context, void *surface, void *radial
 
 
 /* module advertising code */
-EAPI int
+static int
 module_open(Evas_Module *em)
 {
    if (!em) return 0;
@@ -600,15 +600,24 @@ module_open(Evas_Module *em)
    return 1;
 }
 
-EAPI void
-module_close(void)
+static void
+module_close(Evas_Module *em)
 {
 }
 
-EAPI Evas_Module_Api evas_modapi =
+static Evas_Module_Api evas_modapi =
 {
-   EVAS_MODULE_API_VERSION,
-   EVAS_MODULE_TYPE_ENGINE,
-   "direct3d",
-   "none"
+  EVAS_MODULE_API_VERSION,
+  "direct3d",
+  "none",
+  {
+    module_open,
+    module_close
+  }
 };
+
+EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_ENGINE, engine, direct3d);
+
+#ifndef EVAS_STATIC_BUILD_DIRECT3D
+EVAS_EINA_MODULE_DEFINE(engine, direct3d);
+#endif
index a6bee07..c4b7a5e 100644 (file)
@@ -14,18 +14,31 @@ AM_CFLAGS = @WIN32_CFLAGS@
 
 if BUILD_ENGINE_DIRECTFB
 
+DIRECTFB_SOURCES = evas_engine.c polygon.c
+DIRECTFB_LIBADD = @evas_engine_directfb_libs@
+
 pkgdir = $(libdir)/evas/modules/engines/directfb/$(MODULE_ARCH)
 
+include_HEADERS = Evas_Engine_DirectFB.h
+
+if !EVAS_STATIC_BUILD_DIRECTFB
+
 pkg_LTLIBRARIES = module.la
 
-module_la_SOURCES  = evas_engine.c polygon.c
+module_la_SOURCES  = $(DIRECTFB_SOURCES)
 
-module_la_LIBADD = @EINA_LIBS@ @evas_engine_directfb_libs@ $(top_builddir)/src/lib/libevas.la
+module_la_LIBADD = @EINA_LIBS@ $(DIRECTFB_LIBADD) $(top_builddir)/src/lib/libevas.la
 module_la_LDFLAGS = -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
 
-include_HEADERS = Evas_Engine_DirectFB.h
+else
+
+noinst_LTLIBRARIES = libevas_engine_directfb.la
 
+libevas_engine_directfb_la_SOURCES = $(DIRECTFB_SOURCES)
+libevas_engine_directfb_la_LIBADD = $(DIRECTFB_LIBADD)
+
+endif
 endif
 
 EXTRA_DIST = evas_engine.h
index aff909b..6a41d78 100644 (file)
@@ -1611,7 +1611,7 @@ evas_engine_dfb_image_scale_hint_get(void *data __UNUSED__, void *image)
    return EVAS_IMAGE_SCALE_HINT_NONE;
 }
 
-EAPI int
+static int
 module_open(Evas_Module *em)
 {
    if (!em) return 0;
@@ -1666,15 +1666,24 @@ module_open(Evas_Module *em)
    return 1;
 }
 
-EAPI void
-module_close(void)
+static void
+module_close(Evas_Module *em)
 {
 }
 
-EAPI Evas_Module_Api evas_modapi =
+static Evas_Module_Api evas_modapi =
 {
-   EVAS_MODULE_API_VERSION,
-   EVAS_MODULE_TYPE_ENGINE,
-   "directfb",
-   "ProFUSION embedded systems"
+  EVAS_MODULE_API_VERSION,
+  "directfb",
+  "ProFUSION embedded systems",
+  {
+    module_open,
+    module_close
+  }
 };
+
+EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_ENGINE, engine, directfb);
+
+#ifndef EVAS_STATIC_BUILD_DIRECTFB
+EVAS_EINA_MODULE_DEFINE(engine, directfb);
+#endif
index 327e96f..6779773 100644 (file)
@@ -12,20 +12,33 @@ AM_CPPFLAGS = \
 
 if BUILD_ENGINE_FB
 
-pkgdir = $(libdir)/evas/modules/engines/fb/$(MODULE_ARCH)
-
-pkg_LTLIBRARIES = module.la
-module_la_SOURCES = \
+FB_SOURCES = \
 evas_engine.c \
 evas_fb_main.c \
 evas_outbuf.c
 
-module_la_LIBADD = @EINA_LIBS@ @evas_engine_fb_libs@ $(top_builddir)/src/lib/libevas.la
+FB_LIBADD = @evas_engine_fb_libs@
+
+pkgdir = $(libdir)/evas/modules/engines/fb/$(MODULE_ARCH)
+
+include_HEADERS = Evas_Engine_FB.h
+
+if !EVAS_STATIC_BUILD_FB
+
+pkg_LTLIBRARIES = module.la
+module_la_SOURCES = $(FB_SOURCES)
+module_la_LIBADD = @EINA_LIBS@ $(FB_LIBADD) $(top_builddir)/src/lib/libevas.la
 module_la_LDFLAGS = -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
 
-include_HEADERS = Evas_Engine_FB.h
+else
 
+noinst_LTLIBRARIES = libevas_engine_fb.la
+
+libevas_engine_fb_la_SOURCES = $(FB_SOURCES)
+libevas_engine_fb_la_LIBADD = $(FB_LIBADD)
+
+endif
 endif
 
 EXTRA_DIST = \
index 3307611..58d684b 100644 (file)
@@ -248,7 +248,7 @@ eng_output_idle_flush(void *data)
 }
 
 /* module advertising code */
-EAPI int
+static int
 module_open(Evas_Module *em)
 {
    if (!em) return 0;
@@ -276,15 +276,24 @@ module_open(Evas_Module *em)
    return 1;
 }
 
-EAPI void
-module_close(void)
+static void
+module_close(Evas_Module *em)
 {
 }
 
-EAPI Evas_Module_Api evas_modapi = 
+static Evas_Module_Api evas_modapi =
 {
-   EVAS_MODULE_API_VERSION, 
-     EVAS_MODULE_TYPE_ENGINE,
-     "fb",
-     "none"
+  EVAS_MODULE_API_VERSION,
+  "fb",
+  "none",
+  {
+    module_open,
+    module_close
+  }
 };
+
+EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_ENGINE, engine, fb);
+
+#ifndef EVAS_STATIC_BUILD_FB
+EVAS_EINA_MODULE_DEFINE(engine, fb);
+#endif
index 1cf4585..47461a4 100644 (file)
@@ -12,20 +12,33 @@ AM_CPPFLAGS = \
 
 if BUILD_ENGINE_GL_GLEW
 
+GL_GLEW_SOURCES = \
+evas_engine.c \
+evas_glew_main.c
+
+GL_GLEW_LIBADD = @evas_engine_gl_glew_libs@ $(top_builddir)/src/modules/engines/gl_common/libevas_engine_gl_common.la
+
 pkgdir = $(libdir)/evas/modules/engines/gl_glew/$(MODULE_ARCH)
 
-pkg_LTLIBRARIES = module.la
+include_HEADERS = Evas_Engine_GL_Glew.h
 
-module_la_SOURCES  = \
-evas_engine.c \
-evas_glew_main.c
+if !EVAS_STATIC_BUILD_GL_GLEW
+
+pkg_LTLIBRARIES = module.la
 
-module_la_LIBADD = $(top_builddir)/src/modules/engines/gl_common/libevas_engine_gl_common.la $(top_builddir)/src/lib/libevas.la @evas_engine_gl_glew_libs@
+module_la_SOURCES  = $(GL_GLEW_SOURCES)
+module_la_LIBADD = $(GL_GLEW_LIBADD) $(top_builddir)/src/lib/libevas.la
 module_la_LDFLAGS = -no-undefined -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
 
-include_HEADERS = Evas_Engine_GL_Glew.h
+else
 
+noinst_LTLIBRARIES = libevas_engine_gl_glew.la
+
+libevas_engine_gl_glew_la_SOURCES = $(GL_GLEW_SOURCES)
+libevas_engine_gl_glew_la_LIBADD = $(GL_GLEW_LIBADD)
+
+endif
 endif
 
 EXTRA_DIST = evas_engine.h
index c242576..6386e36 100644 (file)
@@ -922,8 +922,7 @@ eng_font_draw(void *data, void *context, void *surface, void *font, int x, int y
      }
 }
 
-
-EAPI int
+static int
 module_open(Evas_Module *em)
 {
    if (!em) return 0;
@@ -1004,16 +1003,24 @@ module_open(Evas_Module *em)
    return 1;
 }
 
-EAPI void
-module_close(void)
+static void
+module_close(Evas_Module *em)
 {
-
 }
 
-EAPI Evas_Module_Api evas_modapi =
+static Evas_Module_Api evas_modapi =
 {
    EVAS_MODULE_API_VERSION,
-   EVAS_MODULE_TYPE_ENGINE,
    "gl_glew",
-   "none"
+   "none",
+   {
+     module_open,
+     module_close
+   }
 };
+
+EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_ENGINE, engine, gl_glew);
+
+#ifndef EVAS_STATIC_BUILD_GL_GLEW
+EVAS_EINA_MODULE_DEFINE(engine, gl_glew);
+#endif
index d69f6bf..01bf394 100644 (file)
@@ -12,20 +12,33 @@ AM_CPPFLAGS = \
 
 if BUILD_ENGINE_GL_X11
 
+GL_X11_SOURCES = \
+evas_engine.c \
+evas_x_main.c
+
+GL_X11_LIBADD = @evas_engine_gl_x11_libs@ $(top_builddir)/src/modules/engines/gl_common/libevas_engine_gl_common.la 
+
 pkgdir = $(libdir)/evas/modules/engines/gl_x11/$(MODULE_ARCH)
 
-pkg_LTLIBRARIES = module.la
+include_HEADERS = Evas_Engine_GL_X11.h
 
-module_la_SOURCES  = \
-evas_engine.c \
-evas_x_main.c
+if !EVAS_STATIC_BUILD_GL_X11
+
+pkg_LTLIBRARIES = module.la
 
-module_la_LIBADD = @EINA_LIBS@ @evas_engine_gl_x11_libs@ $(top_builddir)/src/modules/engines/gl_common/libevas_engine_gl_common.la $(top_builddir)/src/lib/libevas.la
+module_la_SOURCES = $(GL_X11_SOURCES)
+module_la_LIBADD = @EINA_LIBS@ $(GL_X11_LIBADD) $(top_builddir)/src/lib/libevas.la
 module_la_LDFLAGS = -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
 
-include_HEADERS = Evas_Engine_GL_X11.h
+else
 
+noinst_LTLIBRARIES = libevas_engine_gl_x11.la
+
+libevas_engine_gl_x11_la_SOURCES = $(GL_X11_SOURCES)
+libevas_engine_gl_x11_la_LIBADD = $(GL_X11_LIBADD)
+
+endif
 endif
 
 EXTRA_DIST = evas_engine.h
index 8934e2d..8eb5576 100644 (file)
@@ -1086,7 +1086,7 @@ eng_best_depth_get(Display *disp, int screen)
    return _evas_gl_x11_vi->depth;
 }
 
-EAPI int
+static int
 module_open(Evas_Module *em)
 {
    if (!em) return 0;
@@ -1189,16 +1189,24 @@ module_open(Evas_Module *em)
    return 1;
 }
 
-EAPI void
-module_close(void)
+static void
+module_close(Evas_Module *em)
 {
-
 }
 
-EAPI Evas_Module_Api evas_modapi =
+static Evas_Module_Api evas_modapi =
 {
    EVAS_MODULE_API_VERSION,
-     EVAS_MODULE_TYPE_ENGINE,
-     "gl_x11",
-     "none"
+   "gl_x11",
+   "none",
+   {
+     module_open,
+     module_close
+   }
 };
+
+EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_ENGINE, engine, gl_x11);
+
+#ifndef EVAS_STATIC_BUILD_GL_X11
+EVAS_EINA_MODULE_DEFINE(engine, gl_x11);
+#endif
index fd59260..597e454 100644 (file)
@@ -11,18 +11,30 @@ AM_CPPFLAGS = \
 
 if BUILD_ENGINE_QUARTZ
 
+QUARTZ_SOURCES = evas_engine.c
+QUARTZ_LIBADD = @evas_engine_quartz_libs@
+
 pkgdir = $(libdir)/evas/modules/engines/quartz/$(MODULE_ARCH)
 
-pkg_LTLIBRARIES = module.la
+include_HEADERS = Evas_Engine_Quartz.h
 
-module_la_SOURCES  = evas_engine.c
+if !EVAS_STATIC_BUILD_QUARTZ
+
+pkg_LTLIBRARIES = module.la
 
-module_la_LIBADD = @EINA_LIBS@ @evas_engine_quartz_libs@ $(top_builddir)/src/lib/libevas.la
+module_la_SOURCES = $(QUARTZ_SOURCES)
+module_la_LIBADD = @EINA_LIBS@ $(QUARTZ_LIBADD) $(top_builddir)/src/lib/libevas.la
 module_la_LDFLAGS = -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
 
-include_HEADERS = Evas_Engine_Quartz.h
+else
+
+noinst_LTLIBRARIES = libevas_engine_quartz.la
 
+libevas_engine_quartz_la_SOURCES = $(QUARTZ_SOURCES)
+libevas_engine_quartz_la_LIBADD = $(QUARTZ_LIBADD)
+
+endif
 endif
 
 EXTRA_DIST = \
index 4dc9d80..5637702 100644 (file)
@@ -1412,7 +1412,7 @@ eng_font_draw(void *data, void *context, void *surface, void *font, int x, int y
 
 #pragma mark Module Function Export
 
-EAPI int
+static int
 module_open(Evas_Module *em)
 {
    if (!em) return 0;
@@ -1511,16 +1511,25 @@ module_open(Evas_Module *em)
    return 1;
 }
 
-EAPI void
-module_close(void)
+static void
+module_close(Evas_Module *em)
 {
 
 }
 
-EAPI Evas_Module_Api evas_modapi =
+static Evas_Module_Api evas_modapi =
 {
    EVAS_MODULE_API_VERSION,
-     EVAS_MODULE_TYPE_ENGINE,
-     "quartz",
-     "none"
+   "quartz",
+   "none",
+   {
+     module_open,
+     module_close
+   }
 };
+
+EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_ENGINE, engine, quartz);
+
+#ifndef EVAS_STATIC_BUILD_QUARTZ
+EVAS_EINA_MODULE_DEFINE(engine, quartz);
+#endif
index 61dd4b6..47eaf10 100644 (file)
@@ -13,14 +13,26 @@ AM_CFLAGS = @WIN32_CFLAGS@
 
 if BUILD_ENGINE_SOFTWARE_16
 
+SOFTWARE_16_SOURCES = evas_engine.c
+
 pkgdir = $(libdir)/evas/modules/engines/software_16/$(MODULE_ARCH)
 
-pkg_LTLIBRARIES = module.la
-module_la_SOURCES  = \
-evas_engine.c
+if !EVAS_STATIC_BUILD_SOFTWARE_16
 
+pkg_LTLIBRARIES = module.la
+module_la_SOURCES = $(SOFTWARE_16_SOURCES)
 module_la_LIBADD = @EINA_LIBS@ $(top_builddir)/src/lib/libevas.la
 module_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
 
+else
+
+noinst_LTLIBRARIES = libevas_engine_software_16.la
+
+libevas_engine_software_16_la_SOURCES = $(SOFTWARE_16_SOURCES)
+
+endif
 endif
+
+EXTRA_DIST = \
+evas_engine.c
index 30e6758..19f1dd3 100644 (file)
@@ -984,7 +984,7 @@ static Evas_Func func =
  *****
  */
 
-EAPI int
+static int
 module_open(Evas_Module *em)
 {
    if (!em) return 0;
@@ -992,15 +992,24 @@ module_open(Evas_Module *em)
    return 1;
 }
 
-EAPI void
-module_close(void)
+static void
+module_close(Evas_Module *em)
 {
 }
 
-EAPI Evas_Module_Api evas_modapi =
+static Evas_Module_Api evas_modapi =
 {
   EVAS_MODULE_API_VERSION,
-  EVAS_MODULE_TYPE_ENGINE,
   "software_16",
-  "none"
+  "none",
+  {
+    module_open,
+    module_close
+  }
 };
+
+EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_ENGINE, engine, software_16);
+
+#ifndef EVAS_STATIC_BUILD_SOFTWARE_16
+EVAS_EINA_MODULE_DEFINE(engine, software_16);
+#endif
index fa1f766..f752ab7 100644 (file)
@@ -13,22 +13,35 @@ AM_CPPFLAGS = \
 
 if BUILD_ENGINE_SOFTWARE_16_DDRAW
 
-pkgdir = $(libdir)/evas/modules/engines/software_16_ddraw/$(MODULE_ARCH)
-
-pkg_LTLIBRARIES        = module.la
-
-module_la_SOURCES = \
+SOFTWARE_16_DDRAW_SOURCES = \
 evas_engine.c \
 evas_ddraw_buffer.cpp \
 evas_ddraw_main.cpp
 
+SOFTWARE_16_DDRAW_LIBADD = @evas_engine_software_16_ddraw_libs@
+
+pkgdir = $(libdir)/evas/modules/engines/software_16_ddraw/$(MODULE_ARCH)
+
+include_HEADERS = Evas_Engine_Software_16_DDraw.h
+
+if !EVAS_STATIC_BUILD_SOFTWARE_16_DDRAW
+
+pkg_LTLIBRARIES        = module.la
+
+module_la_SOURCES = $(SOFTWARE_16_DDRAW_SOURCES)
 module_la_CXXFLAGS = -fno-rtti -fno-exceptions
-module_la_LIBADD = $(top_builddir)/src/lib/libevas.la @EINA_LIBS@ @evas_engine_software_16_ddraw_libs@
+module_la_LIBADD = $(top_builddir)/src/lib/libevas.la @EINA_LIBS@ $(SOFTWARE_16_DDRAW_LIBADD)
 module_la_LDFLAGS = -no-undefined -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
 
-include_HEADERS = Evas_Engine_Software_16_DDraw.h
+else
+
+noinst_LTLIBRARIES = libevas_engine_software_16_ddraw.la
 
+libevas_engine_software_16_ddraw_la_SOURCES = $(SOFTWARE_16_DDRAW_SOURCES)
+libevas_engine_software_16_ddraw_la_LIBADD = $(SOFTWARE_16_DDRAW_LIBADD)
+
+endif
 endif
 
 EXTRA_DIST = evas_engine.h
index 048f46b..61776d1 100644 (file)
@@ -564,7 +564,7 @@ eng_output_idle_flush(void *data)
 
 
 /* module advertising code */
-EAPI int
+static int
 module_open(Evas_Module *em)
 {
    if (!em) return 0;
@@ -592,15 +592,24 @@ module_open(Evas_Module *em)
    return 1;
 }
 
-EAPI void
-module_close(void)
+static void
+module_close(Evas_Module *em)
 {
 }
 
-EAPI Evas_Module_Api evas_modapi =
+static Evas_Module_Api evas_modapi =
 {
    EVAS_MODULE_API_VERSION,
-     EVAS_MODULE_TYPE_ENGINE,
-     "software_16_ddraw",
-     "none"
+   "software_16_ddraw",
+   "none",
+   {
+     module_open,
+     module_close
+   }
 };
+
+EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_ENGINE, engine, software_16_ddraw);
+
+#ifndef EVAS_STATIC_BUILD_SOFTWARE_16_DDRAW
+EVAS_EINA_MODULE_DEFINE(engine, software_16_ddraw);
+#endif
index a00ce3c..75ee709 100644 (file)
@@ -6,19 +6,31 @@ INCLUDES = -I. -I$(top_srcdir)/src/lib -I$(top_srcdir)/src/lib/include @FREETYPE
 
 if BUILD_ENGINE_SOFTWARE_SDL
 
+SOFTWARE_SDL_SOURCES = \
+evas_engine.c \
+evas_engine.h
+
 pkgdir = $(libdir)/evas/modules/engines/software_16_sdl/$(MODULE_ARCH)
 
+include_HEADERS = Evas_Engine_SDL_16.h
+
+if !EVAS_STATIC_BUILD_SOFTWARE_SDL
+
 pkg_LTLIBRARIES = module.la
 
-module_la_SOURCES  = \
-evas_engine.c \
-evas_engine.h
+module_la_SOURCES = $(SOFTWARE_SDL_SOURCES)
 
 module_la_LIBADD = @EINA_LIBS@ @SDL_LIBS@ $(top_builddir)/src/lib/libevas.la
 module_la_LDFLAGS = -no-undefined -module -avoid-version -L$(top_builddir)/src/lib -L$(top_builddir)/src/lib/.libs
 
-include_HEADERS = Evas_Engine_SDL_16.h
+else
 
+noinst_LTLIBRARIES = libevas_engine_software_16_sdl.la
+
+libevas_engine_software_16_sdl_la_SOURCES = $(SOFTWARE_SDL_SOURCES)
+libevas_engine_software_16_sdl_la_LIBADD = @SDL_LIBS@
+
+endif
 endif
 
 EXTRA_DIST = \
index 3341720..1f57ce5 100644 (file)
@@ -1019,7 +1019,7 @@ evas_engine_sdl16_image_stride_get(void *data __UNUSED__, void *image, int *stri
 }
 
 /* module advertising code */
-EAPI int
+static int
 module_open(Evas_Module *em)
 {
    if (!em) return 0;
@@ -1079,19 +1079,28 @@ module_open(Evas_Module *em)
    return 1;
 }
 
-EAPI void
-module_close(void)
+static void
+module_close(Evas_Module *em)
 {
 }
 
-EAPI Evas_Module_Api evas_modapi = 
+static Evas_Module_Api evas_modapi =
 {
-   EVAS_MODULE_API_VERSION, 
-     EVAS_MODULE_TYPE_ENGINE,
-     "software_16_sdl",
-     "none"
+   EVAS_MODULE_API_VERSION,
+   "software_16_sdl",
+   "none",
+   {
+     module_open,
+     module_close
+   }
 };
 
+EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_ENGINE, engine, software_16_sdl);
+
+#ifndef EVAS_STATIC_BUILD_SOFTWARE_SDL
+EVAS_EINA_MODULE_DEFINE(engine, software_16_sdl);
+#endif
+
 static Engine_Image_Entry*
 _sdl16_image_alloc(void)
 {
index 69de313..4557d73 100644 (file)
@@ -16,11 +16,7 @@ AM_CPPFLAGS = \
 
 if BUILD_ENGINE_SOFTWARE_16_WINCE
 
-pkgdir = $(libdir)/evas/modules/engines/software_16_wince/$(MODULE_ARCH)
-
-pkg_LTLIBRARIES        = module.la
-
-module_la_SOURCES = \
+SOFTWARE_16_WINCE_SOURCE = \
 evas_engine.c \
 evas_wince_ddraw_buffer.cpp \
 evas_wince_fb_buffer.c \
@@ -28,14 +24,31 @@ evas_wince_gapi_buffer.c \
 evas_wince_gdi_buffer.c \
 evas_wince_gapi.rc
 
+SOFTWARE_16_WINCE_LIBADD = @evas_engine_software_16_wince_libs@
+
+pkgdir = $(libdir)/evas/modules/engines/software_16_wince/$(MODULE_ARCH)
+
+include_HEADERS = Evas_Engine_Software_16_WinCE.h
+
+if !EVAS_STATIC_BUILD_SOFTWARE_16_WINCE
+
+pkg_LTLIBRARIES        = module.la
+
+module_la_SOURCES = $(SOFTWARE_16_WINCE_SOURCE)
 module_la_CFLAGS = @WIN32_CFLAGS@
 module_la_CXXFLAGS = -fno-rtti -fno-exceptions
-module_la_LIBADD = @EINA_LIBS@ $(top_builddir)/src/lib/libevas.la @evas_engine_software_16_wince_libs@
+module_la_LIBADD = @EINA_LIBS@ $(top_builddir)/src/lib/libevas.la $(SOFTWARE_16_WINCE_LIBADD)
 module_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
 
-include_HEADERS = Evas_Engine_Software_16_WinCE.h
+else
+
+noinst_LTLIBRARIES = libevas_engine_software_16_wince.la
 
+libevas_engine_software_16_wince_la_SOURCES = $(SOFTWARE_16_WINCE_SOURCE)
+libevas_engine_software_16_wince_la_LIBADD = $(SOFTWARE_16_WINCE_LIBADD)
+
+endif
 endif
 
 EXTRA_DIST = evas_engine.h
index c8412b2..1bfc4d6 100644 (file)
@@ -705,7 +705,7 @@ eng_output_idle_flush(void *data)
 
 
 /* module advertising code */
-EAPI int
+static int
 module_open(Evas_Module *em)
 {
    if (!em) return 0;
@@ -733,15 +733,24 @@ module_open(Evas_Module *em)
    return 1;
 }
 
-EAPI void
-module_close(void)
+static void
+module_close(Evas_Module *em)
 {
 }
 
-EAPI Evas_Module_Api evas_modapi =
+static Evas_Module_Api evas_modapi =
 {
    EVAS_MODULE_API_VERSION,
-   EVAS_MODULE_TYPE_ENGINE,
    "software_16_wince_fb",
-   "none"
+   "none",
+   {
+     module_open,
+     module_close
+   }
 };
+
+EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_ENGINE, engine, software_16_wince_fb);
+
+#ifndef EVAS_STATIC_BUILD_SOFTWARE_16_WINCE_FB
+EVAS_EINA_MODULE_DEFINE(engine, software_16_wince_fb);
+#endif
index 8a44b65..45106ed 100644 (file)
@@ -13,20 +13,33 @@ AM_CPPFLAGS = \
 
 if BUILD_ENGINE_SOFTWARE_16_X11
 
+SOFTWARE_16_X11_SOURCES =  \
+evas_engine.c \
+evas_x_buffer.c
+
+SOFTWARE_16_X11_LIBADD = @evas_engine_software_16_x11_libs@
+
 pkgdir = $(libdir)/evas/modules/engines/software_16_x11/$(MODULE_ARCH)
 
-pkg_LTLIBRARIES        = module.la
+include_HEADERS = Evas_Engine_Software_16_X11.h
 
-module_la_SOURCES = \
-evas_engine.c \
-evas_x_buffer.c
+if !EVAS_STATIC_BUILD_SOFTWARE_16_X11
+
+pkg_LTLIBRARIES        = module.la
 
-module_la_LIBADD = @EINA_LIBS@ @evas_engine_software_16_x11_libs@ $(top_builddir)/src/lib/libevas.la
+module_la_SOURCES = $(SOFTWARE_16_X11_SOURCES)
+module_la_LIBADD = @EINA_LIBS@ $(SOFTWARE_16_X11_LIBADD) $(top_builddir)/src/lib/libevas.la
 module_la_LDFLAGS = -no-undefined -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
 
-include_HEADERS = Evas_Engine_Software_16_X11.h
+else
 
+noinst_LTLIBRARIES = libevas_engine_software_16_x11.la
+
+libevas_engine_software_16_x11_la_SOURCES = $(SOFTWARE_16_X11_SOURCES)
+libevas_engine_software_16_x11_la_LIBADD = $(SOFTWARE_16_X11_LIBADD)
+
+endif
 endif
 
 EXTRA_DIST = evas_engine.h
index 720e948..d4906e9 100644 (file)
@@ -544,7 +544,7 @@ eng_output_idle_flush(void *data)
 
 
 /* module advertising code */
-EAPI int
+static int
 module_open(Evas_Module *em)
 {
    if (!em) return 0;
@@ -572,15 +572,25 @@ module_open(Evas_Module *em)
    return 1;
 }
 
-EAPI void
-module_close(void)
+static void
+module_close(Evas_Module *em)
 {
 }
 
-EAPI Evas_Module_Api evas_modapi = 
+static Evas_Module_Api evas_modapi =
 {
-   EVAS_MODULE_API_VERSION, 
-     EVAS_MODULE_TYPE_ENGINE,
-     "software_16_x11",
-     "none"
+   EVAS_MODULE_API_VERSION,
+   "software_16_x11",
+   "none",
+   {
+     module_open,
+     module_close
+   }
 };
+
+EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_ENGINE, engine, software_16_x11);
+
+#ifndef EVAS_STATIC_BUILD_SOFTWARE_16_X11
+EVAS_EINA_MODULE_DEFINE(engine, software_16_x11);
+#endif
+
index 72cbe7a..751f50a 100644 (file)
@@ -12,22 +12,35 @@ AM_CPPFLAGS = \
 
 if BUILD_ENGINE_SOFTWARE_DDRAW
 
-pkgdir = $(libdir)/evas/modules/engines/software_ddraw/$(MODULE_ARCH)
-
-pkg_LTLIBRARIES = module.la
-module_la_SOURCES = \
+SOFTWARE_DDRAW_SOURCES = \
 evas_engine.c \
 evas_outbuf.c \
 evas_ddraw_buffer.c \
 evas_ddraw_main.cpp
 
+SOFTWARE_DDRAW_LIBADD = @evas_engine_software_ddraw_libs@
+
+pkgdir = $(libdir)/evas/modules/engines/software_ddraw/$(MODULE_ARCH)
+
+include_HEADERS = Evas_Engine_Software_DDraw.h
+
+if !EVAS_STATIC_BUILD_SOFTWARE_DDRAW
+
+pkg_LTLIBRARIES = module.la
+module_la_SOURCES = $(SOFTWARE_DDRAW_SOURCES)
 module_la_CXXFLAGS = -fno-rtti -fno-exceptions
-module_la_LIBADD = @EINA_LIBS@ @evas_engine_software_ddraw_libs@ $(top_builddir)/src/lib/libevas.la
+module_la_LIBADD = @EINA_LIBS@ $(SOFTWARE_DDRAW_LIBADD) $(top_builddir)/src/lib/libevas.la
 module_la_LDFLAGS = -no-undefined -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
 
-include_HEADERS = Evas_Engine_Software_DDraw.h
+else
 
+noinst_LTLIBRARIES = libevas_engine_software_ddraw.la
+
+libevas_engine_software_ddraw_la_SOURCES = $(SOFTWARE_DDRAW_SOURCES)
+libevas_engine_software_ddraw_la_LIBADD = $(SOFTWARE_DDRAW_LIBADD)
+
+endif
 endif
 
 EXTRA_DIST = evas_engine.h
index 61abfb1..0cf7a2f 100644 (file)
@@ -311,7 +311,7 @@ eng_output_idle_flush(void *data)
 
 
 /* module advertising code */
-EAPI int
+static int
 module_open(Evas_Module *em)
 {
    if (!em) return 0;
@@ -339,15 +339,24 @@ module_open(Evas_Module *em)
    return 1;
 }
 
-EAPI void
-module_close(void)
+static void
+module_close(Evas_Module *em)
 {
 }
 
-EAPI Evas_Module_Api evas_modapi =
+static Evas_Module_Api evas_modapi =
 {
    EVAS_MODULE_API_VERSION,
-   EVAS_MODULE_TYPE_ENGINE,
    "software_ddraw",
-   "none"
+   "none",
+   {
+     module_open,
+     module_close
+   }
 };
+
+EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_ENGINE, engine, software_ddraw);
+
+#ifndef EVAS_STATIC_BUILD_SOFTWARE_DDRAW
+EVAS_EINA_MODULE_DEFINE(engine, software_ddraw);
+#endif
index daf5f85..943d418 100644 (file)
@@ -12,21 +12,34 @@ AM_CPPFLAGS = \
 
 if BUILD_ENGINE_SOFTWARE_GDI
 
-pkgdir = $(libdir)/evas/modules/engines/software_gdi/$(MODULE_ARCH)
-
-pkg_LTLIBRARIES = module.la
-module_la_SOURCES = \
+SOFTWARE_GDI_SOURCES = \
 evas_engine.c \
 evas_outbuf.c \
 evas_gdi_buffer.c \
 evas_gdi_main.c
 
-module_la_LIBADD = $(top_builddir)/src/lib/libevas.la @EINA_LIBS@ @evas_engine_software_gdi_libs@
+SOFTWARE_GDI_LIBADD = @evas_engine_software_gdi_libs@
+
+pkgdir = $(libdir)/evas/modules/engines/software_gdi/$(MODULE_ARCH)
+
+include_HEADERS = Evas_Engine_Software_Gdi.h
+
+if !EVAS_STATIC_BUILD_SOFTWARE_GDI
+
+pkg_LTLIBRARIES = module.la
+module_la_SOURCES = $(SOFTWARE_GDI_SOURCES)
+module_la_LIBADD = $(top_builddir)/src/lib/libevas.la @EINA_LIBS@ $(SOFTWARE_GDI_LIBADD)
 module_la_LDFLAGS = -no-undefined -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
 
-include_HEADERS = Evas_Engine_Software_Gdi.h
+else
 
+noinst_LTLIBRARIES = libevas_engine_software_gdi.la
+
+libevas_engine_software_gdi_la_SOURCES = $(SOFTWARE_GDI_SOURCES)
+libevas_engine_software_gdi_la_LIBADD = $(SOFTWARE_GDI_LIBADD)
+
+endif
 endif
 
 EXTRA_DIST = evas_engine.h
index 5b73cad..4c9eb2d 100644 (file)
@@ -321,7 +321,7 @@ eng_output_idle_flush(void *data)
 
 
 /* module advertising code */
-EAPI int
+static int
 module_open(Evas_Module *em)
 {
    if (!em) return 0;
@@ -349,15 +349,24 @@ module_open(Evas_Module *em)
    return 1;
 }
 
-EAPI void
-module_close(void)
+static void
+module_close(Evas_Module *em)
 {
 }
 
-EAPI Evas_Module_Api evas_modapi =
+static Evas_Module_Api evas_modapi =
 {
    EVAS_MODULE_API_VERSION,
-   EVAS_MODULE_TYPE_ENGINE,
    "software_gdi",
-   "none"
+   "none",
+   {
+     module_open,
+     module_close
+   }
 };
+
+EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_ENGINE, engine, software_gdi);
+
+#ifndef EVAS_STATIC_BUILD_SOFTWARE_GDI
+EVAS_EINA_MODULE_DEFINE(engine, software_gdi);
+#endif
index 3c4a5e5..de7f982 100644 (file)
@@ -11,12 +11,24 @@ AM_CPPFLAGS = \
 
 AM_CFLAGS = @WIN32_CFLAGS@
 
+SOFTWARE_GENERIC_SOURCES = evas_engine.c
+
 pkgdir = $(libdir)/evas/modules/engines/software_generic/$(MODULE_ARCH)
 
+if !EVAS_STATIC_BUILD_SOFTWARE_GENERIC
+
 pkg_LTLIBRARIES = module.la
 
-module_la_SOURCES  = evas_engine.c
+module_la_SOURCES  = $(SOFTWARE_GENERIC_SOURCES)
 
 module_la_LIBADD = @EINA_LIBS@ $(top_builddir)/src/lib/libevas.la
 module_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
+
+else
+
+noinst_LTLIBRARIES = libevas_engine_software_generic.la
+
+libevas_engine_software_generic_la_SOURCES = $(SOFTWARE_GENERIC_SOURCES)
+
+endif
index 566ddda..5dc7a03 100644 (file)
@@ -1121,7 +1121,7 @@ static Evas_Func func =
  *****
  */
 
-EAPI int
+static int
 module_open(Evas_Module *em)
 {
    if (!em) return 0;
@@ -1130,15 +1130,24 @@ module_open(Evas_Module *em)
    return 1;
 }
 
-EAPI void
-module_close(void)
+static void
+module_close(Evas_Module *em)
 {
 }
 
-EAPI Evas_Module_Api evas_modapi = 
+static Evas_Module_Api evas_modapi =
 {
-   EVAS_MODULE_API_VERSION, 
-     EVAS_MODULE_TYPE_ENGINE,
-     "software_generic",
-     "none"
+   EVAS_MODULE_API_VERSION,
+   "software_generic",
+   "none",
+   {
+     module_open,
+     module_close
+   }
 };
+
+EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_ENGINE, engine, software_generic);
+
+#ifndef EVAS_STATIC_BUILD_SOFTWARE_GENERIC
+EVAS_EINA_MODULE_DEFINE(engine, software_generic);
+#endif
index 8998b12..a8ac900 100644 (file)
@@ -14,20 +14,33 @@ AM_CXXFLAGS = $(CFLAGS) -DQT_QWS_EBX -DQT_QWS_CUSTOM -DQWS -DNO_DEBUG
 
 if BUILD_ENGINE_SOFTWARE_QTOPIA
 
-pkgdir = $(libdir)/evas/modules/engines/software_qtopia/$(MODULE_ARCH)
-
-pkg_LTLIBRARIES = module.la
-module_la_SOURCES = \
+SOFTWARE_QTOPIA_SOURCES = \
 evas_engine.c \
 evas_outbuf.c \
 evas_qt_main.cpp
 
-module_la_LIBADD = @EINA_LIBS@ @evas_engine_software_qtopia_libs@ $(top_builddir)/src/lib/libevas.la
+SOFTWARE_QTOPIA_LIBADD = @evas_engine_software_qtopia_libs@
+
+pkgdir = $(libdir)/evas/modules/engines/software_qtopia/$(MODULE_ARCH)
+
+include_HEADERS = Evas_Engine_Software_Qtopia.h
+
+if !EVAS_STATIC_BUILD_SOFTWARE_QTOPIA
+
+pkg_LTLIBRARIES = module.la
+module_la_SOURCES = $(SOFTWARE_QTOPIA_SOURCES)
+module_la_LIBADD = @EINA_LIBS@ $(SOFTWARE_QTOPIA_LIBADD) $(top_builddir)/src/lib/libevas.la
 module_la_LDFLAGS = -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
 
-include_HEADERS = Evas_Engine_Software_Qtopia.h
+else
 
+noinst_LTLIBRARIES = libevas_engine_software_qtopia.la
+
+libevas_engine_software_qtopia_la_SOURCES = $(SOFTWARE_QTOPIA_SOURCES)
+libevas_engine_software_qtopia_la_LIBADD = $(SOFTWARE_QTOPIA_LIBADD)
+
+endif
 endif
 
 EXTRA_DIST = evas_engine.h
index be32590..83eadfb 100644 (file)
@@ -263,7 +263,7 @@ eng_output_idle_flush(void *data)
 }
 
 /* module advertising code */
-EAPI int
+static int
 module_open(Evas_Module *em)
 {
    if (!em) return 0;
@@ -291,15 +291,24 @@ module_open(Evas_Module *em)
    return 1;
 }
 
-EAPI void
-module_close(void)
+static void
+module_close(Evas_Module *em)
 {
 }
 
-EAPI Evas_Module_Api evas_modapi =
+static Evas_Module_Api evas_modapi =
 {
    EVAS_MODULE_API_VERSION,
-     EVAS_MODULE_TYPE_ENGINE,
-     "software_qtopia",
-     "none"
+   "software_qtopia",
+   "none",
+   {
+     module_open,
+     module_close
+   }
 };
+
+EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_ENGINE, engine, software_qtopia);
+
+#ifndef EVAS_STATIC_BUILD_SOFTWARE_QTOPIA
+EVAS_EINA_MODULE_DEFINE(engine, software_qtopia);
+#endif
index 1962683..1981472 100644 (file)
@@ -14,18 +14,30 @@ AM_CFLAGS = @WIN32_CFLAGS@
 
 if BUILD_ENGINE_SOFTWARE_SDL
 
+SOFTWARE_SDL_SOURCES = evas_engine.c
+SOFTWARE_SDL_LIBADD = @evas_engine_software_sdl_libs@
+
 pkgdir = $(libdir)/evas/modules/engines/software_sdl/$(MODULE_ARCH)
 
-pkg_LTLIBRARIES = module.la
+include_HEADERS = Evas_Engine_SDL.h
 
-module_la_SOURCES  = evas_engine.c
+if !EVAS_STATIC_BUILD_SOFTWARE_SDL
+
+pkg_LTLIBRARIES = module.la
 
-module_la_LIBADD = $(top_builddir)/src/lib/libevas.la @EINA_LIBS@ @evas_engine_software_sdl_libs@
+module_la_SOURCES  = $(SOFTWARE_SDL_SOURCES)
+module_la_LIBADD = $(top_builddir)/src/lib/libevas.la @EINA_LIBS@ $(SOFTWARE_SDL_LIBADD)
 module_la_LDFLAGS = -no-undefined -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
 
-include_HEADERS = Evas_Engine_SDL.h
+else
+
+noinst_LTLIBRARIES = libevas_engine_software_sdl.la
 
+libevas_engine_software_sdl_la_SOURCES = $(SOFTWARE_SDL_SOURCES)
+libevas_engine_software_sdl_la_LIBADD = $(SOFTWARE_SDL_LIBADD)
+
+endif
 endif
 
 EXTRA_DIST = evas_engine.h
index 13c7f5d..5d542ba 100644 (file)
@@ -817,7 +817,7 @@ evas_engine_sdl_gradient_draw(void *data __UNUSED__, void *context, void *surfac
      SDL_UnlockSurface(eim->surface);
 }
 
-EAPI int module_open(Evas_Module *em)
+static int module_open(Evas_Module *em)
 {
    if (!em) return 0;
    /* get whatever engine module we inherit from */
@@ -876,19 +876,28 @@ EAPI int module_open(Evas_Module *em)
    return 1;
 }
 
-EAPI void module_close(void)
+static void module_close(Evas_Module *em)
 {
 
 }
 
-EAPI Evas_Module_Api evas_modapi =
+static Evas_Module_Api evas_modapi =
 {
-   EVAS_MODULE_API_VERSION,
-   EVAS_MODULE_TYPE_ENGINE,
-   "software_sdl",
-   "none"
+  EVAS_MODULE_API_VERSION,
+  "software_sdl",
+  "none",
+  {
+    module_open,
+    module_close
+  }
 };
 
+EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_ENGINE, engine, software_sdl);
+
+#ifndef EVAS_STATIC_BUILD_SOFTWARE_SDL
+EVAS_EINA_MODULE_DEFINE(engine, software_sdl);
+#endif
+
 /* Private routines. */
 
 static void*
index 76a93c4..3730b42 100644 (file)
@@ -13,20 +13,18 @@ AM_CPPFLAGS = \
 
 if BUILD_ENGINE_SOFTWARE_X11
 
-pkgdir = $(libdir)/evas/modules/engines/software_x11/$(MODULE_ARCH)
-
-pkg_LTLIBRARIES        = module.la
-
-module_la_SOURCES = \
+SOFTWARE_X11_SOURCES = \
 evas_engine.c \
 evas_xlib_outbuf.c \
 evas_xlib_buffer.c \
 evas_xlib_color.c \
 evas_xlib_main.c
 
+SOFTWARE_X11_LIBADD = @evas_engine_software_x11_libs@ @evas_engine_software_xcb_libs@
+
 if BUILD_ENGINE_SOFTWARE_XCB
 
-module_la_SOURCES += \
+SOFTWARE_X11_SOURCES +=\
 evas_xcb_outbuf.c \
 evas_xcb_buffer.c \
 evas_xcb_color.c \
@@ -34,12 +32,27 @@ evas_xcb_main.c
 
 endif
 
-module_la_LIBADD = $(top_builddir)/src/lib/libevas.la @EINA_LIBS@ @evas_engine_software_x11_libs@ @evas_engine_software_xcb_libs@
+pkgdir = $(libdir)/evas/modules/engines/software_x11/$(MODULE_ARCH)
+
+include_HEADERS = Evas_Engine_Software_X11.h
+
+if !EVAS_STATIC_BUILD_SOFTWARE_X11
+
+pkg_LTLIBRARIES        = module.la
+
+module_la_SOURCES = $(SOFTWARE_X11_SOURCES)
+module_la_LIBADD = $(top_builddir)/src/lib/libevas.la @EINA_LIBS@ $(SOFTWARE_X11_LIBADD)
 module_la_LDFLAGS = -no-undefined -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
 
-include_HEADERS = Evas_Engine_Software_X11.h
+else
+
+noinst_LTLIBRARIES = libevas_engine_software_x11.la
 
+libevas_engine_software_x11_la_SOURCES = $(SOFTWARE_X11_SOURCES)
+libevas_engine_software_x11_la_LIBADD = $(SOFTWARE_X11_LIBADD)
+
+endif
 endif
 
 EXTRA_DIST = \
index f480b68..03d5d66 100644 (file)
@@ -613,7 +613,7 @@ eng_output_idle_flush(void *data)
 
 
 /* module advertising code */
-EAPI int
+static int
 module_open(Evas_Module *em)
 {
    if (!em) return 0;
@@ -641,15 +641,25 @@ module_open(Evas_Module *em)
    return 1;
 }
 
-EAPI void
-module_close(void)
+static void
+module_close(Evas_Module *em)
 {
 }
 
-EAPI Evas_Module_Api evas_modapi =
+static Evas_Module_Api evas_modapi =
 {
    EVAS_MODULE_API_VERSION,
-     EVAS_MODULE_TYPE_ENGINE,
-     "software_x11",
-     "none"
+   "software_x11",
+   "none",
+   {
+     module_open,
+     module_close
+   }
 };
+
+EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_ENGINE, engine, software_x11);
+
+#ifndef EVAS_STATIC_BUILD_SOFTWARE_X11
+EVAS_EINA_MODULE_DEFINE(engine, software_x11);
+#endif
+
index 9074018..83d1a77 100644 (file)
@@ -13,11 +13,7 @@ AM_CPPFLAGS = \
 
 if BUILD_ENGINE_XRENDER_X11
 
-pkgdir = $(libdir)/evas/modules/engines/xrender_x11/$(MODULE_ARCH)
-
-pkg_LTLIBRARIES        = module.la
-
-module_la_SOURCES = \
+XRENDER_X11_SOURCES = \
 evas_engine_xlib_font.c \
 evas_engine_xlib_gradient.c \
 evas_engine_xlib_image.c \
@@ -26,20 +22,39 @@ evas_engine_xlib_ximage.c \
 evas_engine.c
 
 if BUILD_ENGINE_XRENDER_XCB
-module_la_SOURCES += \
+
+XRENDER_X11_SOURCES += \
 evas_engine_xcb_font.c \
 evas_engine_xcb_gradient.c \
 evas_engine_xcb_image.c \
 evas_engine_xcb_render.c \
 evas_engine_xcb_ximage.c
+
 endif
 
-module_la_LIBADD = $(top_builddir)/src/lib/libevas.la @EINA_LIBS@ @evas_engine_xrender_xcb_libs@ @evas_engine_xrender_x11_libs@
+XRENDER_X11_LIBADD = @evas_engine_xrender_xcb_libs@ @evas_engine_xrender_x11_libs@
+
+pkgdir = $(libdir)/evas/modules/engines/xrender_x11/$(MODULE_ARCH)
+
+include_HEADERS = Evas_Engine_XRender_X11.h
+
+if !EVAS_STATIC_BUILD_XRENDER_X11
+
+pkg_LTLIBRARIES        = module.la
+
+module_la_SOURCES = $(XRENDER_X11_SOURCES)
+module_la_LIBADD = $(top_builddir)/src/lib/libevas.la @EINA_LIBS@ $(XRENDER_X11_LIBADD)
 module_la_LDFLAGS = -no-undefined -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
 
-include_HEADERS = Evas_Engine_XRender_X11.h
+else
+
+noinst_LTLIBRARIES = libevas_engine_xrender_x11.la
 
+libevas_engine_xrender_x11_la_SOURCES = $(XRENDER_X11_SOURCES)
+libevas_engine_xrender_x11_la_LIBADD = $(XRENDER_X11_LIBADD)
+
+endif
 endif
 
 EXTRA_DIST = evas_engine.h
index 1673685..2d17ff3 100644 (file)
@@ -1398,12 +1398,13 @@ eng_font_draw(void *data, void *context, void *surface, void *font, int x, int y
 }
 
 /* module advertising code */
-EAPI int
+static int
 module_open(Evas_Module *em)
 {
    if (!em) return 0;
    /* get whatever engine module we inherit from */
    if (!_evas_module_engine_inherit(&pfunc, "software_generic")) return 0;
+   
    /* store it for later use */
    func = pfunc;
    /* now to override methods */
@@ -1500,15 +1501,24 @@ module_open(Evas_Module *em)
    return 1;
 }
 
-EAPI void
-module_close(void)
+static void
+module_close(Evas_Module *em)
 {
 }
 
-EAPI Evas_Module_Api evas_modapi =
+static Evas_Module_Api evas_modapi =
 {
    EVAS_MODULE_API_VERSION,
-     EVAS_MODULE_TYPE_ENGINE,
-     "xrender_x11",
-     "none"
+   "xrender_x11",
+   "none",
+   {
+     module_open,
+     module_close
+   }
 };
+
+EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_ENGINE, engine, xrender_x11);
+
+#ifndef EVAS_STATIC_BUILD_XRENDER_X11
+EVAS_EINA_MODULE_DEFINE(engine, xrender_x11);
+#endif
index e505efd..028d8d4 100644 (file)
@@ -1,40 +1,58 @@
 MAINTAINERCLEANFILES = Makefile.in
 
 if BUILD_LOADER_EDB
+if !EVAS_STATIC_BUILD_EDB
 edb_subdir = edb
 endif
+endif
 
 if BUILD_LOADER_EET
+if !EVAS_STATIC_BUILD_EET
 eet_subdir = eet
 endif
+endif
 
 if BUILD_LOADER_GIF
+if !EVAS_STATIC_BUILD_GIF
 gif_subdir = gif
 endif
+endif
 
 if BUILD_LOADER_JPEG
+if !EVAS_STATIC_BUILD_JPEG
 jpeg_subdir = jpeg
 endif
+endif
 
 if BUILD_LOADER_PMAPS
+if !EVAS_STATIC_BUILD_PMAPS
 pmaps_subdir = pmaps
 endif
+endif
 
 if BUILD_LOADER_PNG
+if !EVAS_STATIC_BUILD_PNG
 png_subdir = png
 endif
+endif
 
 if BUILD_LOADER_SVG
+if !EVAS_STATIC_BUILD_SVG
 svg_subdir = svg
 endif
+endif
 
 if BUILD_LOADER_TIFF
+if !EVAS_STATIC_BUILD_TIFF
 tiff_subdir = tiff
 endif
+endif
 
 if BUILD_LOADER_XPM
+if !EVAS_STATIC_BUILD_XPM
 xpm_subdir = xpm
 endif
+endif
 
 
 SUBDIRS = $(edb_subdir) $(eet_subdir) $(gif_subdir) $(jpeg_subdir) $(pmaps_subdir) $(png_subdir) $(svg_subdir) $(tiff_subdir) $(xpm_subdir)
index 44c9e7f..8559758 100644 (file)
@@ -11,6 +11,8 @@ AM_CPPFLAGS = \
 
 pkgdir                 = $(libdir)/evas/modules/loaders/edb/$(MODULE_ARCH)
 
+if !EVAS_STATIC_BUILD_EDB
+
 pkg_LTLIBRARIES        = module.la
 
 module_la_SOURCES      = evas_image_load_edb.c
@@ -18,3 +20,12 @@ module_la_SOURCES      = evas_image_load_edb.c
 module_la_LIBADD       = @evas_image_loader_edb_libs@ @EINA_LIBS@ $(top_builddir)/src/lib/libevas.la
 module_la_LDFLAGS      = -no-undefined -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
+
+else
+
+noinst_LTLIBRARIES = libevas_loader_edb.la
+
+libevas_loader_edb_la_SOURCES = evas_image_load_edb.c
+libevas_loader_edb_la_LIBADD = @evas_image_loader_edb_libs@
+
+endif
\ No newline at end of file
index 2b3ba05..c1c1f88 100644 (file)
@@ -8,17 +8,16 @@
 #define SWAP32(x) (x) = ((((x) & 0x000000ff ) << 24) | (((x) & 0x0000ff00 ) << 8) | (((x) & 0x00ff0000 ) >> 8) | (((x) & 0xff000000 ) >> 24))
 
 
-int evas_image_load_file_head_edb(Image_Entry *ie, const char *file, const char *key);
-int evas_image_load_file_data_edb(Image_Entry *ie, const char *file, const char *key);
+static int evas_image_load_file_head_edb(Image_Entry *ie, const char *file, const char *key);
+static int evas_image_load_file_data_edb(Image_Entry *ie, const char *file, const char *key);
 
-Evas_Image_Load_Func evas_image_load_edb_func =
+static Evas_Image_Load_Func evas_image_load_edb_func =
 {
   evas_image_load_file_head_edb,
   evas_image_load_file_data_edb
 };
 
-
-int
+static int
 evas_image_load_file_head_edb(Image_Entry *ie, const char *file, const char *key)
 {
    int                  w, h, alpha, compression, size;
@@ -80,7 +79,7 @@ evas_image_load_file_head_edb(Image_Entry *ie, const char *file, const char *key
    return 1;
 }
 
-int
+static int
 evas_image_load_file_data_edb(Image_Entry *ie, const char *file, const char *key)
 {
    int                  w, h, alpha, compression, size;
@@ -181,7 +180,7 @@ evas_image_load_file_data_edb(Image_Entry *ie, const char *file, const char *key
    return 1;
 }
 
-EAPI int
+static int
 module_open(Evas_Module *em)
 {
    if (!em) return 0;
@@ -189,16 +188,24 @@ module_open(Evas_Module *em)
    return 1;
 }
 
-EAPI void
-module_close(void)
+static void
+module_close(Evas_Module *em)
 {
-   
 }
 
-EAPI Evas_Module_Api evas_modapi =
+static Evas_Module_Api evas_modapi =
 {
    EVAS_MODULE_API_VERSION,
-     EVAS_MODULE_TYPE_IMAGE_LOADER,
-     "edb",
-     "none"
+   "edb",
+   "none",
+   {
+     module_open,
+     module_close
+   }
 };
+
+EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_IMAGE_LOADER, image_saver, edb);
+
+#ifndef EVAS_STATIC_BUILD_EDB
+EVAS_EINA_MODULE_DEFINE(image_saver, edb);
+#endif
index 4204e80..a796cc6 100644 (file)
@@ -13,6 +13,8 @@ AM_CFLAGS = @WIN32_CFLAGS@
 
 pkgdir = $(libdir)/evas/modules/loaders/eet/$(MODULE_ARCH)
 
+if !EVAS_STATIC_BUILD_EET
+
 pkg_LTLIBRARIES = module.la
 
 module_la_SOURCES = evas_image_load_eet.c
@@ -20,3 +22,12 @@ module_la_SOURCES = evas_image_load_eet.c
 module_la_LIBADD = @EINA_LIBS@ @evas_image_loader_eet_libs@ $(top_builddir)/src/lib/libevas.la
 module_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
+
+else
+
+noinst_LTLIBRARIES = libevas_loader_eet.la
+
+libevas_loader_eet_la_SOURCES = evas_image_load_eet.c
+libevas_loader_eet_la_LIBADD = @evas_image_loader_eet_libs@
+
+endif
\ No newline at end of file
index 0247bf7..9e7f84a 100644 (file)
@@ -98,7 +98,7 @@ evas_image_load_file_data_eet(Image_Entry *ie, const char *file, const char *key
    return res;
 }
 
-EAPI int
+static int
 module_open(Evas_Module *em)
 {
    if (!em) return 0;
@@ -106,16 +106,24 @@ module_open(Evas_Module *em)
    return 1;
 }
 
-EAPI void
-module_close(void)
+static void
+module_close(Evas_Module *em)
 {
-   
 }
 
-EAPI Evas_Module_Api evas_modapi =
+static Evas_Module_Api evas_modapi =
 {
    EVAS_MODULE_API_VERSION,
-     EVAS_MODULE_TYPE_IMAGE_LOADER,
-     "eet",
-     "none"
+   "eet",
+   "none",
+   {
+     module_open,
+     module_close
+   }
 };
+
+EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_IMAGE_LOADER, image_loader, eet);
+
+#ifndef EVAS_STATIC_BUILD_EET
+EVAS_EINA_MODULE_DEFINE(image_loader, eet);
+#endif
index 858ac3f..372096d 100644 (file)
@@ -13,6 +13,8 @@ AM_CFLAGS = @WIN32_CFLAGS@
 
 pkgdir = $(libdir)/evas/modules/loaders/gif/$(MODULE_ARCH)
 
+if !EVAS_STATIC_BUILD_GIF
+
 pkg_LTLIBRARIES = module.la
 
 module_la_SOURCES = evas_image_load_gif.c
@@ -20,3 +22,12 @@ module_la_SOURCES = evas_image_load_gif.c
 module_la_LIBADD = @EINA_LIBS@ @evas_image_loader_gif_libs@ $(top_builddir)/src/lib/libevas.la
 module_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
+
+else
+
+noinst_LTLIBRARIES = libevas_loader_gif.la
+
+libevas_loader_gif_la_SOURCES = evas_image_load_gif.c
+libevas_loader_gif_la_LIBADD = @evas_image_loader_gif_libs@
+
+endif
\ No newline at end of file
index 20cc43d..b5f347c 100644 (file)
@@ -7,18 +7,16 @@
 
 #include <gif_lib.h>
 
+static int evas_image_load_file_head_gif(Image_Entry *ie, const char *file, const char *key);
+static int evas_image_load_file_data_gif(Image_Entry *ie, const char *file, const char *key);
 
-int evas_image_load_file_head_gif(Image_Entry *ie, const char *file, const char *key);
-int evas_image_load_file_data_gif(Image_Entry *ie, const char *file, const char *key);
-
-Evas_Image_Load_Func evas_image_load_gif_func =
+static Evas_Image_Load_Func evas_image_load_gif_func =
 {
   evas_image_load_file_head_gif,
   evas_image_load_file_data_gif
 };
 
-
-int
+static int
 evas_image_load_file_head_gif(Image_Entry *ie, const char *file, const char *key __UNUSED__)
 {
    int                 fd;
@@ -101,7 +99,7 @@ evas_image_load_file_head_gif(Image_Entry *ie, const char *file, const char *key
    return 1;
 }
 
-int
+static int
 evas_image_load_file_data_gif(Image_Entry *ie, const char *file, const char *key __UNUSED__)
 {
    int                 intoffset[] = { 0, 4, 2, 1 };
@@ -284,7 +282,7 @@ evas_image_load_file_data_gif(Image_Entry *ie, const char *file, const char *key
    return 1;
 }
 
-EAPI int
+static int
 module_open(Evas_Module *em)
 {
    if (!em) return 0;
@@ -292,16 +290,24 @@ module_open(Evas_Module *em)
    return 1;
 }
 
-EAPI void
-module_close(void)
+static void
+module_close(Evas_Module *em)
 {
-   
 }
 
-EAPI Evas_Module_Api evas_modapi =
+static Evas_Module_Api evas_modapi =
 {
-   EVAS_MODULE_API_VERSION,
-     EVAS_MODULE_TYPE_IMAGE_LOADER,
-     "gif",
-     "none"
+  EVAS_MODULE_API_VERSION,
+  "gif",
+  "none",
+  {
+    module_open,
+    module_close
+  }
 };
+
+EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_IMAGE_LOADER, image_loader, gif);
+
+#ifndef EVAS_STATIC_BUILD_GIF
+EVAS_EINA_MODULE_DEFINE(image_loader, gif);
+#endif
index 4e7f71b..bea81f6 100644 (file)
@@ -15,6 +15,8 @@ AM_CFLAGS = @WIN32_CFLAGS@
 
 pkgdir = $(libdir)/evas/modules/loaders/jpeg/$(MODULE_ARCH)
 
+if !EVAS_STATIC_BUILD_JPEG
+
 pkg_LTLIBRARIES = module.la
 
 module_la_SOURCES = evas_image_load_jpeg.c
@@ -22,3 +24,11 @@ module_la_SOURCES = evas_image_load_jpeg.c
 module_la_LIBADD = @EINA_LIBS@ @EVIL_LIBS@ @evas_image_loader_jpeg_libs@ $(top_builddir)/src/lib/libevas.la
 module_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
+
+else
+
+noinst_LTLIBRARIES = libevas_loader_jpeg.la
+libevas_loader_jpeg_la_SOURCES = evas_image_load_jpeg.c
+libevas_loader_jpeg_la_LIBADD = @evas_image_loader_jpeg_libs@
+
+endif
\ No newline at end of file
index 450d0fa..dc0c536 100644 (file)
@@ -31,10 +31,10 @@ static int evas_image_load_file_data_jpeg_internal(Image_Entry *ie, FILE *f);
 static int evas_image_load_file_data_jpeg_alpha_internal(Image_Entry *ie, FILE *f);
 #endif
 
-int evas_image_load_file_head_jpeg(Image_Entry *ie, const char *file, const char *key);
-int evas_image_load_file_data_jpeg(Image_Entry *ie, const char *file, const char *key);
+static int evas_image_load_file_head_jpeg(Image_Entry *ie, const char *file, const char *key);
+static int evas_image_load_file_data_jpeg(Image_Entry *ie, const char *file, const char *key);
 
-Evas_Image_Load_Func evas_image_load_jpeg_func =
+static Evas_Image_Load_Func evas_image_load_jpeg_func =
 {
   evas_image_load_file_head_jpeg,
   evas_image_load_file_data_jpeg
@@ -251,7 +251,7 @@ evas_image_load_file_data_jpeg_internal(Image_Entry *ie, FILE *f)
 
    if (!(((cinfo.out_color_space == JCS_RGB) &&
           ((cinfo.output_components == 3) || (cinfo.output_components == 1))) ||
-         (cinfo.out_color_space == JCS_CMYK) && (cinfo.output_components == 4)))
+         ((cinfo.out_color_space == JCS_CMYK) && (cinfo.output_components == 4))))
      {
        jpeg_destroy_decompress(&cinfo);
        return 0;
@@ -473,7 +473,7 @@ evas_image_load_file_data_jpeg_alpha_internal(Image_Entry *ie, FILE *f)
 }
 #endif
 
-int
+static int
 evas_image_load_file_head_jpeg(Image_Entry *ie, const char *file, const char *key)
 {
    int val;
@@ -488,7 +488,7 @@ evas_image_load_file_head_jpeg(Image_Entry *ie, const char *file, const char *ke
    key = 0;
 }
 
-int
+static int
 evas_image_load_file_data_jpeg(Image_Entry *ie, const char *file, const char *key)
 {
    int val;
@@ -503,7 +503,7 @@ evas_image_load_file_data_jpeg(Image_Entry *ie, const char *file, const char *ke
    key = 0;
 }
 
-EAPI int
+static int
 module_open(Evas_Module *em)
 {
    if (!em) return 0;
@@ -511,16 +511,25 @@ module_open(Evas_Module *em)
    return 1;
 }
 
-EAPI void
-module_close(void)
+static void
+module_close(Evas_Module *em)
 {
-
 }
 
-EAPI Evas_Module_Api evas_modapi =
+static Evas_Module_Api evas_modapi =
 {
    EVAS_MODULE_API_VERSION,
-     EVAS_MODULE_TYPE_IMAGE_LOADER,
-     "jpeg",
-     "none"
+   "jpeg",
+   "none",
+   {
+     module_open,
+     module_close
+   }
 };
+
+EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_IMAGE_LOADER, image_loader, jpeg);
+
+#ifndef EVAS_STATIC_BUILD_JPEG
+EVAS_EINA_MODULE_DEFINE(image_loader, jpeg);
+#endif
+
index 794ec9e..a7e4d2a 100644 (file)
@@ -15,6 +15,8 @@ AM_CFLAGS = @WIN32_CFLAGS@
 
 pkgdir = $(libdir)/evas/modules/loaders/pmaps/$(MODULE_ARCH)
 
+if !EVAS_STATIC_BUILD_PMAPS
+
 pkg_LTLIBRARIES = module.la
 
 module_la_SOURCES = evas_image_load_pmaps.c
@@ -22,3 +24,11 @@ module_la_SOURCES = evas_image_load_pmaps.c
 module_la_LIBADD = @evas_image_loader_pmaps_libs@ @EINA_LIBS@ @EVIL_LIBS@ $(top_builddir)/src/lib/libevas.la
 module_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
+
+else
+
+noinst_LTLIBRARIES = libevas_loader_pmaps.la
+libevas_loader_pmaps_la_SOURCES = evas_image_load_pmaps.c
+libevas_loader_pmaps_la_LIBADD = @evas_image_loader_pmaps_libs@
+
+endif
index 92acce7..20f6f31 100644 (file)
@@ -539,7 +539,7 @@ pmaps_buffer_plain_bw_get(Pmaps_Buffer *b, DATA32 *val)
 }
 
 /* external functions */
-EAPI int
+static int
 module_open(Evas_Module *em)
 {
    if (!em)
@@ -548,16 +548,23 @@ module_open(Evas_Module *em)
    return 1;
 }
 
-EAPI void
-module_close(void)
+static void
+module_close(Evas_Module *em)
 {
-
 }
 
-EAPI Evas_Module_Api evas_modapi = {
+static Evas_Module_Api evas_modapi = {
    EVAS_MODULE_API_VERSION,
-   EVAS_MODULE_TYPE_IMAGE_LOADER,
    "pmaps",
-   "none"
+   "none",
+   {
+     module_open,
+     module_close
+   }
 };
 
+EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_IMAGE_LOADER, image_loader, pmaps);
+
+#ifndef EVAS_STATIC_BUILD_PMAPS
+EVAS_EINA_MODULE_DEFINE(image_loader, pmaps);
+#endif
index ccf52e3..68630ca 100644 (file)
@@ -13,6 +13,8 @@ AM_CPPFLAGS = \
 
 pkgdir = $(libdir)/evas/modules/loaders/png/$(MODULE_ARCH)
 
+if !EVAS_STATIC_BUILD_PNG
+
 pkg_LTLIBRARIES = module.la
 
 module_la_SOURCES = evas_image_load_png.c
@@ -20,3 +22,11 @@ module_la_SOURCES = evas_image_load_png.c
 module_la_LIBADD = @EINA_LIBS@ @evas_image_loader_png_libs@ @EVIL_LIBS@ $(top_builddir)/src/lib/libevas.la
 module_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
+
+else
+
+noinst_LTLIBRARIES = libevas_loader_png.la
+libevas_loader_png_la_SOURCES = evas_image_load_png.c
+libevas_loader_png_la_LIBADD = @evas_image_loader_png_libs@
+
+endif
index 1289e56..c05a728 100644 (file)
 #define PNG_BYTES_TO_CHECK 4
 
 
-int evas_image_load_file_head_png(Image_Entry *ie, const char *file, const char *key);
-int evas_image_load_file_data_png(Image_Entry *ie, const char *file, const char *key);
+static int evas_image_load_file_head_png(Image_Entry *ie, const char *file, const char *key);
+static int evas_image_load_file_data_png(Image_Entry *ie, const char *file, const char *key);
 
-Evas_Image_Load_Func evas_image_load_png_func =
+static Evas_Image_Load_Func evas_image_load_png_func =
 {
   evas_image_load_file_head_png,
   evas_image_load_file_data_png
 };
 
-
-int
+static int
 evas_image_load_file_head_png(Image_Entry *ie, const char *file, const char *key)
 {
    png_uint_32 w32, h32;
@@ -108,7 +107,7 @@ evas_image_load_file_head_png(Image_Entry *ie, const char *file, const char *key
    key = 0;
 }
 
-int
+static int
 evas_image_load_file_data_png(Image_Entry *ie, const char *file, const char *key)
 {
    unsigned char *surface;
@@ -217,7 +216,7 @@ evas_image_load_file_data_png(Image_Entry *ie, const char *file, const char *key
    key = 0;
 }
 
-EAPI int
+static int
 module_open(Evas_Module *em)
 {
    if (!em) return 0;
@@ -225,16 +224,24 @@ module_open(Evas_Module *em)
    return 1;
 }
 
-EAPI void
-module_close(void)
+static void
+module_close(Evas_Module *em)
 {
-
 }
 
-EAPI Evas_Module_Api evas_modapi =
+static Evas_Module_Api evas_modapi =
 {
    EVAS_MODULE_API_VERSION,
-     EVAS_MODULE_TYPE_IMAGE_LOADER,
-     "png",
-     "none"
+   "png",
+   "none",
+   {
+     module_open,
+     module_close
+   }
 };
+
+EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_IMAGE_LOADER, image_loader, png);
+
+#ifndef EVAS_STATIC_BUILD_PNG
+EVAS_EINA_MODULE_DEFINE(image_loader, png);
+#endif
index 38c0273..5921e10 100644 (file)
@@ -13,6 +13,8 @@ AM_CFLAGS = @WIN32_CFLAGS@
 
 pkgdir = $(libdir)/evas/modules/loaders/svg/$(MODULE_ARCH)
 
+if !EVAS_STATIC_BUILD_SVG
+
 pkg_LTLIBRARIES = module.la
 
 module_la_SOURCES = evas_image_load_svg.c
@@ -20,3 +22,11 @@ module_la_SOURCES = evas_image_load_svg.c
 module_la_LIBADD = @EINA_LIBS@ @evas_image_loader_svg_libs@ $(top_builddir)/src/lib/libevas.la
 module_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
+
+else
+
+noinst_LTLIBRARIES = libevas_loader_svg.la
+libevas_loader_svg_la_SOURCES = evas_image_load_svg.c
+libevas_loader_svg_la_LIBADD = @evas_image_loader_svg_libs@
+
+endif
index 2431e10..c439f2c 100644 (file)
@@ -4,8 +4,8 @@
 #include <librsvg/rsvg.h>
 #include <librsvg/rsvg-cairo.h>
 
-int evas_image_load_file_head_svg(Image_Entry *ie, const char *file, const char *key);
-int evas_image_load_file_data_svg(Image_Entry *ie, const char *file, const char *key);
+static int evas_image_load_file_head_svg(Image_Entry *ie, const char *file, const char *key);
+static int evas_image_load_file_data_svg(Image_Entry *ie, const char *file, const char *key);
 
 Evas_Image_Load_Func evas_image_load_svg_func =
 {
@@ -35,7 +35,7 @@ svg_loader_unpremul_data(DATA32 *data, unsigned int len)
      }
 }
 
-int
+static int
 evas_image_load_file_head_svg(Image_Entry *ie, const char *file, const char *key __UNUSED__)
 {
    char               cwd[PATH_MAX], pcwd[PATH_MAX], *p;
@@ -131,7 +131,7 @@ evas_image_load_file_head_svg(Image_Entry *ie, const char *file, const char *key
 }
 
 /** FIXME: All evas loaders need to be tightened up **/
-int
+static int
 evas_image_load_file_data_svg(Image_Entry *ie, const char *file, const char *key __UNUSED__)
 {
    DATA32             *pixels;
@@ -268,7 +268,7 @@ evas_image_load_file_data_svg(Image_Entry *ie, const char *file, const char *key
    return 1;
 }
 
-EAPI int
+static int
 module_open(Evas_Module *em)
 {
    if (!em) return 0;
@@ -278,19 +278,27 @@ module_open(Evas_Module *em)
    return 1;
 }
 
-EAPI void
-module_close(void)
+static void
+module_close(Evas_Module *em)
 {
    if (!rsvg_initialized) return;
    rsvg_term();
    rsvg_initialized = 0;
 }
 
-EAPI Evas_Module_Api evas_modapi =
+static Evas_Module_Api evas_modapi =
 {
    EVAS_MODULE_API_VERSION,
-     EVAS_MODULE_TYPE_IMAGE_LOADER,
-     "svg",
-     "none"
+   "svg",
+   "none",
+   {
+     module_open,
+     module_close
+   }
 };
 
+EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_IMAGE_LOADER, image_loader, svg);
+
+#ifndef EVAS_STATIC_BUILD_SVG
+EVAS_EINA_MODULE_DEFINE(image_loader, svg);
+#endif
index bab7f81..3b8e169 100644 (file)
@@ -15,6 +15,8 @@ AM_CFLAGS = @WIN32_CFLAGS@
 
 pkgdir = $(libdir)/evas/modules/loaders/tiff/$(MODULE_ARCH)
 
+if !EVAS_STATIC_BUILD_TIFF
+
 pkg_LTLIBRARIES = module.la
 
 module_la_SOURCES = evas_image_load_tiff.c
@@ -22,3 +24,12 @@ module_la_SOURCES = evas_image_load_tiff.c
 module_la_LIBADD = @EINA_LIBS@ @EVIL_LIBS@ @evas_image_loader_tiff_libs@ $(top_builddir)/src/lib/libevas.la
 module_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
+
+else
+
+noinst_LTLIBRARIES = libevas_loader_tiff.la
+
+libevas_loader_tiff_la_SOURCES = evas_image_load_tiff.c
+libevas_loader_tiff_la_LIBADD = @evas_image_loader_tiff_libs@
+
+endif
\ No newline at end of file
index e213704..703ed93 100644 (file)
 #include "evas_common.h"
 #include "evas_private.h"
 
+static int evas_image_load_file_head_tiff(Image_Entry *ie, const char *file, const char *key);
+static int evas_image_load_file_data_tiff(Image_Entry *ie, const char *file, const char *key);
 
-int evas_image_load_file_head_tiff(Image_Entry *ie, const char *file, const char *key);
-int evas_image_load_file_data_tiff(Image_Entry *ie, const char *file, const char *key);
-
-Evas_Image_Load_Func evas_image_load_tiff_func =
+static Evas_Image_Load_Func evas_image_load_tiff_func =
 {
   evas_image_load_file_head_tiff,
   evas_image_load_file_data_tiff
@@ -118,7 +117,7 @@ raster(TIFFRGBAImage_Extra * img, uint32 * rast,
      }
 }
 
-int
+static int
 evas_image_load_file_head_tiff(Image_Entry *ie, const char *file, const char *key __UNUSED__)
 {
    char                txt[1024];
@@ -188,7 +187,7 @@ evas_image_load_file_head_tiff(Image_Entry *ie, const char *file, const char *ke
    return 1;
 }
 
-int
+static int
 evas_image_load_file_data_tiff(Image_Entry *ie, const char *file, const char *key __UNUSED__)
 {
    char                txt[1024];
@@ -325,7 +324,7 @@ evas_image_load_file_data_tiff(Image_Entry *ie, const char *file, const char *ke
    return 1;
 }
 
-EAPI int
+static int
 module_open(Evas_Module *em)
 {
    if (!em) return 0;
@@ -333,16 +332,25 @@ module_open(Evas_Module *em)
    return 1;
 }
 
-EAPI void
-module_close(void)
+static void
+module_close(Evas_Module *em)
 {
 
 }
 
-EAPI Evas_Module_Api evas_modapi =
+static Evas_Module_Api evas_modapi =
 {
    EVAS_MODULE_API_VERSION,
-     EVAS_MODULE_TYPE_IMAGE_LOADER,
-     "tiff",
-     "none"
+   "tiff",
+   "none",
+   {
+     module_open,
+     module_close
+   }
 };
+
+EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_IMAGE_LOADER, image_loader, tiff);
+
+#ifndef EVAS_STATIC_BUILD_TIFF
+EVAS_EINA_MODULE_DEFINE(image_loader, tiff);
+#endif
index 93505a0..cfd475a 100644 (file)
@@ -15,6 +15,8 @@ AM_CFLAGS = @WIN32_CFLAGS@
 
 pkgdir = $(libdir)/evas/modules/loaders/xpm/$(MODULE_ARCH)
 
+if !EVAS_STATIC_BUILD_XPM
+
 pkg_LTLIBRARIES = module.la
 
 module_la_SOURCES = evas_image_load_xpm.c
@@ -22,3 +24,13 @@ module_la_SOURCES = evas_image_load_xpm.c
 module_la_LIBADD = @EINA_LIBS@ @EVIL_LIBS@ @evas_image_loader_xpm_libs@ $(top_builddir)/src/lib/libevas.la
 module_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
+
+else
+
+noinst_LTLIBRARIES = libevas_loader_xpm.la
+
+libevas_loader_xpm_la_SOURCES = evas_image_load_xpm.c
+libevas_loader_xpm_la_LIBADD = @evas_image_loader_xpm_libs@
+
+endif
+
index 15ac543..095fe1b 100644 (file)
 #include "evas_common.h"
 #include "evas_private.h"
 
-int evas_image_load_file_head_xpm(Image_Entry *ie, const char *file, const char *key);
-int evas_image_load_file_data_xpm(Image_Entry *ie, const char *file, const char *key);
+static int evas_image_load_file_head_xpm(Image_Entry *ie, const char *file, const char *key);
+static int evas_image_load_file_data_xpm(Image_Entry *ie, const char *file, const char *key);
 
-Evas_Image_Load_Func evas_image_load_xpm_func =
+static Evas_Image_Load_Func evas_image_load_xpm_func =
 {
   evas_image_load_file_head_xpm,
   evas_image_load_file_data_xpm
 };
 
-
 static FILE *rgb_txt = NULL;
 
 static void
@@ -617,22 +616,19 @@ evas_image_load_file_xpm(Image_Entry *ie, const char *file, const char *key __UN
    return 1;
 }
 
-
-int
+static int
 evas_image_load_file_head_xpm(Image_Entry *ie, const char *file, const char *key)
 {
   return evas_image_load_file_xpm(ie, file, key, 0);
 }
 
-int
+static int
 evas_image_load_file_data_xpm(Image_Entry *ie, const char *file, const char *key)
 {
   return evas_image_load_file_xpm(ie, file, key, 1);
 }
 
-
-
-EAPI int
+static int
 module_open(Evas_Module *em)
 {
    if (!em) return 0;
@@ -640,16 +636,24 @@ module_open(Evas_Module *em)
    return 1;
 }
 
-EAPI void
-module_close(void)
+static void
+module_close(Evas_Module *em)
 {
-
 }
 
-EAPI Evas_Module_Api evas_modapi =
+static Evas_Module_Api evas_modapi =
 {
    EVAS_MODULE_API_VERSION,
-     EVAS_MODULE_TYPE_IMAGE_LOADER,
-     "xpm",
-     "none"
+   "xpm",
+   "none",
+   {
+     module_open,
+     module_close
+   }
 };
+
+EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_IMAGE_LOADER, image_loader, xpm);
+
+#ifndef EVAS_STATIC_BUILD_XPM
+EVAS_EINA_MODULE_DEFINE(image_loader, xpm);
+#endif
index f1fdb88..f6da612 100644 (file)
@@ -1,23 +1,33 @@
 MAINTAINERCLEANFILES = Makefile.in
 
 if BUILD_LOADER_EDB
+if !EVAS_STATIC_BUILD_EDB
 edb_subdir = edb
 endif
+endif
 
 if BUILD_LOADER_EET
+if !EVAS_STATIC_BUILD_EET
 eet_subdir = eet
 endif
+endif
 
 if BUILD_SAVER_JPEG
+if !EVAS_STATIC_BUILD_JPEG
 jpeg_subdir = jpeg
 endif
+endif
 
 if BUILD_LOADER_PNG
+if !EVAS_STATIC_BUILD_PNG
 png_subdir = png
 endif
+endif
 
 if BUILD_LOADER_TIFF
+if !EVAS_STATIC_BUILD_TIFF
 tiff_subdir = tiff
 endif
+endif
 
 SUBDIRS = $(edb_subdir) $(eet_subdir) $(jpeg_subdir) $(png_subdir) $(tiff_subdir)
index ffe1ffb..8ada6b1 100644 (file)
@@ -9,6 +9,8 @@ AM_CPPFLAGS            = -I. \
 
 pkgdir                 = $(libdir)/evas/modules/savers/edb/$(MODULE_ARCH)
 
+if !EVAS_STATIC_BUILD_EDB
+
 pkg_LTLIBRARIES        = module.la
 
 module_la_SOURCES      = evas_image_save_edb.c
@@ -17,4 +19,13 @@ module_la_LIBADD       = @EINA_LIBS@ @evas_image_loader_edb_libs@ $(top_builddir
 module_la_LDFLAGS      = -no-undefined -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
 
+else
+
+noinst_LTLIBRARIES = libevas_saver_edb.la
+
+libevas_saver_edb_la_SOURCES = evas_image_save_edb.c
+libevas_saver_edb_la_LIBADD = @evas_image_loader_edb_libs@
+
+endif
+
 EXTRA_DIST             = evas_image_save_edb.c
index d2e8c9a..8279226 100644 (file)
@@ -4,20 +4,20 @@
 #include <Edb.h>
 #include <zlib.h>
 
-int evas_image_save_file_edb(RGBA_Image *im, const char *file, const char *key, int quality, int compress);
+static int evas_image_save_file_edb(RGBA_Image *im, const char *file, const char *key, int quality, int compress);
 
-Evas_Image_Save_Func evas_image_save_edb_func =
+static Evas_Image_Save_Func evas_image_save_edb_func =
 {
    evas_image_save_file_edb
 };
 
-int
+static int
 evas_image_save_file_edb(RGBA_Image *im, const char *file, const char *key, int quality, int compress)
 {
    return 0;
 }
 
-EAPI int
+static int
 module_open(Evas_Module *em)
 {
    if (!em) return 0;
@@ -25,16 +25,24 @@ module_open(Evas_Module *em)
    return 1;
 }
 
-EAPI void
-module_close(void)
+static void
+module_close(Evas_Module *em)
 {
-   
 }
 
-EAPI Evas_Module_Api evas_modapi =
+static Evas_Module_Api evas_modapi =
 {
    EVAS_MODULE_API_VERSION,
-     EVAS_MODULE_TYPE_IMAGE_SAVER,
-     "edb",
-     "none"
+   "edb",
+   "none",
+   {
+     module_open,
+     module_close
+   }
 };
+
+EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_IMAGE_SAVER, image_saver, edb);
+
+#ifndef EVAS_STATIC_BUILD_EDB
+EVAS_EINA_MODULE_DEFINE(image_saver, edb);
+#endif
index 3f6ee4a..7f47bb1 100644 (file)
@@ -13,6 +13,8 @@ AM_CFLAGS = @WIN32_CFLAGS@
 
 pkgdir = $(libdir)/evas/modules/savers/eet/$(MODULE_ARCH)
 
+if !EVAS_STATIC_BUILD_EET
+
 pkg_LTLIBRARIES = module.la
 
 module_la_SOURCES = evas_image_save_eet.c
@@ -20,3 +22,12 @@ module_la_SOURCES = evas_image_save_eet.c
 module_la_LIBADD = @EINA_LIBS@ @evas_image_loader_eet_libs@ $(top_builddir)/src/lib/libevas.la
 module_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
+
+else
+
+noinst_LTLIBRARIES = libevas_saver_eet.la
+
+libevas_saver_eet_la_SOURCES = evas_image_save_eet.c
+libevas_saver_eet_la_LIBADD = @evas_image_loader_eet_libs@
+
+endif
\ No newline at end of file
index 5c672b1..cbb346e 100644 (file)
@@ -7,14 +7,14 @@
 #include "evas_common.h"
 #include "evas_private.h"
 
-int evas_image_save_file_eet(RGBA_Image *im, const char *file, const char *key, int quality, int compress);
+static int evas_image_save_file_eet(RGBA_Image *im, const char *file, const char *key, int quality, int compress);
 
-Evas_Image_Save_Func evas_image_save_eet_func =
+static Evas_Image_Save_Func evas_image_save_eet_func =
 {
    evas_image_save_file_eet
 };
 
-int
+static int
 evas_image_save_file_eet(RGBA_Image *im, const char *file, const char *key, int quality, int compress)
 {
    Eet_File            *ef;
@@ -51,7 +51,7 @@ evas_image_save_file_eet(RGBA_Image *im, const char *file, const char *key, int
    return ok;
 }
 
-EAPI int
+static int
 module_open(Evas_Module *em)
 {
    if (!em) return 0;
@@ -59,16 +59,25 @@ module_open(Evas_Module *em)
    return 1;
 }
 
-EAPI void
-module_close(void)
+static void
+module_close(Evas_Module *em)
 {
-   
 }
 
-EAPI Evas_Module_Api evas_modapi =
+static Evas_Module_Api evas_modapi =
 {
    EVAS_MODULE_API_VERSION,
-     EVAS_MODULE_TYPE_IMAGE_SAVER,
-     "eet",
-     "none"
+   "eet",
+   "none",
+   {
+     module_open,
+     module_close
+   }
 };
+
+EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_IMAGE_SAVER, image_saver, eet);
+
+#ifndef EVAS_STATIC_BUILD_EET
+EVAS_EINA_MODULE_DEFINE(image_saver, eet);
+#endif
+
index 5900f1d..062fe84 100644 (file)
@@ -13,6 +13,8 @@ AM_CFLAGS = @WIN32_CFLAGS@
 
 pkgdir = $(libdir)/evas/modules/savers/jpeg/$(MODULE_ARCH)
 
+if !EVAS_STATIC_BUILD_JPEG
+
 pkg_LTLIBRARIES = module.la
 
 module_la_SOURCES = evas_image_save_jpeg.c
@@ -20,3 +22,11 @@ module_la_SOURCES = evas_image_save_jpeg.c
 module_la_LIBADD = @EINA_LIBS@ @evas_image_loader_jpeg_libs@ $(top_builddir)/src/lib/libevas.la
 module_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
+
+else
+
+noinst_LTLIBRARIES = libevas_saver_jpeg.la
+libevas_saver_jpeg_la_SOURCES = evas_image_save_jpeg.c
+libevas_saver_jpeg_la_LIBADD = @evas_image_loader_jpeg_libs@
+
+endif
index 209a6aa..fc11ccc 100644 (file)
@@ -5,9 +5,9 @@
 #include <jpeglib.h>
 #include <setjmp.h>
 
-int evas_image_save_file_jpeg(RGBA_Image *im, const char *file, const char *key, int quality, int compress);
+static int evas_image_save_file_jpeg(RGBA_Image *im, const char *file, const char *key, int quality, int compress);
 
-Evas_Image_Save_Func evas_image_save_jpeg_func =
+static Evas_Image_Save_Func evas_image_save_jpeg_func =
 {
    evas_image_save_file_jpeg
 };
@@ -111,12 +111,12 @@ save_image_jpeg(RGBA_Image *im, const char *file, int quality)
    return 1;
 }
 
-int evas_image_save_file_jpeg(RGBA_Image *im, const char *file, const char *key __UNUSED__, int quality, int compress __UNUSED__)
+static int evas_image_save_file_jpeg(RGBA_Image *im, const char *file, const char *key __UNUSED__, int quality, int compress __UNUSED__)
 {
    return save_image_jpeg(im, file, quality);
 }
 
-EAPI int
+static int
 module_open(Evas_Module *em)
 {
    if (!em) return 0;
@@ -124,16 +124,25 @@ module_open(Evas_Module *em)
    return 1;
 }
 
-EAPI void
-module_close(void)
+static void
+module_close(Evas_Module *em)
 {
-   
 }
 
-EAPI Evas_Module_Api evas_modapi =
+static Evas_Module_Api evas_modapi =
 {
    EVAS_MODULE_API_VERSION,
-     EVAS_MODULE_TYPE_IMAGE_SAVER,
-     "jpeg",
-     "none"
+   "jpeg",
+   "none",
+   {
+     module_open,
+     module_close
+   }
 };
+
+EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_IMAGE_SAVER, image_saver, jpeg);
+
+#ifndef EVAS_STATIC_BUILD_JPEG
+EVAS_EINA_MODULE_DEFINE(image_saver, jpeg);
+#endif
+
index b8c14c7..9e3338c 100644 (file)
@@ -15,6 +15,8 @@ AM_CFLAGS = @WIN32_CFLAGS@
 
 pkgdir = $(libdir)/evas/modules/savers/png/$(MODULE_ARCH)
 
+if !EVAS_STATIC_BUILD_PNG
+
 pkg_LTLIBRARIES = module.la
 
 module_la_SOURCES = evas_image_save_png.c
@@ -22,3 +24,12 @@ module_la_SOURCES = evas_image_save_png.c
 module_la_LIBADD = @EINA_LIBS@ @evas_image_loader_png_libs@ @EVIL_LIBS@ $(top_builddir)/src/lib/libevas.la
 module_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
+
+else
+
+noinst_LTLIBRARIES = libevas_saver_png.la
+
+libevas_saver_png_la_SOURCES = evas_image_save_png.c
+libevas_saver_png_la_LIBADD = @evas_image_loader_png_libs@
+
+endif
index 0278f32..40b6cd6 100644 (file)
@@ -26,9 +26,9 @@
 #include "evas_common.h"
 #include "evas_private.h"
 
-int evas_image_save_file_png(RGBA_Image *im, const char *file, const char *key, int quality, int compress);
+static int evas_image_save_file_png(RGBA_Image *im, const char *file, const char *key, int quality, int compress);
 
-Evas_Image_Save_Func evas_image_save_png_func =
+static Evas_Image_Save_Func evas_image_save_png_func =
 {
    evas_image_save_file_png
 };
@@ -153,12 +153,12 @@ save_image_png(RGBA_Image *im, const char *file, int compress, int interlace)
    return 0;
 }
 
-int evas_image_save_file_png(RGBA_Image *im, const char *file, const char *key __UNUSED__, int quality __UNUSED__, int compress)
+static int evas_image_save_file_png(RGBA_Image *im, const char *file, const char *key __UNUSED__, int quality __UNUSED__, int compress)
 {
    return save_image_png(im, file, compress, 0);
 }
 
-EAPI int
+static int
 module_open(Evas_Module *em)
 {
    if (!em) return 0;
@@ -166,16 +166,25 @@ module_open(Evas_Module *em)
    return 1;
 }
 
-EAPI void
-module_close(void)
+static void
+module_close(Evas_Module *em)
 {
-
 }
 
-EAPI Evas_Module_Api evas_modapi =
+static Evas_Module_Api evas_modapi =
 {
    EVAS_MODULE_API_VERSION,
-     EVAS_MODULE_TYPE_IMAGE_SAVER,
-     "png",
-     "none"
+   "png",
+   "none",
+   {
+     module_open,
+     module_close
+   }
 };
+
+EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_IMAGE_SAVER, image_saver, png);
+
+#ifndef EVAS_STATIC_BUILD_PNG
+EVAS_EINA_MODULE_DEFINE(image_saver, png);
+#endif
+
index 3a871e9..5580c33 100644 (file)
@@ -13,6 +13,8 @@ AM_CFLAGS = @WIN32_CFLAGS@
 
 pkgdir = $(libdir)/evas/modules/savers/tiff/$(MODULE_ARCH)
 
+if !EVAS_STATIC_BUILD_TIFF
+
 pkg_LTLIBRARIES = module.la
 
 module_la_SOURCES = evas_image_save_tiff.c
@@ -20,3 +22,12 @@ module_la_SOURCES = evas_image_save_tiff.c
 module_la_LIBADD = @EINA_LIBS@ @evas_image_loader_tiff_libs@ $(top_builddir)/src/lib/libevas.la
 module_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version
 module_la_LIBTOOLFLAGS = --tag=disable-static
+
+else
+
+noinst_LTLIBRARIES = libevas_saver_tiff.la
+
+libevas_saver_tiff_la_SOURCES = evas_image_save_tiff.c
+libevas_saver_tiff_la_LIBADD = @evas_image_loader_tiff_libs@
+
+endif
index 8560001..8e6f4b3 100644 (file)
@@ -3,9 +3,9 @@
 
 #include <tiffio.h>
 
-int evas_image_save_file_tiff(RGBA_Image *im, const char *file, const char *key, int quality, int compress);
+static int evas_image_save_file_tiff(RGBA_Image *im, const char *file, const char *key, int quality, int compress);
 
-Evas_Image_Save_Func evas_image_save_tiff_func =
+static Evas_Image_Save_Func evas_image_save_tiff_func =
 {
    evas_image_save_file_tiff
 };
@@ -102,12 +102,12 @@ save_image_tiff(RGBA_Image *im, const char *file, int compress __UNUSED__, int i
    return 1;
 }
 
-int evas_image_save_file_tiff(RGBA_Image *im, const char *file, const char *key __UNUSED__, int quality __UNUSED__, int compress)
+static int evas_image_save_file_tiff(RGBA_Image *im, const char *file, const char *key __UNUSED__, int quality __UNUSED__, int compress)
 {
    return save_image_tiff(im, file, compress, 0);
 }
 
-EAPI int
+static int
 module_open(Evas_Module *em)
 {
    if (!em) return 0;
@@ -115,16 +115,25 @@ module_open(Evas_Module *em)
    return 1;
 }
 
-EAPI void
-module_close(void)
+static void
+module_close(Evas_Module *em)
 {
-   
 }
 
-EAPI Evas_Module_Api evas_modapi =
+static Evas_Module_Api evas_modapi =
 {
    EVAS_MODULE_API_VERSION,
-     EVAS_MODULE_TYPE_IMAGE_SAVER,
-     "tiff",
-     "none"
+   "tiff",
+   "none",
+   {
+     module_open,
+     module_close
+   }
 };
+
+EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_IMAGE_SAVER, image_saver, tiff);
+
+#ifndef EVAS_STATIC_BUILD_TIFF
+EVAS_EINA_MODULE_DEFINE(image_saver, tiff);
+#endif
+