diff --git a/configure.in b/configure.in
index 1e070d8a5..73e948219 100644
--- a/configure.in
+++ b/configure.in
@@ -245,6 +245,17 @@ else
AC_MSG_RESULT([yes])
fi
+dnl location to install runtime libraries, e.g. ../../lib to install
+dnl to /lib if libdir is /usr/lib
+AC_ARG_WITH(runtime-libdir,
+ [AC_HELP_STRING([--with-runtime-libdir=RELPATH],
+ [Install runtime libraries relative to libdir])],
+ [],
+ [with_runtime_libdir=""])
+GLIB_RUNTIME_LIBDIR=$with_runtime_libdir
+AC_SUBST(GLIB_RUNTIME_LIBDIR)
+AM_CONDITIONAL(HAVE_GLIB_RUNTIME_LIBDIR, [test "x$with_runtime_libdir" != "x"])
+
dnl Checks for programs.
AC_PROG_CC
AC_PROG_CPP
diff --git a/docs/reference/glib/building.sgml b/docs/reference/glib/building.sgml
index 0274f3d18..72c82b344 100644
--- a/docs/reference/glib/building.sgml
+++ b/docs/reference/glib/building.sgml
@@ -234,6 +234,9 @@ How to compile GLib itself
--disable-selinux
--enable-selinux
+
+ --with-runtime-libdir=RELPATH
+
@@ -555,6 +558,24 @@ How to compile GLib itself
be included.
+
+
+ --with-runtime-libdir=RELPATH
+
+
+ Allows specifying a relative path to where to install the runtime
+ libraries (meaning library files used for running, not developing,
+ GLib applications). This can be used in operating system setups where
+ programs using GLib needs to run before e.g. /usr
+ is mounted.
+ For example, if LIBDIR is /usr/lib and
+ ../../lib is passed to
+ --with-runtime-libdir then the
+ runtime libraries are installed into /lib rather
+ than /usr/lib.
+
+
+
diff --git a/docs/reference/glib/tmpl/fileutils.sgml b/docs/reference/glib/tmpl/fileutils.sgml
index 0b9ef6c74..eeef84c48 100644
--- a/docs/reference/glib/tmpl/fileutils.sgml
+++ b/docs/reference/glib/tmpl/fileutils.sgml
@@ -294,6 +294,23 @@ not be accessed directly.
@Returns:
+
+
+
+
+
+@file:
+@Returns:
+
+
+
+
+
+
+
+@file:
+
+
diff --git a/gio/Makefile.am b/gio/Makefile.am
index 3f8f18055..1376443bf 100644
--- a/gio/Makefile.am
+++ b/gio/Makefile.am
@@ -424,3 +424,12 @@ gioenumtypes.c: $(gio_headers) gioenumtypes.c.template
gio-2.0.lib: libgio-2.0.la gio.def
lib -machine:@LIB_EXE_MACHINE_FLAG@ -name:libgio-2.0-$(LT_CURRENT_MINUS_AGE).dll -def:gio.def -out:$@
+
+if HAVE_GLIB_RUNTIME_LIBDIR
+install-data-hook:
+ mkdir -p $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR)
+ mv $(DESTDIR)$(libdir)/libgio-2.0.so.0 $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR)
+ mv $(DESTDIR)$(libdir)/libgio-2.0.so.0.$(LT_CURRENT).0 $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR)
+ rm -f $(DESTDIR)$(libdir)/libgio-2.0.so
+ ln -s $(GLIB_RUNTIME_LIBDIR)/libgio-2.0.so.0.$(LT_CURRENT).0 $(DESTDIR)$(libdir)/libgio-2.0.so
+endif
diff --git a/glib/Makefile.am b/glib/Makefile.am
index eb220e66e..af0771654 100644
--- a/glib/Makefile.am
+++ b/glib/Makefile.am
@@ -364,3 +364,12 @@ dist-hook: $(BUILT_EXTRA_DIST)
for f in $$files; do \
if test -f $$f; then d=.; else d=$(srcdir); fi; \
cp $$d/$$f $(distdir) || exit 1; done
+
+if HAVE_GLIB_RUNTIME_LIBDIR
+install-data-hook:
+ mkdir -p $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR)
+ mv $(DESTDIR)$(libdir)/libglib-2.0.so.0 $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR)
+ mv $(DESTDIR)$(libdir)/libglib-2.0.so.0.$(LT_CURRENT).0 $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR)
+ rm -f $(DESTDIR)$(libdir)/libglib-2.0.so
+ ln -s $(GLIB_RUNTIME_LIBDIR)/libglib-2.0.so.0.$(LT_CURRENT).0 $(DESTDIR)$(libdir)/libglib-2.0.so
+endif
diff --git a/gmodule/Makefile.am b/gmodule/Makefile.am
index 80a5605b6..f0e63d1ab 100644
--- a/gmodule/Makefile.am
+++ b/gmodule/Makefile.am
@@ -116,3 +116,12 @@ dist-hook: $(BUILT_EXTRA_DIST)
install-data-local: install-ms-lib install-def-file
uninstall-local: uninstall-ms-lib uninstall-def-file
+
+if HAVE_GLIB_RUNTIME_LIBDIR
+install-data-hook:
+ mkdir -p $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR)
+ mv $(DESTDIR)$(libdir)/libgmodule-2.0.so.0 $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR)
+ mv $(DESTDIR)$(libdir)/libgmodule-2.0.so.0.$(LT_CURRENT).0 $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR)
+ rm -f $(DESTDIR)$(libdir)/libgmodule-2.0.so
+ ln -s $(GLIB_RUNTIME_LIBDIR)/libgmodule-2.0.so.0.$(LT_CURRENT).0 $(DESTDIR)$(libdir)/libgmodule-2.0.so
+endif
diff --git a/gobject/Makefile.am b/gobject/Makefile.am
index f8a7de4c1..ec27aa12d 100644
--- a/gobject/Makefile.am
+++ b/gobject/Makefile.am
@@ -260,3 +260,12 @@ distclean-local:
if test $(srcdir) = .; then :; else \
rm -f $(BUILT_EXTRA_DIST); \
fi
+
+if HAVE_GLIB_RUNTIME_LIBDIR
+install-data-hook:
+ mkdir -p $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR)
+ mv $(DESTDIR)$(libdir)/libgobject-2.0.so.0 $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR)
+ mv $(DESTDIR)$(libdir)/libgobject-2.0.so.0.$(LT_CURRENT).0 $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR)
+ rm -f $(DESTDIR)$(libdir)/libgobject-2.0.so
+ ln -s $(GLIB_RUNTIME_LIBDIR)/libgobject-2.0.so.0.$(LT_CURRENT).0 $(DESTDIR)$(libdir)/libgobject-2.0.so
+endif
diff --git a/gthread/Makefile.am b/gthread/Makefile.am
index a7b53cf58..a65c15f29 100644
--- a/gthread/Makefile.am
+++ b/gthread/Makefile.am
@@ -92,3 +92,11 @@ install-data-local: install-ms-lib install-def-file
uninstall-local: uninstall-ms-lib uninstall-def-file
+if HAVE_GLIB_RUNTIME_LIBDIR
+install-data-hook:
+ mkdir -p $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR)
+ mv $(DESTDIR)$(libdir)/libgthread-2.0.so.0 $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR)
+ mv $(DESTDIR)$(libdir)/libgthread-2.0.so.0.$(LT_CURRENT).0 $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR)
+ rm -f $(DESTDIR)$(libdir)/libgthread-2.0.so
+ ln -s $(GLIB_RUNTIME_LIBDIR)/libgthread-2.0.so.0.$(LT_CURRENT).0 $(DESTDIR)$(libdir)/libgthread-2.0.so
+endif