aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2010-01-08 05:11:37 -0500
committerMike Frysinger <vapier@gentoo.org>2010-01-08 05:11:37 -0500
commit8b3391ee4540c4ee139a29f077142e550c9bdb5b (patch)
tree3a1c1945df2fe5b4582f1c960e5bb52de9aaf534 /wrappers
parentcross-pkg-config: switch version checking to --atleast-pkgconfig-version (diff)
downloadcrossdev-8b3391ee4540c4ee139a29f077142e550c9bdb5b.tar.gz
crossdev-8b3391ee4540c4ee139a29f077142e550c9bdb5b.tar.bz2
crossdev-8b3391ee4540c4ee139a29f077142e550c9bdb5b.zip
cross-pkg-config: switch to PKG_CONFIG_SYSROOT_DIR (kind of)
The latest pkg-config supports PKG_CONFIG_SYSROOT_DIR which handles -L/-I munging on the fly, but it's slightly broken. So put all the pieces in place for the next upstream release and in the mean time, do the munging ourselves on the fly via sed. This way packages that want runtime paths compiled in don't get the build paths that were munged in the .pc file. URL: http://bugs.gentoo.org/299990 URL: https://bugs.freedesktop.org/show_bug.cgi?id=16905 Reported-by: Andrew Gaffney <agaffney@gentoo.org> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'wrappers')
-rwxr-xr-xwrappers/cross-fix-root9
-rwxr-xr-xwrappers/cross-pkg-config18
2 files changed, 17 insertions, 10 deletions
diff --git a/wrappers/cross-fix-root b/wrappers/cross-fix-root
index 234f2bb..97bb783 100755
--- a/wrappers/cross-fix-root
+++ b/wrappers/cross-fix-root
@@ -59,14 +59,7 @@ if [ -d "${LIBDIR}" ] ; then
-e "/^dependency_libs=/s: /usr/lib/: ${SYSROOT}/usr/lib/:g"
fi
-set --
-for d in "./${LIBDIR}/pkgconfig/" ./usr/share/pkgconfig/ ; do
- [ -d "$d" ] && set -- "$@" "${d}"
-done
-if [ $# -gt 0 ] ; then
- find "$@" -name '*.pc' -print0 | xargs -0 -r \
- sed -i -r -e "/^(exec_)?prefix=/s:=/usr\$:='${SYSROOT}/usr':"
-fi
+# we don't touch .pc files anymore as we require pkg-config 0.23+ and PKG_CONFIG_SYSROOT_DIR
if [ -d usr/bin ] ; then
find ./usr/bin/ -name '*-config' -print0 | xargs -0 -r \
diff --git a/wrappers/cross-pkg-config b/wrappers/cross-pkg-config
index 4622d41..d81266f 100755
--- a/wrappers/cross-pkg-config
+++ b/wrappers/cross-pkg-config
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 2008-2009 Gentoo Foundation
+# Copyright 2008-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
#
@@ -23,7 +23,7 @@ error() {
#
# Sanity/distro checks
#
-MIN_VER="0.20"
+MIN_VER="0.23" # needs PKG_CONFIG_SYSROOT_DIR
if ! pkg-config --atleast-pkgconfig-version ${MIN_VER} ; then
error pkg-config is too old ... upgrade to at least v${MIN_VER}
fi
@@ -79,6 +79,12 @@ export PKG_CONFIG_LIBDIR="${SYSROOT}/usr/lib/pkgconfig:${SYSROOT}/usr/share/pkgc
if [ -n "${EXTRA_PKG_CONFIG_LIBDIR}" ] ; then
PKG_CONFIG_LIBDIR="${EXTRA_PKG_CONFIG_LIBDIR}:${PKG_CONFIG_LIBDIR}"
fi
+#
+# This guy is horribly broken in pkg-config <=0.23:
+# https://bugs.freedesktop.org/show_bug.cgi?id=16905
+#
+#export PKG_CONFIG_SYSROOT_DIR="${SYSROOT}"
+unset PKG_CONFIG_SYSROOT_DIR
#
# Sanity check the output to catch common errors that do not
@@ -86,6 +92,14 @@ fi
#
output=$(pkg-config "$@")
ret=$?
+
+#
+# Inject PKG_CONFIG_SYSROOT_DIR ourselves until pkg-config is fixed.
+# We can't mung the .pc files as some of the vars are used at compile
+# time to encode runtime paths.
+#
+output=$(echo "${output}" | sed -e 's:\(-[IL][[:space:]]*\)\(/usr\):\1'"${SYSROOT}"'\2:g')
+
case " ${output} " in
*" -L/usr/lib "*|*" -L/usr/local/lib "*|\
*" -L /usr/lib "*|*" -L /usr/local/lib "*|\