summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2017-03-03 13:37:04 +0000
committerSimon McVittie <smcv@debian.org>2017-03-20 14:37:27 +0000
commit30497f854b8a108139a490ce2898323521dd5f2a (patch)
tree403ed620e64a5cbdc3597bb02590ef23eecf8752
parentd160c1a71acc157613a5fc4e1ff315d1607f66ff (diff)
autotools: Allow relocatable pkg-config metadata on an opt-in basis
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=99721 Reviewed-by: Ralf Habacker <ralf.habacker@freenet.de> Signed-off-by: Simon McVittie <smcv@collabora.com>
-rw-r--r--configure.ac42
1 files changed, 39 insertions, 3 deletions
diff --git a/configure.ac b/configure.ac
index 32c8e859..160e4516 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1530,9 +1530,6 @@ AS_AC_EXPAND(EXPANDED_LIBDIR, "$libdir")
AS_AC_EXPAND(EXPANDED_LIBEXECDIR, "$libexecdir")
AS_AC_EXPAND(EXPANDED_DATADIR, "$datadir")
-# For the moment we don't support relocation when building with Autotools
-AC_SUBST([pkgconfig_prefix], ['${original_prefix}'])
-
#### Check our operating system
operating_system=unknown
if test -f /etc/redhat-release || test -f $EXPANDED_SYSCONFDIR/redhat-release ; then
@@ -1694,6 +1691,45 @@ DBUS_LIBEXECDIR="$EXPANDED_LIBEXECDIR"
AC_SUBST(DBUS_LIBEXECDIR)
AC_DEFINE_UNQUOTED(DBUS_LIBEXECDIR,"$DBUS_LIBEXECDIR", [Directory for installing the libexec binaries])
+AC_ARG_ENABLE([relocation],
+ [AS_HELP_STRING([--enable-relocation[=yes/no/auto]],
+ [Make pkg-config metadata relocatable [default=auto]])],
+ [], [enable_relocation=auto])
+
+can_relocate=yes
+
+AS_CASE(["${exec_prefix}"],
+ ['NONE'|'${prefix}'],
+ [:],
+ [*],
+ [can_relocate=no])
+
+AS_CASE(["${libdir}"],
+ ['${prefix}/lib'|'${prefix}/lib64'|'${exec_prefix}/lib'|'${exec_prefix}/lib64'],
+ [:],
+ [*],
+ [can_relocate=no])
+
+# If the user said --enable-relocation but we can't do it, error out
+AS_IF([test "x$can_relocate" = xno && test "x$enable_relocation" = xyes],
+ [AC_MSG_ERROR([Relocatable pkg-config metadata requires --exec-prefix='\${prefix}' and the default libdir])])
+
+# By default, on Windows we are relocatable if possible
+AS_IF([test "x$enable_relocation" = xauto && test "x$dbus_win" = xyes],
+ [enable_relocation="$can_relocate"])
+
+# By default, on non-Windows we are not relocatable because it can interfere
+# with pkg-config's ability to filter out system include directories,
+# resulting in linking an outdated system-wide library in preference to a
+# newer version installed elsewhere
+AS_IF([test "x$enable_relocation" = xauto],
+ [enable_relocation="no"])
+
+
+AS_IF([test "x$enable_relocation" = xyes],
+ [AC_SUBST([pkgconfig_prefix], ['${pcfiledir}/../../'])],
+ [AC_SUBST([pkgconfig_prefix], ['${original_prefix}'])])
+
#### Directory to source sysconfdir configuration from
# On Windows this is relative to where we put the bus setup, in