]> git.ipfire.org Git - thirdparty/dbus.git/commitdiff
autotools: Allow relocatable pkg-config metadata on an opt-in basis
authorSimon McVittie <simon.mcvittie@collabora.co.uk>
Fri, 3 Mar 2017 13:37:04 +0000 (13:37 +0000)
committerSimon McVittie <smcv@debian.org>
Mon, 20 Mar 2017 14:37:27 +0000 (14:37 +0000)
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>
configure.ac

index 32c8e8597fec783cec6fd9c7d647a44a99c28a4d..160e4516553dd0dc5e746ba8c8ac51875750e423 100644 (file)
@@ -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