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: b6253350fb86d8e54792905342a5892af570d526)

Signed-off-by: Richard Purdie <richard.pur...@linuxfoundation.org>
Signed-off-by: Zheng Ruoqin <zhengrq.f...@cn.fujitsu.com>
---
 meta/classes/cross-canadian.bbclass         |  1 +
 meta/recipes-devtools/gcc/libgcc-common.inc | 11 +++++++----
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/meta/classes/cross-canadian.bbclass 
b/meta/classes/cross-canadian.bbclass
index ea17f09..f60d728 100644
--- a/meta/classes/cross-canadian.bbclass
+++ b/meta/classes/cross-canadian.bbclass
@@ -68,6 +68,7 @@ python () {
     elif tarch == "mips64":
         d.appendVar("CANADIANEXTRAOS", " linux-gnun32 linux-uclibcn32 
linux-musln32")
     if tarch == "arm" or tarch == "armeb":
+        d.appendVar("CANADIANEXTRAOS", " linux-gnueabi linux-musleabi 
linux-uclibceabi")
         d.setVar("TARGET_OS", "linux-gnueabi")
     else:
         d.setVar("TARGET_OS", "linux")
diff --git a/meta/recipes-devtools/gcc/libgcc-common.inc 
b/meta/recipes-devtools/gcc/libgcc-common.inc
index b09ea65..f3de9e9 100644
--- a/meta/recipes-devtools/gcc/libgcc-common.inc
+++ b/meta/recipes-devtools/gcc/libgcc-common.inc
@@ -122,15 +122,18 @@ fakeroot python do_multilib_install() {
         os.symlink(src, dest)
 }
 
-def get_original_vendoros(d):
-    vendoros = d.expand('${TARGET_VENDOR}-${TARGET_OS}')
+def get_original_os(d):
+    vendoros = d.expand('${TARGET_ARCH}${ORIG_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)]
+    # Arm must use linux-gnueabi not linux as only the former is accepted by 
gcc
+    if vendoros.startswith("arm-") and not vendoros.endswith("-gnueabi"):
+        vendoros = vendoros + "-gnueabi"
     return vendoros
 
-ORIG_TARGET_VENDOROS := "${@get_original_vendoros(d)}"
-BASETARGET_SYS = "${TARGET_ARCH}${ORIG_TARGET_VENDOROS}"
+ORIG_TARGET_VENDOR := "${TARGET_VENDOR}"
+BASETARGET_SYS = "${@get_original_os(d)}"
 
 addtask extra_symlinks after do_multilib_install before do_package 
do_populate_sysroot
 fakeroot python do_extra_symlinks() {
-- 
2.7.4



-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to