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
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
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])
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])
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. \
@FONTCONFIG_LIBS@ \
@pthread_libs@ \
@EINA_LIBS@ \
+$(EVAS_STATIC_MODULE) \
+$(EVAS_STATIC_LIBADD) \
-lm
libevas_la_DEPENDENCIES = \
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
#include "evas_private.h"
#include "evas_cs.h"
-extern Eina_List *evas_modules;
static int initcount = 0;
Eina_Mempool *_evas_rectangle_mp = NULL;
EAPI void
evas_output_method_set(Evas *e, int render_method)
{
- Eina_List *l;
Evas_Module *em;
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
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;
}
/**
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;
}
/**
/* 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;
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);
}
/**
#include "evas_private.h"
#include "evas_cs.h"
-extern Eina_List *evas_modules;
-
struct ext_loader_s {
const char* extention;
const char* loader;
{ "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;
}
}
- 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;
#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)
{
# 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/ */
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"));
{
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
{
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
{
#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
{
#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;
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++;
/* 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
/* 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;
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;
};
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);
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 */
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
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
}
/* module advertising code */
-EAPI int
+static int
module_open(Evas_Module *em)
{
if (!em) return 0;
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
+
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
re = (Render_Engine *)data;
}
-EAPI int
+static int
module_open(Evas_Module *em)
{
if (!em) return 0;
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
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 \
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 = \
/* module advertising code */
-EAPI int
+static int
module_open(Evas_Module *em)
{
if (!em) return 0;
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
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
return EVAS_IMAGE_SCALE_HINT_NONE;
}
-EAPI int
+static int
module_open(Evas_Module *em)
{
if (!em) return 0;
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
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 = \
}
/* module advertising code */
-EAPI int
+static int
module_open(Evas_Module *em)
{
if (!em) return 0;
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
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
}
}
-
-EAPI int
+static int
module_open(Evas_Module *em)
{
if (!em) return 0;
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
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
return _evas_gl_x11_vi->depth;
}
-EAPI int
+static int
module_open(Evas_Module *em)
{
if (!em) return 0;
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
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 = \
#pragma mark Module Function Export
-EAPI int
+static int
module_open(Evas_Module *em)
{
if (!em) return 0;
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
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
*****
*/
-EAPI int
+static int
module_open(Evas_Module *em)
{
if (!em) return 0;
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
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
/* module advertising code */
-EAPI int
+static int
module_open(Evas_Module *em)
{
if (!em) return 0;
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
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 = \
}
/* module advertising code */
-EAPI int
+static int
module_open(Evas_Module *em)
{
if (!em) return 0;
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)
{
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 \
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
/* module advertising code */
-EAPI int
+static int
module_open(Evas_Module *em)
{
if (!em) return 0;
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
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
/* module advertising code */
-EAPI int
+static int
module_open(Evas_Module *em)
{
if (!em) return 0;
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
+
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
/* module advertising code */
-EAPI int
+static int
module_open(Evas_Module *em)
{
if (!em) return 0;
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
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
/* module advertising code */
-EAPI int
+static int
module_open(Evas_Module *em)
{
if (!em) return 0;
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
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
*****
*/
-EAPI int
+static int
module_open(Evas_Module *em)
{
if (!em) return 0;
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
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
}
/* module advertising code */
-EAPI int
+static int
module_open(Evas_Module *em)
{
if (!em) return 0;
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
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
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 */
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*
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 \
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 = \
/* module advertising code */
-EAPI int
+static int
module_open(Evas_Module *em)
{
if (!em) return 0;
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
+
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 \
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
}
/* 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 */
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
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)
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
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
#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;
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;
return 1;
}
-EAPI int
+static int
module_open(Evas_Module *em)
{
if (!em) return 0;
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
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
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
return res;
}
-EAPI int
+static int
module_open(Evas_Module *em)
{
if (!em) return 0;
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
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
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
#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;
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 };
return 1;
}
-EAPI int
+static int
module_open(Evas_Module *em)
{
if (!em) return 0;
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
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
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
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
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;
}
#endif
-int
+static int
evas_image_load_file_head_jpeg(Image_Entry *ie, const char *file, const char *key)
{
int val;
key = 0;
}
-int
+static int
evas_image_load_file_data_jpeg(Image_Entry *ie, const char *file, const char *key)
{
int val;
key = 0;
}
-EAPI int
+static int
module_open(Evas_Module *em)
{
if (!em) return 0;
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
+
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
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
}
/* external functions */
-EAPI int
+static int
module_open(Evas_Module *em)
{
if (!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
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
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
#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;
key = 0;
}
-int
+static int
evas_image_load_file_data_png(Image_Entry *ie, const char *file, const char *key)
{
unsigned char *surface;
key = 0;
}
-EAPI int
+static int
module_open(Evas_Module *em)
{
if (!em) return 0;
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
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
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
#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 =
{
}
}
-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;
}
/** 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;
return 1;
}
-EAPI int
+static int
module_open(Evas_Module *em)
{
if (!em) return 0;
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
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
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
#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
}
}
-int
+static int
evas_image_load_file_head_tiff(Image_Entry *ie, const char *file, const char *key __UNUSED__)
{
char txt[1024];
return 1;
}
-int
+static int
evas_image_load_file_data_tiff(Image_Entry *ie, const char *file, const char *key __UNUSED__)
{
char txt[1024];
return 1;
}
-EAPI int
+static int
module_open(Evas_Module *em)
{
if (!em) return 0;
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
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
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
+
#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
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;
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
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)
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
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
#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;
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
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
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
#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;
return ok;
}
-EAPI int
+static int
module_open(Evas_Module *em)
{
if (!em) return 0;
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
+
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
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
#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
};
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;
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
+
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
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
#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
};
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;
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
+
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
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
#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
};
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;
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
+