mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-11-10 03:16:17 +01:00
Windows port: compute GOBJECT_INTROSPECTION_LIBDIR at runtime.
Otherwise, we fail to properly locate the typelibs, because on Windows the value of GOBJECT_INTROSPECTION_LIBDIR depends on where Glib has been installed. Due to the nature of how we handle software that depends on Glib on Windows (it is recommended that each program bundles it's private copy), we're working in a "multi-prefixed" environment. Hence the value computed at build time will most likely not even exist at runtime. https://bugzilla.gnome.org/show_bug.cgi?id=620566
This commit is contained in:
parent
522ebcd2d6
commit
8461962337
@ -50,6 +50,39 @@ struct _GIRepositoryPrivate
|
||||
|
||||
G_DEFINE_TYPE (GIRepository, g_irepository, G_TYPE_OBJECT);
|
||||
|
||||
#ifdef G_PLATFORM_WIN32
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
static HMODULE girepository_dll = NULL;
|
||||
|
||||
#ifdef DLL_EXPORT
|
||||
|
||||
BOOL WINAPI
|
||||
DllMain (HINSTANCE hinstDLL,
|
||||
DWORD fdwReason,
|
||||
LPVOID lpvReserved)
|
||||
{
|
||||
if (fdwReason == DLL_PROCESS_ATTACH)
|
||||
girepository_dll = hinstDLL;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#undef GOBJECT_INTROSPECTION_LIBDIR
|
||||
|
||||
/* GOBJECT_INTROSPECTION_LIBDIR is used only in code called just once,
|
||||
* so no problem leaking this
|
||||
*/
|
||||
#define GOBJECT_INTROSPECTION_LIBDIR \
|
||||
g_build_filename (g_win32_get_package_installation_directory_of_module (girepository_dll), \
|
||||
"lib", \
|
||||
NULL)
|
||||
|
||||
#endif
|
||||
|
||||
static void
|
||||
g_irepository_init (GIRepository *repository)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user