mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-28 08:26:14 +01:00
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:
parent
777cc726a4
commit
00fb846ad8
24
gtypelib.c
24
gtypelib.c
@ -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 ());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user