[yocto] SH4 build failure fix

Khem Raj raj.khem at gmail.com
Wed Nov 23 09:26:40 PST 2011


On Wed, Nov 23, 2011 at 9:19 AM, Michael E Brown
<Michael_E_Brown at dell.com> wrote:
> On Tue, 2011-11-22 at 17:53 -0600, Khem Raj wrote:
>> On Thu, Nov 10, 2011 at 2:36 PM,  <Michael_E_Brown at dell.com> wrote:
>> >
>> > I'm presently working on porting the build environment for three existing embedded projects over to use yocto. Unfortunately, the project which has to go first is based on an SH4 chip, which isn't on the officially supported yocto architecture list. I gave the compile a go, and ran into a build error in gcc-cross-intermediate:
>> >
>> > build-edison-sh4/tmp/sysroots/i686-linux/usr/bin/sh4-poky-linux/sh4-poky-linux-ld: cannot find crti.o: No such file or directory
>> > build-edison-sh4/tmp/sysroots/i686-linux/usr/bin/sh4-poky-linux/sh4-poky-linux-ld: cannot find -lc
>> > build-edison-sh4/tmp/sysroots/i686-linux/usr/bin/sh4-poky-linux/sh4-poky-linux-ld: cannot find crtn.o: No such file or directory
>> >
>> > Trying to figure out the source of this build error, I found that base openembedded does compile this package successfully, so I started focusing on the differences. I narrowed the build failure down to this line in gcc-cross4.inc, which is present in openembedded, but absent in yocto/poky:
>> >    gcc-cross4.inc
>> >    EXTRA_OECONF_append_sh4 = " --with-multilib-list= --enable-incomplete-targets "
>> >
>> > After I added this one line, I was able to sucessfully build a base yocto image for qemu sh4. Is it possible to get this added to the upstream yocto build?
>>
>> there is much more than just building toolchain. You need to make sure
>> that kernel is configured properly too and last time I remember doing
>> it in oe.dev I needed some patches on vanilla
>> kernel that may have changed now. I think adding SH4 to meta-oe can be
>> considered if you post
>> patches for that layer. Then the question remains where the remaining
>> machine support goes. It can be a new layer for secondary qemu
>> architectures.
>
> I am porting a build from a pre-existing build system where I already
> have full working rootfs and kernel, so porting our kernel is slightly
> lower on the priority list than getting userland up and running. I'll be
> working on kernel in a couple weeks, though I may get an sh4 qemu kernel
> building in the meantime. If I get that going, I'll send patches, but I
> would like to see the oe-core/yocto fixed up to build sh4 properly.
>
> There are a total of 3 packages that require fixes to get all the
> userspace packages building, and one fix to qemu to restore building sh4
> binaries. In addition to the already posted gcc fixes:
>
> 1) libatomics needs to be upgraded to the latest, 7.2alpha6 for sh4
> fixes. This upgrade is simply renaming the file and removing the
> already-applied patches.
>
> 2) libart: the sh4 art_config.h was dropped in oe-core. Simply copy over
> from oe.

post patches for above two. Layered architecture of OE facilitates maintaining
other architectures easily enough. If there are common fixes needed send them to
oe-core otherwise meta-oe can carry some of fixes if you keep them uptodate
if they go stale they may be then left out.

>
> --
> Michael
>
>
>
>



More information about the yocto mailing list