From af83c6571e47d06468b8162dd29ad57bcf4967a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Brzezi=C5=84ski?= Date: Tue, 9 Aug 2022 10:42:39 +0200 Subject: [PATCH] giomodule: Automatically detect modules on macOS Makes use of relocatable prefixes, allowing gio to find modules automatically without needing to set the GIO_EXTRA_MODULES env var. --- gio/giomodule.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gio/giomodule.c b/gio/giomodule.c index f5dbb4555..fce60e9fc 100644 --- a/gio/giomodule.c +++ b/gio/giomodule.c @@ -1262,6 +1262,29 @@ get_gio_module_dir (void) g_free (install_dir); #else module_dir = g_strdup (GIO_MODULE_DIR); +#ifdef __APPLE__ +#include "TargetConditionals.h" +#if TARGET_OS_OSX +#include + { + g_autofree gchar *path = NULL; + g_autofree gchar *possible_dir = NULL; + Dl_info info; + + if (dladdr (get_gio_module_dir, &info)) + { + /* Gets path to the PREFIX/lib directory */ + path = g_path_get_dirname (info.dli_fname); + possible_dir = g_build_filename (path, "gio", "modules", NULL); + if (g_file_test (possible_dir, G_FILE_TEST_IS_DIR)) + { + g_free (module_dir); + module_dir = g_steal_pointer (&possible_dir); + } + } + } +#endif +#endif #endif }