summaryrefslogtreecommitdiffstats
path: root/meta
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2016-09-28 15:59:34 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-09-30 16:51:15 +0100
commitb6253350fb86d8e54792905342a5892af570d526 (patch)
treec678c28bb301380d6c14c25cdc769515cc3f0603 /meta
parente0e8cd039cc760b6eb24a6d52e7d7bf09aef0abc (diff)
downloadpoky-b6253350fb86d8e54792905342a5892af570d526.tar.gz
cross-canadian/libgcc-common: Fixes for arm multilib
Arm is unusual in that we force it to "linux-gnueabi" and "linux" doesn't build. This was causing problems for multilib configurations which were assuming "linux" was the default compiler rather than linux-gnueabi. This change does two things, ensures symlinks are generated for linux-gnueabi and also adapts the libgcc code to account for the difference on arm. It still needs to immediately expand/save TARGET_VENDOR but we defer deciding what TARGET_OS should be until we know TARGET_ARCH (which the multilib code may change). [YOCTO #8642] Note that sanity tests of a 32 bit arm multilib still break due to issues with the kernel headers on a mixed bit system. This looks to be a general headers issue for the platform though and a different type of bug. (From OE-Core rev: bcddc3e7eff138add031bc9c9728be5a42fa62ef) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r--meta/classes/cross-canadian.bbclass2
-rw-r--r--meta/recipes-devtools/gcc/libgcc-common.inc11
2 files changed, 8 insertions, 5 deletions
diff --git a/meta/classes/cross-canadian.bbclass b/meta/classes/cross-canadian.bbclass
index 099c0daf42..21921b3dd0 100644
--- a/meta/classes/cross-canadian.bbclass
+++ b/meta/classes/cross-canadian.bbclass
@@ -80,7 +80,7 @@ python () {
80 for extraos in d.getVar("BASECANADIANEXTRAOS", True).split(): 80 for extraos in d.getVar("BASECANADIANEXTRAOS", True).split():
81 d.appendVar("CANADIANEXTRAOS", " " + extraos + "n32") 81 d.appendVar("CANADIANEXTRAOS", " " + extraos + "n32")
82 if tarch == "arm" or tarch == "armeb": 82 if tarch == "arm" or tarch == "armeb":
83 d.appendVar("CANADIANEXTRAOS", " linux-musleabi linux-uclibceabi") 83 d.appendVar("CANADIANEXTRAOS", " linux-gnueabi linux-musleabi linux-uclibceabi")
84 d.setVar("TARGET_OS", "linux-gnueabi") 84 d.setVar("TARGET_OS", "linux-gnueabi")
85 else: 85 else:
86 d.setVar("TARGET_OS", "linux") 86 d.setVar("TARGET_OS", "linux")
diff --git a/meta/recipes-devtools/gcc/libgcc-common.inc b/meta/recipes-devtools/gcc/libgcc-common.inc
index 4e4f0fd03b..1549eb4b62 100644
--- a/meta/recipes-devtools/gcc/libgcc-common.inc
+++ b/meta/recipes-devtools/gcc/libgcc-common.inc
@@ -123,15 +123,18 @@ fakeroot python do_multilib_install() {
123 os.symlink(src, dest) 123 os.symlink(src, dest)
124} 124}
125 125
126def get_original_vendoros(d): 126def get_original_os(d):
127 vendoros = d.expand('${TARGET_VENDOR}-${TARGET_OS}') 127 vendoros = d.expand('${TARGET_ARCH}${ORIG_TARGET_VENDOR}-${TARGET_OS}')
128 for suffix in [d.getVar('ABIEXTENSION', True), d.getVar('LIBCEXTENSION', True)]: 128 for suffix in [d.getVar('ABIEXTENSION', True), d.getVar('LIBCEXTENSION', True)]:
129 if suffix and vendoros.endswith(suffix): 129 if suffix and vendoros.endswith(suffix):
130 vendoros = vendoros[:-len(suffix)] 130 vendoros = vendoros[:-len(suffix)]
131 # Arm must use linux-gnueabi not linux as only the former is accepted by gcc
132 if vendoros.startswith("arm-") and not vendoros.endswith("-gnueabi"):
133 vendoros = vendoros + "-gnueabi"
131 return vendoros 134 return vendoros
132 135
133ORIG_TARGET_VENDOROS := "${@get_original_vendoros(d)}" 136ORIG_TARGET_VENDOR := "${TARGET_VENDOR}"
134BASETARGET_SYS = "${TARGET_ARCH}${ORIG_TARGET_VENDOROS}" 137BASETARGET_SYS = "${@get_original_os(d)}"
135 138
136addtask extra_symlinks after do_multilib_install before do_package do_populate_sysroot 139addtask extra_symlinks after do_multilib_install before do_package do_populate_sysroot
137fakeroot python do_extra_symlinks() { 140fakeroot python do_extra_symlinks() {