aboutsummaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/gcc/libgcc-common.inc
diff options
context:
space:
mode:
authorRobert Yang <liezhi.yang@windriver.com>2015-11-04 00:42:30 -0800
committerRobert Yang <liezhi.yang@windriver.com>2015-11-04 17:46:14 -0800
commitab4bf4dca902aa8719c096849439d85478821455 (patch)
tree8c1bca093dbb21eee06913df09fefe5f8ac00957 /meta/recipes-devtools/gcc/libgcc-common.inc
parente44ed8c18e395b9c055aefee113b90708e8a8a2f (diff)
downloadopenembedded-core-contrib-rbt/aarch64_lib32.tar.gz
cross-canadian/libgcc: fix aarch64's multilib SDKrbt/aarch64_lib32
The arm toolchain has a "-gnueabi" suffix, but aarch64 doesn't, this makes multilib sdk doesn't work, for example: MACHINE = qemuarm64 require conf/multilib.conf MULTILIBS = "multilib:lib32" DEFAULTTUNE_virtclass-multilib-lib32 = "armv7at-neon" $ bitbake core-image-minimal -cpopulate_sdk Then extract SDK, the environment-setup-armv7a-vfp-neon-pokymllib32-linux-gnueabi doesn't work since: * The CC is arm-pokymllib32-linux-gnueabi-gcc which doesn't exist, the patch for cross-canadian.bbclass fixes problem. * Need aarch64-poky-linux/usr/lib/arm-poky-linux-linux-gnueabi which doesn't exist, the patch for libgcc-common.inc fixes the problem. [YOCTO #8616] Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Diffstat (limited to 'meta/recipes-devtools/gcc/libgcc-common.inc')
-rw-r--r--meta/recipes-devtools/gcc/libgcc-common.inc24
1 files changed, 17 insertions, 7 deletions
diff --git a/meta/recipes-devtools/gcc/libgcc-common.inc b/meta/recipes-devtools/gcc/libgcc-common.inc
index b09ea657e7..71e09d84f8 100644
--- a/meta/recipes-devtools/gcc/libgcc-common.inc
+++ b/meta/recipes-devtools/gcc/libgcc-common.inc
@@ -134,11 +134,21 @@ 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() {
- targetsys = d.getVar('BASETARGET_SYS', True)
-
- 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)
+ base_targetsys = d.getVar('BASETARGET_SYS', True)
+ targetsys = d.getVar('TARGET_SYS', True)
+
+ if base_targetsys != targetsys:
+ dest = d.getVar('D', True) + d.getVar('libdir', True) + '/' + base_targetsys
+ dest_list = [dest]
+ # For multilib like aarch64 + arm, need 2 symlinks:
+ # 1) BASETARGET_SYS as usual
+ # 2) BASETARGET_SYS + "-gnueabi" for multilib
+ libce = d.getVar('LIBCEXTENSION', True)
+ abie = d.getVar('ABIEXTENSION', True)
+ if abie and libce and targetsys.endswith(libce + abie):
+ dest_list.append(dest + libce + abie)
+ src = targetsys
+ for dir in dest_list:
+ if not os.path.lexists(dir) and os.path.lexists(d.getVar('D', True) + d.getVar('libdir', True)):
+ os.symlink(src, dir)
}