aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2015-07-31 11:28:22 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-07-31 15:15:12 +0100
commit89cd6c244b6bc0a8cb52ec84d378d5b305df030f (patch)
tree699a7a5cd144c11511e0a3dbcbc5d9fef8e4c984
parente742eef3e1016a29f744341c17d1b421d318b40f (diff)
downloadopenembedded-core-contrib-89cd6c244b6bc0a8cb52ec84d378d5b305df030f.tar.gz
libgcc: Fix symlink handling in cross-arch multilib cases
The symlink being generated needs to match both the current arch (e.g. mips or mips64) but also use the underlying TARGET_SYS without multilib extensions to TARGET_VENDOR or extensions to TARGET_OS. The way multilib changes TARGET_VENDOR meant this code did not have a way of removing that change. The method of removing some TARGET_OS suffixes was also not working. By using immediate expansion to run this code, we can run before the multilib code changes it and get the original values. We then use the *current* TARGET_ARCH value in case this does get changed by the multilib since we need to point at the right compiler (32 bit one for 32 bit code). Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/recipes-devtools/gcc/libgcc-common.inc26
-rw-r--r--meta/recipes-devtools/gcc/libgcc.inc2
2 files changed, 14 insertions, 14 deletions
diff --git a/meta/recipes-devtools/gcc/libgcc-common.inc b/meta/recipes-devtools/gcc/libgcc-common.inc
index 3101762b02..22da03b4c0 100644
--- a/meta/recipes-devtools/gcc/libgcc-common.inc
+++ b/meta/recipes-devtools/gcc/libgcc-common.inc
@@ -116,23 +116,23 @@ fakeroot python do_multilib_install() {
os.symlink(src, dest)
}
+def get_original_vendoros(d):
+ vendoros = d.expand('${TARGET_VENDOR}-${TARGET_OS}')
+ for suffix in [d.getVar('ABIEXTENSION', True), d.getVar('LIBCEXTENSION', True)]:
+ if suffix and vendoros.endswith(suffix):
+ vendoros = vendoros[:-len(suffix)]
+ return vendoros
+
+ORIG_TARGET_VENDOROS := "${@get_original_vendoros(d)}"
+BASETARGET_SYS = "${TARGET_ARCH}${ORIG_TARGET_VENDOROS}"
+
addtask extra_symlinks after do_multilib_install before do_package do_populate_sysroot
fakeroot python do_extra_symlinks() {
- targetsysnoext = d.getVar('TARGET_SYS_NO_EXTENSION', True)
+ targetsys = d.getVar('BASETARGET_SYS', True)
- if targetsysnoext != d.getVar('TARGET_SYS', True):
- dest = d.getVar('D', True) + d.getVar('libdir', True) + '/' + targetsysnoext
+ if targetsys != d.getVar('TARGET_SYS', True):
+ dest = d.getVar('D', True) + d.getVar('libdir', True) + '/' + targetsys
src = d.getVar('TARGET_SYS', True)
if not os.path.lexists(dest) and os.path.lexists(d.getVar('D', True) + d.getVar('libdir', True)):
os.symlink(src, dest)
}
-
-python () {
- targetsysnoext = d.getVar('TARGET_SYS', True)
-
- for suffix in [d.getVar('ABIEXTENSION', True), d.getVar('LIBCEXTENSION', True)]:
- if suffix and targetsysnoext.endswith(suffix):
- targetsysnoext = targetsysnoext[:-len(suffix)]
-
- d.setVar('TARGET_SYS_NO_EXTENSION', targetsysnoext)
-}
diff --git a/meta/recipes-devtools/gcc/libgcc.inc b/meta/recipes-devtools/gcc/libgcc.inc
index 35432c793e..739adbd968 100644
--- a/meta/recipes-devtools/gcc/libgcc.inc
+++ b/meta/recipes-devtools/gcc/libgcc.inc
@@ -24,7 +24,7 @@ FILES_${PN}-dev = "\
${libdir}/${TARGET_SYS}/${BINV}/x32 \
${libdir}/${TARGET_SYS}/${BINV}/n32 \
${libdir}/${TARGET_SYS}/${BINV}/libgcc* \
- ${@base_conditional('TARGET_SYS_NO_EXTENSION', '${TARGET_SYS}', '', '${libdir}/${TARGET_SYS_NO_EXTENSION}', d)} \
+ ${@base_conditional('BASETARGET_SYS', '${TARGET_SYS}', '', '${libdir}/${BASETARGET_SYS}', d)} \
${libdir}/${TARGET_SYS}/${BINV}/libgcov.a \
"