[OE-core] [PATCH 5/5] WIP: feature-arm-thumb.inc: respect ARM_INSTRUCTION_SET when adding thumb suffix

Martin Jansa martin.jansa at gmail.com
Fri Apr 25 16:40:30 UTC 2014


* this means that recipes with ARM_INSTRUCTION_SET explicitly changed
  to arm will be built in feed without thumb suffix
* It looks like the rest of system doesn't correctly support different
  TUNE_PKGARCHs for different recipes (e.g. eglibc-initial fails)
  so this needs a bit more work

  config.log:
  configure:2768: arm-oe-linux-gnueabi-gcc  -march=armv5e -marm -mthumb-interwork --sysroot=/OE/build/oe-core/tmp-eglibc/sysroots/qemuarm -c  -O2 -pipe -g -feliminate-unused-debug-types  conftest.c >&5
  /OE/build/oe-core/tmp-eglibc/work/armv5e-oe-linux-gnueabi/eglibc-initial/2.18-r0/eglibc-2.18/libc/configure: line 2770: arm-oe-linux-gnueabi-gcc: command not found
  configure:2772: $? = 127

  and the problem is basically that STAGING_BINDIR_TOOLCHAIN points to
  different directory when building recipe with thumb enabled and
  disabled, in this case gcc was built with thumb enabled and is installed
  in:

  sysroots/x86_64-linux/usr/bin/armv5te-oe-linux-gnueabi

  OE qemuarm@ ~/build/oe-core $ ls /OE/build/oe-core/tmp-eglibc/sysroots/x86_64-linux/usr/bin/armv5te-oe-linux-gnueabi
  arm-oe-linux-gnueabi-addr2line  arm-oe-linux-gnueabi-elfedit
  arm-oe-linux-gnueabi-nm       arm-oe-linux-gnueabi-readelf
  arm-oe-linux-gnueabi-ar         arm-oe-linux-gnueabi-gprof
  arm-oe-linux-gnueabi-objcopy  arm-oe-linux-gnueabi-size
  arm-oe-linux-gnueabi-as         arm-oe-linux-gnueabi-ld
  arm-oe-linux-gnueabi-objdump  arm-oe-linux-gnueabi-strings
  arm-oe-linux-gnueabi-c++filt    arm-oe-linux-gnueabi-ld.bfd
  arm-oe-linux-gnueabi-ranlib   arm-oe-linux-gnueabi-strip

  but when building eglibc-initial with thumb disalbed, TUNE_PKGARCH
  becames armv5e and STAGING_BINDIR_TOOLCHAIN in PATH points to wrong dir:

  $STAGING_BINDIR_TOOLCHAIN
    set conf/bitbake.conf:354
     "${STAGING_DIR_NATIVE}${bindir_native}/${TUNE_PKGARCH}${TARGET_VENDOR}-${TARGET_OS}"
  STAGING_BINDIR_TOOLCHAIN="/OE/build/oe-core/tmp-eglibc/sysroots/x86_64-linux/usr/bin/armv5e-oe-linux-gnueabi"

  OE qemuarm@ ~/build/oe-core $ ls /OE/build/oe-core/tmp-eglibc/sysroots/x86_64-linux/usr/bin/armv5e-oe-linux-gnueabi
  ls: cannot access /OE/build/oe-core/tmp-eglibc/sysroots/x86_64-linux/usr/bin/armv5e-oe-linux-gnueabi: No such file or directory

Signed-off-by: Martin Jansa <Martin.Jansa at gmail.com>
---
 meta/conf/machine/include/arm/feature-arm-thumb.inc | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/meta/conf/machine/include/arm/feature-arm-thumb.inc b/meta/conf/machine/include/arm/feature-arm-thumb.inc
index 8a38665..6c5d1d6 100644
--- a/meta/conf/machine/include/arm/feature-arm-thumb.inc
+++ b/meta/conf/machine/include/arm/feature-arm-thumb.inc
@@ -28,7 +28,8 @@ python () {
 TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'thumb', ' -m${ARM_M_OPT}', '', d)}"
 OVERRIDES .= "${@bb.utils.contains('TUNE_FEATURES', 'thumb', ':thumb', '', d)}"
 
-ARMPKGSFX_THUMB .= "${ARM_THUMB_SUFFIX}"
+# Add suffix from ARM_THUMB_SUFFIX only if after all this we still set ARM_M_OPT to thumb
+ARMPKGSFX_THUMB .= "${@ d.getVar('ARM_THUMB_SUFFIX', True) if d.getVar('ARM_M_OPT', True) == 'thumb' else ''}"
 
 # Whether to compile with code to allow interworking between the two
 # instruction sets. This allows thumb code to be executed on a primarily
-- 
1.9.1




More information about the Openembedded-core mailing list