[oe] Usage of meta recipe external-toolchain-csl

Denys Dmytriyenko denis at denix.org
Fri Apr 30 17:58:23 UTC 2010


On Fri, Apr 30, 2010 at 09:53:06AM -0700, Tom Rini wrote:
> On Fri, 2010-04-30 at 15:34 +0200, Jerry Jacobs wrote:
> > Dear all,
> > 
> > I'm very new to openembedded and already have a clear view how it is
> > structured. My embedded board mini2440 is already in git and want to create
> > my own distro.
> > The problem where I bump against is how to use the Codesourcery external
> > toolchain for my target. I know there is the file in recipes/meta/
> > external-toolchain-csl.bb
> > but it not clear how to use it.
> 
> There's 2 ways.  One way is, in local.conf:
> ### CSL public ARM does <arch>-none-<os>, so fill in the -none
> TARGET_VENDOR = "-none"
> ### Bring in external-toolchain-csl.bb
> TOOLCHAIN_BRAND = "csl"
> ### Where the CSL version is installed.
> TOOLCHAIN_PATH = "/full/path/to/arm-2009q3"
> ### Where inside the CSL install the target libraries exist.
> TOOLCHAIN_SYSPATH = "${TOOLCHAIN_PATH}/arm-none-linux-gnueabi"
> ### Add tools to the PATH automatically.
> PATH_prepend = "${TOOLCHAIN_PATH}/bin:"
> require conf/distro/include/toolchain-external.inc
> 
> The other way has a few less variables in local.conf but assumes PATH is
> already updated.  Denys will reply shortly with that, I imagine.

The only difference I have from Tom's setup is I expect the CSL toolchain 
being already in the PATH variable:

export PATH=/full/path/to/arm-2009q1/bin:$PATH

And then set the other several BitBake variables accordingly (in local.conf 
and toolchain-csl.conf):

TARGET_VENDOR = "-none"
# no need to include/require toolchain-external.inc, as TOOLCHAIN_TYPE does it
TOOLCHAIN_TYPE = "external"
TOOLCHAIN_BRAND = "csl"

[There I also set CPPFLAGS and LDFLAGS to point to CSL directly, but it's not 
required as necessary files are staged by the recipe these days.]

The "black magic" in the local.conf is basically a Python code to set 
TOOLCHAIN_PATH and TOOLCHAIN_SYSPATH based on the user's PATH:

TOOLCHAIN_PATH = "${@code-to-extract-csl-path-from-PATH}"
TOOLCHAIN_SYSPATH = ${TOOLCHAIN_PATH}/${TARGET_SYS}

So, with my setup, no modifications to local.conf are required, as long as CSL 
is in your PATH. With Tom's setup, users would need to add the CSL path to 
local.conf.

Hope this helps.

-- 
Denys




More information about the Openembedded-devel mailing list