[oe] openembedded with a prebuilt external toolchain

Tom Rini tom_rini at mentor.com
Thu Feb 10 20:58:27 UTC 2011


On 02/10/2011 01:24 PM, Joey Oravec wrote:
> Hi,
>
> I'm trying to use openembedded with an external prebuilt toolchain. The
> docs at http://docs.openembedded.org/usermanual/usermanual.html mark
> this as TODO so maybe we can "do" that in this email chain. :)
>
> Marvell provides a *.tar.gz with gcc and C libraries, which I've
> uncompressed somewhere in my home directory. My goal is to build a root
> filesystem with some assortment of packages, but at this point I'm just
> trying "bitbake nano" which is the very first example in the Getting
> Started. That seems like a logical start to board bring-up.
>
> I'm assuming that I need to add some lines to build/conf/local.conf that
> tell OE to make no attempt at building its own compiler or C library (it
> can't anyway, it doesn't know my chip!) and to call my pre-built one
> instead. It looks like I'd want to add a few lines about TOOLCHAIN_*,
> but that uses a recipe for external toolchain, which assumes that it has
> some meta toolchain, and I'm floundering and getting nowhere. Couldn't
> find any of these magic variables documented in the usermanual so I've
> been digging through recipes to learn any of this.
>
> Is it possible to add a few lines that tell OE the path and filename of
> my compiler? Or is it more complicated than that?

We talked about this a little on IRC and I provided the example of how 
to use the CodeSourcery recipes that exist today.  The marvell toolchain 
however will need it's own special love.  To start with, using the CSL 
recipe is roughly:
### CSL public ARM does <arch>-none-linux, so fill in the -none.
#TOOLCHAIN_VENDOR = "-none"
### CSL public ia32 does i686-pc-linux, so fill in the -pc.
#TOOLCHAIN_VENDOR = "-pc"

#### Bring in external-toolchain-csl.bb
#TOOLCHAIN_BRAND = "csl"
#TOOLCHAIN_TYPE = "external"

### Where the CSL version is installed.
#TOOLCHAIN_PATH = "/scratch/ia32-2010.09"
### Where inside the CSL install the target libraries exist.
#TOOLCHAIN_SYSPATH = "${TOOLCHAIN_PATH}/i686-pc-linux-gnu"
### Add tools to the PATH automatically.
#PATH_prepend = "${TOOLCHAIN_PATH}/bin:"

Now what you'll want to do is make an external-toolchain-marvell.bb and 
set TOOLCHAIN_BRAND to "marvell" and tweak TOOLCHAIN_VENDOR such that we 
go from what OE normally says TARGET_SYS is to what your tools actually 
say it is.  Then it's a matter of tweaking the contents of 
external-toolchain-marvell.bb to copy the right things out of the 
marvell install and into where OE wants them.  In this regard, the -csl 
recipe may be more instructive than the -generic recipe as the -generic 
recipe (along with external-toolchain.bb) are targeted at toolchains 
exported by OE and thus require little mangling to work.

-- 
Tom Rini
Mentor Graphics Corporation




More information about the Openembedded-devel mailing list