[OE-core] [jethro][PATCH] sdk: arm toolchain patch for multilib
Richard Purdie
richard.purdie at linuxfoundation.org
Tue Mar 14 07:31:54 UTC 2017
On Wed, 2017-03-15 at 00:00 +0800, zhengrq wrote:
> 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 at windriver.com>
> Signed-off-by: Lei Maohui <leimaohui at cn.fujitsu.com>
> Signed-off-by: Zheng Ruoqin <zhengrq.fnst at cn.fujitsu.com>
I'm not seeing any patch in master which sets GNUEABI_SUFFIX unless I'm
missing something?
Which patch are you backporting to jethro here?
Don't you really want http://git.yoctoproject.org/cgit.cgi/poky/commit/
?id=b6253350fb86d8e54792905342a5892af570d526 ?
and perhaps you mean #8642 or #10054?
Cheers,
Richard
> meta/classes/cross-canadian.bbclass | 3 +++
> meta/recipes-devtools/gcc/libgcc-common.inc | 25 ++++++++++++++++++-
> ------
> meta/recipes-devtools/gcc/libgcc.inc | 2 +-
> 3 files changed, 22 insertions(+), 8 deletions(-)
>
> diff --git a/meta/classes/cross-canadian.bbclass
> b/meta/classes/cross-canadian.bbclass
> index ea17f09..458185d 100644
> --- a/meta/classes/cross-canadian.bbclass
> +++ b/meta/classes/cross-canadian.bbclass
> @@ -18,6 +18,7 @@ PACKAGE_ARCH = "${SDK_ARCH}-${SDKPKGSUFFIX}"
> CANADIANEXTRAOS = "linux-uclibc linux-musl"
> CANADIANEXTRAVENDOR = ""
> MODIFYTOS ??= "1"
> +GNUEABI_SUFFIX = ""
> python () {
> archs = d.getVar('PACKAGE_ARCHS', True).split()
> sdkarchs = []
> @@ -69,6 +70,7 @@ python () {
> d.appendVar("CANADIANEXTRAOS", " linux-gnun32 linux-
> uclibcn32 linux-musln32")
> if tarch == "arm" or tarch == "armeb":
> d.setVar("TARGET_OS", "linux-gnueabi")
> + d.setVar("GNUEABI_SUFFIX", "-gnueabi")
> else:
> d.setVar("TARGET_OS", "linux")
>
> @@ -167,6 +169,7 @@ SHLIBSWORKDIR = "${PKGDATA_DIR}/nativesdk-
> shlibs2"
> cross_canadian_bindirlinks () {
> for i in linux ${CANADIANEXTRAOS}
> do
> + i="$i${GNUEABI_SUFFIX}"
> for v in ${CANADIANEXTRAVENDOR}
> do
> d=${D}${bindir}/../${TARGET_ARCH}$v-$i
> diff --git a/meta/recipes-devtools/gcc/libgcc-common.inc
> b/meta/recipes-devtools/gcc/libgcc-common.inc
> index b09ea65..46f8cfd 100644
> --- a/meta/recipes-devtools/gcc/libgcc-common.inc
> +++ b/meta/recipes-devtools/gcc/libgcc-common.inc
> @@ -134,11 +134,22 @@ 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)
> }
> +
> diff --git a/meta/recipes-devtools/gcc/libgcc.inc b/meta/recipes-
> devtools/gcc/libgcc.inc
> index 95fa3f4..f6a0a8c 100644
> --- a/meta/recipes-devtools/gcc/libgcc.inc
> +++ b/meta/recipes-devtools/gcc/libgcc.inc
> @@ -17,7 +17,7 @@ LICENSE_${PN}-dbg = "GPL-3.0-with-GCC-exception"
>
> FILES_${PN}-dev = "\
> ${base_libdir}/libgcc*.so \
> - ${@base_conditional('BASETARGET_SYS', '${TARGET_SYS}', '',
> '${libdir}/${BASETARGET_SYS}', d)} \
> + ${@base_conditional('BASETARGET_SYS', '${TARGET_SYS}', '',
> '${libdir}/${BASETARGET_SYS}*', d)} \
> ${libdir}/${TARGET_SYS}/${BINV}* \
> "
>
> --
> 2.7.4
>
>
>
More information about the Openembedded-core
mailing list