[OE-core] meta-toolchain type SDK containing external toolchain possible?

Mark Hatle mark.hatle at windriver.com
Thu Jul 19 21:21:31 UTC 2012


On 7/19/12 3:13 PM, Manuel Bessler wrote:
> Hi all,
>
> I'm using a vendor-supplied external (pre-built) toolchain in my build
> (poky-denzil).
> Is it possible to setup my toolchain such that it will be part of the
> SDK package instead of the default {gcc,binutils}-cross-canadian?

It is possible, but the external toolchain needs to be provided via a 
crosssdk/cross-canadian binary.  The external-csl-toolchain.bb can be used as a 
model for how to do this.

PREFERRED_PROVIDER and similar may also be needed to ensure you get the correct 
version, and not rebuilt from source versions.

> I'm modeling my SDK after the meta-toolchain type SDK.
>
> Right now when I build my image, all target code is built using my
> pre-built external toolchain,
> but when I 'bitbake <mysdk>', the toolchain built and distributed in
> the SDK tarball is one built by bitbake.
>
> That, in effect, makes my SDK unusable as the toolchain inside is
> based on a different GCC/Binutils versions.
>
>  From my digging around in the recipes and classes, I think if I could
> somehow make my toolchain
> look like it provides gcc-cross-canadian and binutils-cross-canadian,
> it might work. However I'm not
> quite sure what I need to set to make this happen.
>
> I tried to add this to conf/distro/include/tcmode-external-xxx.inc in my layer:
> PREFERRED_PROVIDER_gcc-cross-canadian-${TRANSLATED_TARGET_ARCH} =
> "external-xxx-toolchain"
> PREFERRED_PROVIDER_binutils-cross-canadian-${TRANSLATED_TARGET_ARCH} =
> "external-xxx-toolchain"

For my stuff I did;

PREFERRED_PROVIDER_binutils-cross-canadian-${TRANSLATED_TARGET_ARCH} = 
"external-csl-toolchain-cross-canadian-${TRANSLATED_TARGET_ARCH}"

PREFERRED_PROVIDER_gcc-cross-canadian-${TRANSLATED_TARGET_ARCH} = 
"external-csl-toolchain-cross-canadian-${TRANSLATED_TARGET_ARCH}"

PREFERRED_PROVIDER_gdb-cross-canadian-${TRANSLATED_TARGET_ARCH} = 
"external-csl-toolchain-cross-canadian-${TRANSLATED_TARGET_ARCH}"


> That alone did not change anything.
>
> Then I tried adding the following to
> recipes-core/meta/external-xxx-toolchain_4.5.3.bb in my layer:
> PROVIDES += " gcc-cross-canadian-${TRANSLATED_TARGET_ARCH} "
> PROVIDES += " binutils-cross-canadian-${TRANSLATED_TARGET_ARCH} "

Within the external-cs-toolchain-cross-canadian.bb I had similar provides as well..

> to which bitbake complained:
> ERROR: Multiple .bb files are due to be built which each provide
> gcc-cross-canadian-mipsel
> (xxx/recipes-core/meta/external-xxx-toolchain_4.5.3.bb
> xxx/meta/recipes-devtools/gcc/gcc-cross-canadian_4.6.bb).
>   This usually means one provides something the other doesn't and should.
> (and the same for binutils).
>
> All I want is to dump the external toolchain tree into the SDK output.
>
> Any clues as to what I might be missing, or am I on the wrong path?
>
> Thanks,
> Manuel
>
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
>






More information about the Openembedded-core mailing list