From c89dfa73b63d2e04e46509fc3a42f45a84fb26d3 Mon Sep 17 00:00:00 2001 From: Cedric BAIL Date: Tue, 9 Aug 2011 08:39:39 +0000 Subject: [PATCH] eina: make dlopen optional. SVN revision: 62236 --- legacy/eina/configure.ac | 4 ++-- legacy/eina/src/lib/eina_module.c | 16 +++++++++++++++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/legacy/eina/configure.ac b/legacy/eina/configure.ac index 1a25f68c00..86cae0fa7c 100644 --- a/legacy/eina/configure.ac +++ b/legacy/eina/configure.ac @@ -463,13 +463,13 @@ case "$host_os" in AC_CHECK_FUNCS([dlopen], [res="yes"], [res="no"]) if test "x${res}" = "xyes" ; then AC_CHECK_FUNCS([dladdr], [AC_DEFINE(HAVE_DLADDR)]) + AC_DEFINE(HAVE_DLOPEN) else AC_CHECK_LIB([dl], [dlopen], [res="yes"], [res="no"]) if test "x${res}" = "xyes" ; then AC_CHECK_LIB([dl], [dladdr], [AC_DEFINE(HAVE_DLADDR)]) + AC_DEFINE(HAVE_DLOPEN) dlopen_libs="-ldl" - else - AC_MSG_ERROR([Cannot find dlopen]) fi fi ;; diff --git a/legacy/eina/src/lib/eina_module.c b/legacy/eina/src/lib/eina_module.c index 16ff18bd1f..d3d3f7078a 100644 --- a/legacy/eina/src/lib/eina_module.c +++ b/legacy/eina/src/lib/eina_module.c @@ -46,7 +46,9 @@ void *alloca (size_t); # include #endif -#include +#ifdef HAVE_DLOPEN +# include +#endif #ifdef HAVE_EVIL # include @@ -313,6 +315,7 @@ EAPI Eina_Bool eina_module_free(Eina_Module *m) EAPI Eina_Bool eina_module_load(Eina_Module *m) { +#ifdef HAVE_DLOPEN void *dl_handle; Eina_Module_Init *initcall; @@ -352,10 +355,14 @@ loaded: eina_error_set(0); return EINA_TRUE; +#else + return EINA_FALSE; +#endif } EAPI Eina_Bool eina_module_unload(Eina_Module *m) { +#ifdef HAVE_DLOPEN Eina_Module_Shutdown *shut; EINA_SAFETY_ON_NULL_RETURN_VAL(m, EINA_FALSE); @@ -375,13 +382,20 @@ EAPI Eina_Bool eina_module_unload(Eina_Module *m) } return EINA_FALSE; +#else + return EINA_FALSE; +#endif } EAPI void *eina_module_symbol_get(const Eina_Module *m, const char *symbol) { +#ifdef HAVE_DLOPEN EINA_SAFETY_ON_NULL_RETURN_VAL(m, NULL); EINA_SAFETY_ON_NULL_RETURN_VAL(m->handle, NULL); return dlsym(m->handle, symbol); +#else + return NULL; +#endif } EAPI const char *eina_module_file_get(const Eina_Module *m)