diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-09-28 15:59:34 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-09-30 16:51:15 +0100 |
commit | b6253350fb86d8e54792905342a5892af570d526 (patch) | |
tree | c678c28bb301380d6c14c25cdc769515cc3f0603 /meta/recipes-devtools/gcc/libgcc-common.inc | |
parent | e0e8cd039cc760b6eb24a6d52e7d7bf09aef0abc (diff) | |
download | poky-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/recipes-devtools/gcc/libgcc-common.inc')
-rw-r--r-- | meta/recipes-devtools/gcc/libgcc-common.inc | 11 |
1 files changed, 7 insertions, 4 deletions
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 | ||
126 | def get_original_vendoros(d): | 126 | def 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 | ||
133 | ORIG_TARGET_VENDOROS := "${@get_original_vendoros(d)}" | 136 | ORIG_TARGET_VENDOR := "${TARGET_VENDOR}" |
134 | BASETARGET_SYS = "${TARGET_ARCH}${ORIG_TARGET_VENDOROS}" | 137 | BASETARGET_SYS = "${@get_original_os(d)}" |
135 | 138 | ||
136 | addtask extra_symlinks after do_multilib_install before do_package do_populate_sysroot | 139 | addtask extra_symlinks after do_multilib_install before do_package do_populate_sysroot |
137 | fakeroot python do_extra_symlinks() { | 140 | fakeroot python do_extra_symlinks() { |