[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