lib/eolian/eolian_database.c \
lib/eolian/eolian_database.h
-lib_eolian_libeolian_la_CPPFLAGS = -I$(top_builddir)/src/lib/efl @EOLIAN_CFLAGS@
+lib_eolian_libeolian_la_CPPFLAGS = -I$(top_builddir)/src/lib/efl @EOLIAN_CFLAGS@ \
+ -DPACKAGE_DATA_DIR=\"$(datadir)/eolian\"
+
lib_eolian_libeolian_la_LIBADD = @EOLIAN_LIBS@
lib_eolian_libeolian_la_DEPENDENCIES = @EOLIAN_INTERNAL_LIBS@
lib_eolian_libeolian_la_LDFLAGS = @EFL_LTLIBRARY_FLAGS@
goto end;
}
+ if (!getenv("EFL_RUN_IN_TREE"))
+ eolian_system_directory_scan();
+
eolian_all_eot_files_parse();
const char *filename;
<< "Couldn't load eolian from '" << src << "'.";
}
}
+ if (!getenv("EFL_RUN_IN_TREE"))
+ {
+ eolian_system_directory_scan();
+ }
if (!::eolian_all_eot_files_parse())
{
EINA_CXX_DOM_LOG_ERR(eolian_cxx::domain)
* @param[in] dir the directory to scan
* @return EINA_TRUE on success, EINA_FALSE otherwise.
*
+ * @see eolian_system_directory_scan
+ *
* @ingroup Eolian
*/
EAPI Eina_Bool eolian_directory_scan(const char *dir);
/*
+ * @brief Scan the system directory (recursively) and search for .eo and
+ * .eot files.
+ *
+ * @return EINA_TRUE on success, EINA_FALSE otherwise.
+ *
+ * @see eolian_directory_scan
+ *
+ * @ingroup Eolian
+ */
+EAPI Eina_Bool eolian_system_directory_scan();
+
+/*
* @brief Force parsing of all the .eo files located in the directories
* given in eolian_directory_scan..
*
static int _eolian_init_counter = 0;
int _eolian_log_dom = -1;
+Eina_Prefix *_eolian_prefix = NULL;
EAPI int eolian_init(void)
{
EINA_LOG_STATE_INIT);
INF("Init");
+
+ _eolian_prefix = eina_prefix_new(NULL, eolian_init, "EOLIAN", "eolian",
+ NULL, "", "", PACKAGE_DATA_DIR, "");
+ if (!_eolian_prefix)
+ {
+ ERR("Could not initialize the Eolian prefix.");
+ return EINA_FALSE;
+ }
+
database_init();
eo_lexer_init();
return ++_eolian_init_counter;
eo_lexer_shutdown();
database_shutdown();
+ eina_prefix_free(_eolian_prefix);
+ _eolian_prefix = NULL;
eina_log_domain_unregister(_eolian_log_dom);
_eolian_log_dom = -1;
return EINA_TRUE;
}
+EAPI Eina_Bool
+eolian_system_directory_scan()
+{
+ Eina_Bool ret;
+ Eina_Strbuf *buf = eina_strbuf_new();
+ eina_strbuf_append(buf, eina_prefix_data_get(_eolian_prefix));
+ eina_strbuf_append(buf, "/include");
+ ret = eolian_directory_scan(eina_strbuf_string_get(buf));
+ eina_strbuf_free(buf);
+ return ret;
+}
+
static char *
_eolian_class_to_filename(const char *filename)
{
#include <Eolian.h>
extern int _eolian_log_dom;
+extern Eina_Prefix *_eolian_prefix;
#ifdef CRI
#undef CRI