Handle both .la and .so names; this works better in the uninstalled

2008-08-26  Colin Walters  <walters@verbum.org>

	* girepository/gtypelib.c (_g_typelib_init): Handle
	both .la and .so names; this works better in the
	uninstalled library case.

svn path=/trunk/; revision=498
This commit is contained in:
Colin Walters 2008-08-26 20:04:38 +00:00 committed by Colin Walters
parent 777cc726a4
commit 00fb846ad8

View File

@ -1937,7 +1937,7 @@ _g_typelib_init (GTypelib *typelib)
if (typelib->module == NULL) if (typelib->module == NULL)
{ {
gchar *resolved_shlib; GString *shlib_full;
/* Glade's autoconnect feature and OpenGL's extension mechanism /* Glade's autoconnect feature and OpenGL's extension mechanism
* as used by Clutter rely on dlopen(NULL) to work as a means of * as used by Clutter rely on dlopen(NULL) to work as a means of
@ -1948,13 +1948,23 @@ _g_typelib_init (GTypelib *typelib)
* load modules globally for now. * load modules globally for now.
*/ */
resolved_shlib = g_module_build_path (NULL, shlib); typelib->module = g_module_open (shlib, G_MODULE_BIND_LAZY);
typelib->module = g_module_open (resolved_shlib, G_MODULE_BIND_LAZY);
if (typelib->module == NULL)
g_warning ("Failed to load shared library referenced by the typelib: %s",
g_module_error ());
g_free (resolved_shlib); if (typelib->module == NULL)
{
shlib_full = g_string_new (shlib);
/* Prefix with "lib", try both .la and .so */
if (!g_str_has_prefix (shlib_full->str, "lib"))
g_string_prepend (shlib_full, "lib");
g_string_append (shlib_full, ".la");
typelib->module = g_module_open (shlib_full->str, G_MODULE_BIND_LAZY);
if (typelib->module == NULL)
g_string_overwrite (shlib_full, strlen (shlib_full->str)-2, "so");
typelib->module = g_module_open (shlib_full->str, G_MODULE_BIND_LAZY);
}
if (typelib->module == NULL)
g_warning ("Failed to load shared library '%s' referenced by the typelib: %s",
shlib, g_module_error ());
} }
} }
} }