[oe] Using pre-built binary CodeSourcery Lite as external toolchain
Denys Dmytriyenko
denis at denix.org
Tue Nov 18 01:12:53 UTC 2008
On Mon, Nov 17, 2008 at 02:55:36PM -0600, Mike Turquette wrote:
> On Mon, Nov 17, 2008 at 12:12 AM, Denys Dmytriyenko <denis at denix.org> wrote:
> > On Sun, Nov 16, 2008 at 11:18:49PM -0600, Mike Turquette wrote:
> >> Hi all,
> >>
> >> I'm attempting to write an external-csl-toolchain_2007q3-51 recipe for
> >> Poky. This uses Poky's POKYMODE mechanism which is why I've copied
> >> the poky list on this email, however I think my error isn't
> >> necessarily Poky-specific as it has wider applications for anyone
> >> using an external toolchain.
> >>
> >> Attached is external-csl-toolchain_2007q3-51.bb. It is basically a
> >> clone of Poky's external-csl-toolchain_2006q3-27.bb except that
> >> do_stage adds more stuff. ${STAGING_DIR_TARGET}${base_libdir} does
> >> have libc.so.6 in it but libtool doesn't seem to be picking it up and
> >> instead tries (and fails) to link against my host /lib/libc.so.6,
> >> which seems like a Very Bad Thing to me.
> >>
> >> Why can't libtool find and use the libc I have in staging? What do
> >> the normal compiled toolchains provide that I am not? Also, does
> >> binconfig.bbclass know the difference between *-native packages and
> >> cross-compiled ones? I know prebuilt toolchains aren't all the rage
> >> with OE devs, but some customers refuse to use toolchains built from
> >> source :(
> >
> > Mike,
> >
> > I'm sorry I'm not that familiar with Poky and the way it works with external
> > toolchains. But after numerous fixes (many of which are commited to OE .dev
> > branch) and several lines of additional configuration in my local.conf, I was
> > able to use pre-built binary CodeSourcery 2007q3 toolchain, as well as
> > MontaVista Pro 5, by using the standard meta/external-toolchain.bb recipe.
>
> Denys,
>
> Thanks for your reply. I was looking for info on how to accomplish
> that same thing using POKYMODE and last night I got it working. The
> two attached files make the most sense with respect to Poky, but can
> be generalize to OE if needed.
>
> Hopefully someone will benefit from them. I'll stop cross-posting to
> the lists now ;)
Mike,
I'm glad it worked for you with Poky. Just as a reference, I'm posting my
setup of OpenEmbedded/Angstrom for using pre-built binary CodeSourcery Lite as
external toolchain, which been working for me for quite some time. You can
also check my setup at http://github.com/wmills/arago/tree
--
Denys
-------------- next part --------------
diff -ur arago-oe-dev/conf/distro/angstrom-2008.1.conf arago/conf/distro/angstrom-2008.1.conf
--- arago-oe-dev/conf/distro/angstrom-2008.1.conf 2008-11-17 14:31:27.000000000 -0500
+++ arago/conf/distro/angstrom-2008.1.conf 2008-11-17 17:19:29.000000000 -0500
@@ -125,11 +125,11 @@
PREFERRED_VERSION_binutils-cross-sdk_avr32 = "2.17"
# Virtuals:
-PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}binutils = "binutils-cross"
-PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc-initial = "gcc-cross-initial"
-PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc-intermediate = "gcc-cross-intermediate"
-PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc = "gcc-cross"
-PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}g++ = "gcc-cross"
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}binutils = "external-toolchain"
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc-initial = "external-toolchain"
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc-intermediate = "external-toolchain"
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc = "external-toolchain"
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}g++ = "external-toolchain"
# hostap stuff, we prefer the in-kernel modules, but those don't work for all machines
PREFERRED_PROVIDER_hostap-conf ?= "hostap-conf"
@@ -144,7 +144,7 @@
PREFERRED_PROVIDER_virtual/xserver ?= "xserver-kdrive"
# Others:
-PREFERRED_PROVIDER_linux-libc-headers = "linux-libc-headers"
+PREFERRED_PROVIDER_linux-libc-headers = "external-toolchain"
PREFERRED_PROVIDER_dbus-glib = "dbus-glib"
PREFERRED_PROVIDER_esound ?= "pulseaudio"
PREFERRED_PROVIDER_gconf ?= "gconf-dbus"
diff -ur arago-oe-dev/conf/distro/include/angstrom-glibc.inc arago/conf/distro/include/angstrom-glibc.inc
--- arago-oe-dev/conf/distro/include/angstrom-glibc.inc 2008-10-24 18:03:47.000000000 -0400
+++ arago/conf/distro/include/angstrom-glibc.inc 2008-11-06 18:09:33.000000000 -0500
@@ -1,18 +1,18 @@
# glibc:
-PREFERRED_PROVIDER_virtual/libiconv ?= "glibc"
-PREFERRED_PROVIDER_virtual/libintl ?= "glibc"
-PREFERRED_PROVIDER_virtual/libc ?= "glibc"
-PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libc-initial ?= "glibc-initial"
-PREFERRED_PROVIDER_linux-libc-headers ?= "linux-libc-headers"
+PREFERRED_PROVIDER_virtual/libiconv ?= "external-toolchain"
+PREFERRED_PROVIDER_virtual/libintl ?= "external-toolchain"
+PREFERRED_PROVIDER_virtual/libc ?= "external-toolchain"
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libc-initial ?= "external-toolchain"
+PREFERRED_PROVIDER_linux-libc-headers ?= "external-toolchain"
#Set preferred provider for the C library that is used to build the crosscompiler (NPTL voodoo)
-PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libc-for-gcc = "glibc"
-PREFERRED_PROVIDER_virtual/arm-angstrom-linux-gnueabi-libc-for-gcc = "glibc"
-PREFERRED_PROVIDER_virtual/armeb-angstrom-linux-gnueabi-libc-for-gcc = "glibc"
-PREFERRED_PROVIDER_virtual/arm-angstrom-linux-libc-for-gcc = "glibc"
-PREFERRED_PROVIDER_virtual/powerpc-angstrom-linux-libc-for-gcc = "glibc"
-PREFERRED_PROVIDER_virtual/mipsel-angstrom-linux-libc-for-gcc = "glibc"
-PREFERRED_PROVIDER_virtual/sparc-angstrom-linux-libc-for-gcc = "glibc"
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libc-for-gcc = "external-toolchain"
+PREFERRED_PROVIDER_virtual/arm-angstrom-linux-gnueabi-libc-for-gcc = "external-toolchain"
+PREFERRED_PROVIDER_virtual/armeb-angstrom-linux-gnueabi-libc-for-gcc = "external-toolchain"
+PREFERRED_PROVIDER_virtual/arm-angstrom-linux-libc-for-gcc = "external-toolchain"
+PREFERRED_PROVIDER_virtual/powerpc-angstrom-linux-libc-for-gcc = "external-toolchain"
+PREFERRED_PROVIDER_virtual/mipsel-angstrom-linux-libc-for-gcc = "external-toolchain"
+PREFERRED_PROVIDER_virtual/sparc-angstrom-linux-libc-for-gcc = "external-toolchain"
TARGET_OS = "linux${@['','-gnueabi'][bb.data.getVar('TARGET_ARCH',d,1) in ['arm', 'armeb'] and bb.data.getVar('MACHINE',d) not in ['collie','h3600', 'h3800', 'simpad', 'htcwallaby']]}"
diff -ur arago-oe-dev/conf/distro/include/angstrom.inc arago/conf/distro/include/angstrom.inc
--- arago-oe-dev/conf/distro/include/angstrom.inc 2008-11-17 14:31:27.000000000 -0500
+++ arago/conf/distro/include/angstrom.inc 2008-11-17 17:26:35.000000000 -0500
@@ -7,7 +7,7 @@
DISTRO = "angstrom"
DISTRO_NAME = "Angstrom"
-TARGET_VENDOR = "-angstrom"
+TARGET_VENDOR ?= "-none"
# Add FEED_ARCH to overrides
OVERRIDES .= ":${FEED_ARCH}"
@@ -18,7 +18,7 @@
PSTAGE_EXTRAPATH = "${ANGSTROM_MODE}"
CACHE = "${TMPDIR}/cache/${ANGSTROM_MODE}/${MACHINE}"
-DEPLOY_DIR = "${TMPDIR}/deploy/${ANGSTROM_MODE}"
+DEPLOY_DIR ?= "${TMPDIR}/deploy/${ANGSTROM_MODE}"
require conf/distro/include/angstrom-${ANGSTROM_MODE}.inc
# ARM920T and up can use thumb mode to decrease binary size at the expense of speed
-------------- next part --------------
# Enable following 4 lines to use binary CodeSourcery Lite 2007q3
TARGET_VENDOR = "-none"
SDK_PREFIX = "/opt/arm-2007q3"
TARGET_CPPFLAGS_append = " -I${SDK_PREFIX}/${TARGET_SYS}/libc/usr/include "
TARGET_LDFLAGS_prepend = " -L${SDK_PREFIX}/${TARGET_SYS}/libc/lib -Wl,-rpath-link,${SDK_PREFIX}/${TARGET_SYS}/libc/lib "
# Enable following 5 lines to use MontaVista Pro 5.0
#TARGET_VENDOR = "v5tl-montavista"
#TARGET_PREFIX = "arm_v5t_le-"
#SDK_PREFIX = "/opt/montavista/pro/devkit/arm/v5t_le"
#TARGET_CPPFLAGS_append = " -I${SDK_PREFIX}/target/usr/include "
#TARGET_LDFLAGS_prepend = " -L${SDK_PREFIX}/target/lib -Wl,-rpath-link,${SDK_PREFIX}/target/lib "
ASSUME_SHLIBS += "libc.so.6:libc6 libm.so.6:libc6 libutil.so.1:libc6 libcrypt.so.1:libc6"
ASSUME_SHLIBS += "libdl.so.2:libc6 libpthread.so.0:libc6 librt.so.1:libc6 libgcc_s.so.1:libgcc1"
More information about the Openembedded-devel
mailing list