From dd7595a3475407a7fa96a97393bae8c5220e8762 Mon Sep 17 00:00:00 2001 From: David Walter Seikel Date: Wed, 4 Jan 2012 18:41:13 +1000 Subject: Add the base Enlightenment Foundation Libraries - eina, eet, evas, ecore, embryo, and edje. Note that embryo wont be used, but I'm not sure yet if you can build edje without it. --- libraries/evas/src/lib/file/Makefile.am | 25 ++ libraries/evas/src/lib/file/Makefile.in | 680 ++++++++++++++++++++++++++++++ libraries/evas/src/lib/file/evas_module.c | 586 +++++++++++++++++++++++++ libraries/evas/src/lib/file/evas_module.h | 94 +++++ libraries/evas/src/lib/file/evas_path.c | 154 +++++++ libraries/evas/src/lib/file/evas_path.h | 15 + 6 files changed, 1554 insertions(+) create mode 100644 libraries/evas/src/lib/file/Makefile.am create mode 100644 libraries/evas/src/lib/file/Makefile.in create mode 100644 libraries/evas/src/lib/file/evas_module.c create mode 100644 libraries/evas/src/lib/file/evas_module.h create mode 100644 libraries/evas/src/lib/file/evas_path.c create mode 100644 libraries/evas/src/lib/file/evas_path.h (limited to 'libraries/evas/src/lib/file') diff --git a/libraries/evas/src/lib/file/Makefile.am b/libraries/evas/src/lib/file/Makefile.am new file mode 100644 index 0000000..7875fbe --- /dev/null +++ b/libraries/evas/src/lib/file/Makefile.am @@ -0,0 +1,25 @@ + +MAINTAINERCLEANFILES = Makefile.in + +AM_CPPFLAGS = \ +-I. \ +-I$(top_srcdir)/src/lib \ +-I$(top_srcdir)/src/lib/include \ +-DPACKAGE_BIN_DIR=\"$(bindir)\" \ +-DPACKAGE_LIB_DIR=\"$(libdir)\" \ +-DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \ +@FREETYPE_CFLAGS@ \ +@EINA_CFLAGS@ \ +@EVIL_CFLAGS@ \ +@WIN32_CPPFLAGS@ \ +@PIXMAN_CFLAGS@ + +AM_CFLAGS = @WIN32_CFLAGS@ + +noinst_LTLIBRARIES = libevas_file.la +libevas_file_la_SOURCES = \ +evas_path.c \ +evas_module.c +libevas_file_la_LIBADD = @EINA_LIBS@ @EVIL_LIBS@ + +EXTRA_DIST = evas_module.h evas_path.h diff --git a/libraries/evas/src/lib/file/Makefile.in b/libraries/evas/src/lib/file/Makefile.in new file mode 100644 index 0000000..599d980 --- /dev/null +++ b/libraries/evas/src/lib/file/Makefile.in @@ -0,0 +1,680 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = src/lib/file +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/efl_attribute.m4 \ + $(top_srcdir)/m4/efl_coverage.m4 \ + $(top_srcdir)/m4/efl_doxygen.m4 \ + $(top_srcdir)/m4/efl_fnmatch.m4 \ + $(top_srcdir)/m4/efl_path_max.m4 $(top_srcdir)/m4/efl_tests.m4 \ + $(top_srcdir)/m4/evas_check_engine.m4 \ + $(top_srcdir)/m4/evas_check_loader.m4 \ + $(top_srcdir)/m4/evas_converter.m4 \ + $(top_srcdir)/m4/evas_dither.m4 \ + $(top_srcdir)/m4/evas_scaler.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libevas_file_la_DEPENDENCIES = +am_libevas_file_la_OBJECTS = evas_path.lo evas_module.lo +libevas_file_la_OBJECTS = $(am_libevas_file_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +SOURCES = $(libevas_file_la_SOURCES) +DIST_SOURCES = $(libevas_file_la_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CHECK_CFLAGS = @CHECK_CFLAGS@ +CHECK_LIBS = @CHECK_LIBS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIRECTFB_CFLAGS = @DIRECTFB_CFLAGS@ +DIRECTFB_LIBS = @DIRECTFB_LIBS@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +ECORE_EVAS_CFLAGS = @ECORE_EVAS_CFLAGS@ +ECORE_EVAS_LIBS = @ECORE_EVAS_LIBS@ +EDB_CFLAGS = @EDB_CFLAGS@ +EDB_LIBS = @EDB_LIBS@ +EDJE_CFLAGS = @EDJE_CFLAGS@ +EDJE_LIBS = @EDJE_LIBS@ +EET_CFLAGS = @EET_CFLAGS@ +EET_LIBS = @EET_LIBS@ +EFL_COVERAGE_CFLAGS = @EFL_COVERAGE_CFLAGS@ +EFL_COVERAGE_LIBS = @EFL_COVERAGE_LIBS@ +EFL_FNMATCH_LIBS = @EFL_FNMATCH_LIBS@ +EGREP = @EGREP@ +EINA_CFLAGS = @EINA_CFLAGS@ +EINA_LIBS = @EINA_LIBS@ +EVAS_CFLAGS = @EVAS_CFLAGS@ +EVAS_LIBS = @EVAS_LIBS@ +EVAS_SSE3_CFLAGS = @EVAS_SSE3_CFLAGS@ +EVIL_CFLAGS = @EVIL_CFLAGS@ +EVIL_LIBS = @EVIL_LIBS@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ +FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ +FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ +FREETYPE_LIBS = @FREETYPE_LIBS@ +FRIBIDI_CFLAGS = @FRIBIDI_CFLAGS@ +FRIBIDI_LIBS = @FRIBIDI_LIBS@ +GL_EET_CFLAGS = @GL_EET_CFLAGS@ +GL_EET_LIBS = @GL_EET_LIBS@ +GREP = @GREP@ +HARFBUZZ_CFLAGS = @HARFBUZZ_CFLAGS@ +HARFBUZZ_LIBS = @HARFBUZZ_LIBS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LINEBREAK_CFLAGS = @LINEBREAK_CFLAGS@ +LINEBREAK_LIBS = @LINEBREAK_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MODULE_ARCH = @MODULE_ARCH@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJC = @OBJC@ +OBJCDEPMODE = @OBJCDEPMODE@ +OBJCFLAGS = @OBJCFLAGS@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ +PIXMAN_LIBS = @PIXMAN_LIBS@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PNG_CFLAGS = @PNG_CFLAGS@ +PNG_LIBS = @PNG_LIBS@ +RANLIB = @RANLIB@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHM_OPEN_LINK = @SHM_OPEN_LINK@ +STRIP = @STRIP@ +SVG_CFLAGS = @SVG_CFLAGS@ +SVG_LIBS = @SVG_LIBS@ +VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ +VALGRIND_LIBS = @VALGRIND_LIBS@ +VERSION = @VERSION@ +VMAJ = @VMAJ@ +WIN32_CFLAGS = @WIN32_CFLAGS@ +WIN32_CPPFLAGS = @WIN32_CPPFLAGS@ +XCB_CFLAGS = @XCB_CFLAGS@ +XCB_GL_CFLAGS = @XCB_GL_CFLAGS@ +XCB_GL_LIBS = @XCB_GL_LIBS@ +XCB_LIBS = @XCB_LIBS@ +XEXT_CFLAGS = @XEXT_CFLAGS@ +XEXT_LIBS = @XEXT_LIBS@ +XMKMF = @XMKMF@ +X_CFLAGS = @X_CFLAGS@ +X_EXTRA_LIBS = @X_EXTRA_LIBS@ +X_LIBS = @X_LIBS@ +X_PRE_LIBS = @X_PRE_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_ct_OBJC = @ac_ct_OBJC@ +altivec_cflags = @altivec_cflags@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +dlopen_libs = @dlopen_libs@ +docdir = @docdir@ +dvidir = @dvidir@ +edje_cc = @edje_cc@ +efl_doxygen = @efl_doxygen@ +efl_have_doxygen = @efl_have_doxygen@ +evas_engine_buffer_cflags = @evas_engine_buffer_cflags@ +evas_engine_buffer_libs = @evas_engine_buffer_libs@ +evas_engine_direct3d_cflags = @evas_engine_direct3d_cflags@ +evas_engine_direct3d_libs = @evas_engine_direct3d_libs@ +evas_engine_directfb_cflags = @evas_engine_directfb_cflags@ +evas_engine_directfb_libs = @evas_engine_directfb_libs@ +evas_engine_fb_cflags = @evas_engine_fb_cflags@ +evas_engine_fb_libs = @evas_engine_fb_libs@ +evas_engine_gl_cocoa_cflags = @evas_engine_gl_cocoa_cflags@ +evas_engine_gl_cocoa_libs = @evas_engine_gl_cocoa_libs@ +evas_engine_gl_common_libs = @evas_engine_gl_common_libs@ +evas_engine_gl_sdl_cflags = @evas_engine_gl_sdl_cflags@ +evas_engine_gl_sdl_libs = @evas_engine_gl_sdl_libs@ +evas_engine_gl_xcb_cflags = @evas_engine_gl_xcb_cflags@ +evas_engine_gl_xcb_libs = @evas_engine_gl_xcb_libs@ +evas_engine_gl_xlib_cflags = @evas_engine_gl_xlib_cflags@ +evas_engine_gl_xlib_libs = @evas_engine_gl_xlib_libs@ +evas_engine_psl1ght_cflags = @evas_engine_psl1ght_cflags@ +evas_engine_psl1ght_libs = @evas_engine_psl1ght_libs@ +evas_engine_software_16_ddraw_cflags = @evas_engine_software_16_ddraw_cflags@ +evas_engine_software_16_ddraw_libs = @evas_engine_software_16_ddraw_libs@ +evas_engine_software_16_sdl_cflags = @evas_engine_software_16_sdl_cflags@ +evas_engine_software_16_sdl_libs = @evas_engine_software_16_sdl_libs@ +evas_engine_software_16_wince_cflags = @evas_engine_software_16_wince_cflags@ +evas_engine_software_16_wince_libs = @evas_engine_software_16_wince_libs@ +evas_engine_software_16_x11_cflags = @evas_engine_software_16_x11_cflags@ +evas_engine_software_16_x11_libs = @evas_engine_software_16_x11_libs@ +evas_engine_software_8_x11_cflags = @evas_engine_software_8_x11_cflags@ +evas_engine_software_8_x11_libs = @evas_engine_software_8_x11_libs@ +evas_engine_software_ddraw_cflags = @evas_engine_software_ddraw_cflags@ +evas_engine_software_ddraw_libs = @evas_engine_software_ddraw_libs@ +evas_engine_software_gdi_cflags = @evas_engine_software_gdi_cflags@ +evas_engine_software_gdi_libs = @evas_engine_software_gdi_libs@ +evas_engine_software_sdl_cflags = @evas_engine_software_sdl_cflags@ +evas_engine_software_sdl_libs = @evas_engine_software_sdl_libs@ +evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ +evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ +evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ +evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ +evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ +evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ +evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ +evas_image_loader_edb_libs = @evas_image_loader_edb_libs@ +evas_image_loader_eet_cflags = @evas_image_loader_eet_cflags@ +evas_image_loader_eet_libs = @evas_image_loader_eet_libs@ +evas_image_loader_generic_cflags = @evas_image_loader_generic_cflags@ +evas_image_loader_generic_libs = @evas_image_loader_generic_libs@ +evas_image_loader_gif_cflags = @evas_image_loader_gif_cflags@ +evas_image_loader_gif_libs = @evas_image_loader_gif_libs@ +evas_image_loader_ico_cflags = @evas_image_loader_ico_cflags@ +evas_image_loader_ico_libs = @evas_image_loader_ico_libs@ +evas_image_loader_jpeg_cflags = @evas_image_loader_jpeg_cflags@ +evas_image_loader_jpeg_libs = @evas_image_loader_jpeg_libs@ +evas_image_loader_pmaps_cflags = @evas_image_loader_pmaps_cflags@ +evas_image_loader_pmaps_libs = @evas_image_loader_pmaps_libs@ +evas_image_loader_png_cflags = @evas_image_loader_png_cflags@ +evas_image_loader_png_libs = @evas_image_loader_png_libs@ +evas_image_loader_psd_cflags = @evas_image_loader_psd_cflags@ +evas_image_loader_psd_libs = @evas_image_loader_psd_libs@ +evas_image_loader_svg_cflags = @evas_image_loader_svg_cflags@ +evas_image_loader_svg_libs = @evas_image_loader_svg_libs@ +evas_image_loader_tga_cflags = @evas_image_loader_tga_cflags@ +evas_image_loader_tga_libs = @evas_image_loader_tga_libs@ +evas_image_loader_tiff_cflags = @evas_image_loader_tiff_cflags@ +evas_image_loader_tiff_libs = @evas_image_loader_tiff_libs@ +evas_image_loader_wbmp_cflags = @evas_image_loader_wbmp_cflags@ +evas_image_loader_wbmp_libs = @evas_image_loader_wbmp_libs@ +evas_image_loader_xpm_cflags = @evas_image_loader_xpm_cflags@ +evas_image_loader_xpm_libs = @evas_image_loader_xpm_libs@ +exec_prefix = @exec_prefix@ +have_evas_engine_gl_x11 = @have_evas_engine_gl_x11@ +have_evas_engine_gl_xcb = @have_evas_engine_gl_xcb@ +have_evas_engine_gl_xlib = @have_evas_engine_gl_xlib@ +have_evas_engine_software_x11 = @have_evas_engine_software_x11@ +have_evas_engine_software_xcb = @have_evas_engine_software_xcb@ +have_evas_engine_software_xlib = @have_evas_engine_software_xlib@ +have_lcov = @have_lcov@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +lt_enable_auto_import = @lt_enable_auto_import@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgconfig_requires_private = @pkgconfig_requires_private@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pthread_cflags = @pthread_cflags@ +pthread_libs = @pthread_libs@ +release_info = @release_info@ +requirement_evas = @requirement_evas@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +version_info = @version_info@ +MAINTAINERCLEANFILES = Makefile.in +AM_CPPFLAGS = \ +-I. \ +-I$(top_srcdir)/src/lib \ +-I$(top_srcdir)/src/lib/include \ +-DPACKAGE_BIN_DIR=\"$(bindir)\" \ +-DPACKAGE_LIB_DIR=\"$(libdir)\" \ +-DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \ +@FREETYPE_CFLAGS@ \ +@EINA_CFLAGS@ \ +@EVIL_CFLAGS@ \ +@WIN32_CPPFLAGS@ \ +@PIXMAN_CFLAGS@ + +AM_CFLAGS = @WIN32_CFLAGS@ +noinst_LTLIBRARIES = libevas_file.la +libevas_file_la_SOURCES = \ +evas_path.c \ +evas_module.c + +libevas_file_la_LIBADD = @EINA_LIBS@ @EVIL_LIBS@ +EXTRA_DIST = evas_module.h evas_path.h +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/lib/file/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/lib/file/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libevas_file.la: $(libevas_file_la_OBJECTS) $(libevas_file_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libevas_file_la_OBJECTS) $(libevas_file_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/evas_module.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/evas_path.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLTLIBRARIES ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/libraries/evas/src/lib/file/evas_module.c b/libraries/evas/src/lib/file/evas_module.c new file mode 100644 index 0000000..6b4d4f6 --- /dev/null +++ b/libraries/evas/src/lib/file/evas_module.c @@ -0,0 +1,586 @@ +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#include +#include +#include + + +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 Eina_List * +_evas_module_append(Eina_List *list, char *path) +{ + if (path) + { + if (evas_file_path_exists(path)) + list = eina_list_append(list, path); + else + free(path); + } + return list; +} + +/* this will alloc a list of paths to search for the modules */ +/* by now these are: */ +/* 1. ~/.evas/modules/ */ +/* 2. $(EVAS_MODULE_DIR)/evas/modules/ */ +/* 3. dladdr/evas/modules/ */ +/* 4. PREFIX/evas/modules/ */ +void +evas_module_paths_init(void) +{ + char *path; + + /* 1. ~/.evas/modules/ */ + 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/ */ + path = eina_module_environment_path_get("EVAS_MODULES_DIR", "/evas/modules"); + if (eina_list_search_unsorted(evas_module_paths, (Eina_Compare_Cb) strcmp, path)) + free(path); + else + 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"); + if (eina_list_search_unsorted(evas_module_paths, (Eina_Compare_Cb) strcmp, path)) + free(path); + else + evas_module_paths = _evas_module_append(evas_module_paths, path); + + /* 4. PREFIX/evas/modules/ */ +#ifndef _MSC_VER + path = PACKAGE_LIB_DIR "/evas/modules"; + if (!eina_list_search_unsorted(evas_module_paths, (Eina_Compare_Cb) strcmp, path)) + { + path = strdup(path); + if (path) + evas_module_paths = _evas_module_append(evas_module_paths, path); + } +#endif +} + +#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, direct3d); +EVAS_EINA_STATIC_MODULE_DEFINE(engine, directfb); +EVAS_EINA_STATIC_MODULE_DEFINE(engine, fb); +EVAS_EINA_STATIC_MODULE_DEFINE(engine, gl_x11); +EVAS_EINA_STATIC_MODULE_DEFINE(engine, gl_sdl); +EVAS_EINA_STATIC_MODULE_DEFINE(engine, psl1ght); +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_8); +EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_8_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_sdl); +EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_x11); +EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, bmp); +EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, edb); +EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, eet); +EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, generic); +EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, gif); +EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, ico); +EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, jpeg); +EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, pmaps); +EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, png); +EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, psd); +EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, svg); +EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, tga); +EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, tiff); +EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, wbmp); +EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, xpm); +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_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_X11 + EVAS_EINA_STATIC_MODULE_USE(engine, gl_x11), +#endif +#ifdef EVAS_STATIC_BUILD_GL_SDL + EVAS_EINA_STATIC_MODULE_USE(engine, gl_sdl), +#endif +#ifdef EVAS_STATIC_BUILD_PSL1GHT + EVAS_EINA_STATIC_MODULE_USE(engine, psl1ght), +#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_8 + EVAS_EINA_STATIC_MODULE_USE(engine, software_8), +#endif +#ifdef EVAS_STATIC_BUILD_SOFTWARE_8_X11 + EVAS_EINA_STATIC_MODULE_USE(engine, software_8_x11), +#endif +#ifdef EVAS_STATIC_BUILD_SOFTWARE_GENERIC + EVAS_EINA_STATIC_MODULE_USE(engine, software_generic), +#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_BMP + EVAS_EINA_STATIC_MODULE_USE(image_loader, bmp), +#endif +#ifdef EVAS_STATIC_BUILD_EDB + EVAS_EINA_STATIC_MODULE_USE(image_loader, edb), +#endif +#ifdef EVAS_STATIC_BUILD_EET + EVAS_EINA_STATIC_MODULE_USE(image_loader, eet), +#endif +#ifdef EVAS_STATIC_BUILD_GENERIC + EVAS_EINA_STATIC_MODULE_USE(image_loader, generic), +#endif +#ifdef EVAS_STATIC_BUILD_GIF + EVAS_EINA_STATIC_MODULE_USE(image_loader, gif), +#endif +#ifdef EVAS_STATIC_BUILD_ICO + EVAS_EINA_STATIC_MODULE_USE(image_loader, ico), +#endif +#ifdef EVAS_STATIC_BUILD_JPEG + EVAS_EINA_STATIC_MODULE_USE(image_loader, jpeg), +#endif +#ifdef EVAS_STATIC_BUILD_PMAPS + EVAS_EINA_STATIC_MODULE_USE(image_loader, pmaps), +#endif +#ifdef EVAS_STATIC_BUILD_PNG + EVAS_EINA_STATIC_MODULE_USE(image_loader, png), +#endif +#ifdef EVAS_STATIC_BUILD_PSD + EVAS_EINA_STATIC_MODULE_USE(image_loader, psd), +#endif +#ifdef EVAS_STATIC_BUILD_SVG + EVAS_EINA_STATIC_MODULE_USE(image_loader, svg), +#endif +#ifdef EVAS_STATIC_BUILD_TGA + EVAS_EINA_STATIC_MODULE_USE(image_loader, tga), +#endif +#ifdef EVAS_STATIC_BUILD_TIFF + EVAS_EINA_STATIC_MODULE_USE(image_loader, tiff), +#endif +#ifdef EVAS_STATIC_BUILD_WBMP + EVAS_EINA_STATIC_MODULE_USE(image_loader, wbmp), +#endif +#ifdef EVAS_STATIC_BUILD_XPM + EVAS_EINA_STATIC_MODULE_USE(image_loader, xpm), +#endif +#ifdef EVAS_STATIC_BUILD_EDB + EVAS_EINA_STATIC_MODULE_USE(image_saver, edb), +#endif +#ifdef EVAS_STATIC_BUILD_EET + EVAS_EINA_STATIC_MODULE_USE(image_saver, eet), +#endif +#if defined (EVAS_BUILD_SAVER_JPEG) && defined (EVAS_STATIC_BUILD_JPEG) + EVAS_EINA_STATIC_MODULE_USE(image_saver, jpeg), +#endif +#ifdef EVAS_STATIC_BUILD_PNG + EVAS_EINA_STATIC_MODULE_USE(image_saver, png), +#endif +#ifdef EVAS_STATIC_BUILD_TIFF + 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) +{ + int i; + + evas_module_paths_init(); + + 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; ++i) + evas_static_module[i].init(); +} + +Eina_Bool +evas_module_register(const Evas_Module_Api *module, Evas_Module_Type type) +{ + Evas_Module *em; + + if ((unsigned int)type > 3) return EINA_FALSE; + if (!module) return EINA_FALSE; + if (module->version != EVAS_MODULE_API_VERSION) 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->definition = 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_List * +evas_module_engine_list(void) +{ + Evas_Module *em; + Eina_List *r = NULL; + Eina_Array_Iterator iterator; + unsigned int i; + + EINA_ARRAY_ITER_NEXT(evas_engines, i, em, iterator) + r = eina_list_append(r, em->definition->name); + + return r; +} + +Eina_Bool +evas_module_unregister(const Evas_Module_Api *module, Evas_Module_Type type) +{ + Evas_Module *em; + + if ((unsigned int)type > 3) return EINA_FALSE; + if (!module) return EINA_FALSE; + + em = eina_hash_find(evas_modules[type], module->name); + if (!em || em->definition != 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) +{ + const char *path; + const char *format = NULL; + char buffer[4096]; + Evas_Module *em; + Eina_Module *en; + Eina_List *l; + + if ((unsigned int)type > 3) return NULL; + + em = eina_hash_find(evas_modules[type], name); + if (em) return em; + + EINA_LIST_FOREACH(evas_module_paths, l, path) + { + switch (type) + { + 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_free(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_free(en); + } + + return NULL; +} + +Evas_Module * +evas_module_engine_get(int render_method) +{ + if ((render_method <= 0) || + ((unsigned int)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) +{ + if (em->loaded) return 1; + if (!em->definition) return 0; + + if (!em->definition->func.open(em)) return 0; + em->loaded = 1; + +#ifdef BUILD_ASYNC_PRELOAD + LKI(em->lock); +#endif + return 1; +} + +void +evas_module_unload(Evas_Module *em) +{ + if (!em->loaded) + return; + if (!em->definition) + return ; + +// for now lets not unload modules - they may still be in use. +// em->definition->func.close(em); +// em->loaded = 0; + +#ifdef BUILD_ASYNC_PRELOAD + LKD(em->lock); +#endif +} + +void +evas_module_ref(Evas_Module *em) +{ +#ifdef BUILD_ASYNC_PRELOAD + LKL(em->lock); +#endif + em->ref++; +#ifdef BUILD_ASYNC_PRELOAD + LKU(em->lock); +#endif +} + +void +evas_module_unref(Evas_Module *em) +{ +#ifdef BUILD_ASYNC_PRELOAD + LKL(em->lock); +#endif + em->ref--; +#ifdef BUILD_ASYNC_PRELOAD + LKU(em->lock); +#endif +} + +static int use_count = 0; + +void +evas_module_use(Evas_Module *em) +{ + em->last_used = use_count; +} + +void +evas_module_clean(void) +{ + static int call_count = 0; +/* int ago; */ + int noclean = -1; +/* Eina_List *l; */ +/* Evas_Module *em; */ + + /* only clean modules every 256 calls */ + call_count++; + if (call_count <= 256) return; + call_count = 0; + + if (noclean == -1) + { + if (getenv("EVAS_NOCLEAN")) + noclean = 1; + else + noclean = 0; + } + if (noclean == 1) return; + + /* disable module cleaning for now - may cause instability with some modules */ + return; + + /* 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) +{ + Eina_Module *en; + char *path; + int i; + + for (i = 0; evas_static_module[i].shutdown; ++i) + evas_static_module[i].shutdown(); + + EINA_LIST_FREE(eina_evas_modules, en) + eina_module_free(en); + + eina_hash_free(evas_modules[EVAS_MODULE_TYPE_ENGINE]); + evas_modules[EVAS_MODULE_TYPE_ENGINE] = NULL; + eina_hash_free(evas_modules[EVAS_MODULE_TYPE_IMAGE_LOADER]); + evas_modules[EVAS_MODULE_TYPE_IMAGE_LOADER] = NULL; + eina_hash_free(evas_modules[EVAS_MODULE_TYPE_IMAGE_SAVER]); + evas_modules[EVAS_MODULE_TYPE_IMAGE_SAVER] = NULL; + eina_hash_free(evas_modules[EVAS_MODULE_TYPE_OBJECT]); + evas_modules[EVAS_MODULE_TYPE_OBJECT] = NULL; + + EINA_LIST_FREE(evas_module_paths, path) + free(path); + + eina_array_free(evas_engines); + evas_engines = NULL; +} + +EAPI int +_evas_module_engine_inherit(Evas_Func *funcs, char *name) +{ + Evas_Module *em; + + em = evas_module_find_type(EVAS_MODULE_TYPE_ENGINE, name); + if (em) + { + if (evas_module_load(em)) + { + /* FIXME: no way to unref */ + evas_module_ref(em); + evas_module_use(em); + *funcs = *((Evas_Func *)(em->functions)); + return 1; + } + } + return 0; +} + +static Eina_Prefix *pfx = NULL; + +EAPI const char * +_evas_module_libdir_get(void) +{ + if (!pfx) pfx = eina_prefix_new + (NULL, _evas_module_libdir_get, "EVAS", "evas", NULL, + PACKAGE_BIN_DIR, PACKAGE_LIB_DIR, PACKAGE_DATA_DIR, PACKAGE_DATA_DIR); + if (!pfx) return NULL; + return eina_prefix_lib_get(pfx); +} diff --git a/libraries/evas/src/lib/file/evas_module.h b/libraries/evas/src/lib/file/evas_module.h new file mode 100644 index 0000000..8699b6b --- /dev/null +++ b/libraries/evas/src/lib/file/evas_module.h @@ -0,0 +1,94 @@ +#ifndef _EVAS_MODULE_H +#define _EVAS_MODULE_H + + +/* the module api version */ +#define EVAS_MODULE_API_VERSION 2 + + +/* the module types */ +typedef enum _Evas_Module_Type +{ + 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_Api Evas_Module_Api; +typedef struct _Evas_Module Evas_Module; +typedef struct _Evas_Module_Path Evas_Module_Path; +typedef struct _Evas_Module_Engine Evas_Module_Engine; +typedef struct _Evas_Module_Public Evas_Module_Public; + +/* the module api structure, all modules should define this struct */ +struct _Evas_Module_Api +{ + int version; + const char *name; + const char *author; + + struct + { + int (*open)(Evas_Module *); + void (*close)(Evas_Module *); + } func; +}; + +/* the module structure */ +struct _Evas_Module +{ + const Evas_Module_Api *definition; + + 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); + + unsigned char loaded : 1; +}; + + +/* the internals of the module api use this struct to reference a path with a module type + * instead of deduce the type from the path. + * */ +struct _Evas_Module_Path +{ + Evas_Module_Type type; + char *path; +}; + +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_unref (Evas_Module *em); +void evas_module_use (Evas_Module *em); +void evas_module_clean (void); +void evas_module_shutdown (void); +EAPI Eina_Bool evas_module_register (const Evas_Module_Api *module, Evas_Module_Type type); +EAPI 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 */ diff --git a/libraries/evas/src/lib/file/evas_path.c b/libraries/evas/src/lib/file/evas_path.c new file mode 100644 index 0000000..ff13e20 --- /dev/null +++ b/libraries/evas/src/lib/file/evas_path.c @@ -0,0 +1,154 @@ +/* os dependent file code. for unix-y like fs's only for now */ +/* if your os doesn't use unix-like fs starting with "/" for the root and */ +/* the file path separator isn't "/" then you may need to help out by */ +/* adding in a new set of functions here */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include +/* get the casefold feature! */ +#include +#ifndef _MSC_VER +# include +# include +#endif + +#ifdef HAVE_EVIL +# include +#endif + +#include "evas_common.h" +#include "evas_private.h" + +#ifdef _WIN32 +# define EVAS_PATH_SEPARATOR "\\" +#else +# define EVAS_PATH_SEPARATOR "/" +#endif + +int +evas_file_path_is_full_path(const char *path) +{ + if (!path) return 0; +#if defined _WIN32_WCE + if (path[0] == '\\') return 1; +#elif defined _WIN32 + if ((path[0] == '\0') || (path[1] == '\0')) + return 0; + if (path[1] == ':') return 1; +#else + if (path[0] == '/') return 1; +#endif + return 0; +} + +char * +evas_file_path_join(const char *path, const char *end) +{ + char *res = NULL; + size_t len; + + if ((!path) && (!end)) return NULL; + if (!path) return strdup(end); + if (!end) return strdup(path); + len = strlen(path); + len += strlen(end); + len += strlen(EVAS_PATH_SEPARATOR); + res = malloc(len + 1); + if (!res) return NULL; + strcpy(res, path); + strcat(res, EVAS_PATH_SEPARATOR); + strcat(res, end); + return res; +} + +int +evas_file_path_exists(const char *path) +{ + struct stat st; + + if (!stat(path, &st)) return 1; + return 0; +} + +int +evas_file_path_is_file(const char *path) +{ + struct stat st; + + if (stat(path, &st) == -1) return 0; + if (S_ISREG(st.st_mode)) return 1; + return 0; +} + +int +evas_file_path_is_dir(const char *path) +{ + struct stat st; + + if (stat(path, &st) == -1) return 0; + if (S_ISDIR(st.st_mode)) return 1; + return 0; +} + +Eina_List * +evas_file_path_list(char *path, const char *match, int match_case) +{ + Eina_File_Direct_Info *info; + Eina_Iterator *it; + Eina_List *files = NULL; + int flags; + + flags = FNM_PATHNAME; +#ifdef FNM_CASEFOLD + if (!match_case) + flags |= FNM_CASEFOLD; +#else +/*#warning "Your libc does not provide case-insensitive matching!"*/ +#endif + + it = eina_file_direct_ls(path); + EINA_ITERATOR_FOREACH(it, info) + { + if (match) + { + if (fnmatch(match, info->path + info->name_start, flags) == 0) + files = eina_list_append(files, strdup(info->path + info->name_start)); + } + else + files = eina_list_append(files, strdup(info->path + info->name_start)); + } + eina_iterator_free(it); + return files; +} + +DATA64 +evas_file_modified_time(const char *file) +{ + struct stat st; + + if (stat(file, &st) < 0) return 0; + if (st.st_ctime > st.st_mtime) return (DATA64)st.st_ctime; + else return (DATA64)st.st_mtime; + return 0; +} + +char * +evas_file_path_resolve(const char *file) +{ +#if 0 + char buf[PATH_MAX], *buf2; +#endif + + return strdup(file); +#if 0 + if (!realpath(file, buf)) return NULL; + buf2 = strdup(buf); + return buf2; +#endif +} diff --git a/libraries/evas/src/lib/file/evas_path.h b/libraries/evas/src/lib/file/evas_path.h new file mode 100644 index 0000000..e0aa6bb --- /dev/null +++ b/libraries/evas/src/lib/file/evas_path.h @@ -0,0 +1,15 @@ +#ifndef _EVAS_PATH_H +#define _EVAS_PATH_H + + +int evas_file_path_is_full_path (const char *path); +char *evas_file_path_join (const char *path, const char *end); +int evas_file_path_exists (const char *path); +int evas_file_path_is_file (const char *path); +int evas_file_path_is_dir (const char *path); +Eina_List *evas_file_path_list (char *path, const char *match, int match_case); +DATA64 evas_file_modified_time (const char *file); +char *evas_file_path_resolve (const char *file); + + +#endif /* _EVAS_PATH_H */ -- cgit v1.1