classes: Add recipe class to overrides

We have currently no override to detect a recipe being build cross, crosssdk
or for target at times we can use virtclass-native and virtclass-nativesdk to
override stuff in recipes but we dont have way to modify a variables
based on recipe type always.

This patch adds in such an override and in particular makes a target override
class available.

With this change now we can say:

EXTRA_OECONF_class-target = "...."
EXTRA_OECONF_class-native = "..."
EXTRA_OECONF_class-nativesdk = "..."
EXTRA_OECONF_class-crosssdk= "..."

Based of an original patch by Khem Raj

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
tcmode-default: Use SDKGCCVERSION ?= "${GCCVERSION}"

Usually they should be same if not defined to be different
by user. In this case if I override GCCVERSION in local.conf
then SDKGCCVERSION will also follow the suite.

Signed-off-by: Khem Raj <raj.khem@gmail.com>
gcc-configure: Pass distinct target flags

When building gcc-cross-canadian libgcc is built using
headers from gcc-crosssdk and not the target sysroot
because we do not pass proper CFLAGS for target bits
so it ends up using CFLAGS that were meant for compiling
canadian gcc itself. It does not show up as a problem
when building SDK with eglibc because eglibc-nativesdk
and eglibc have identical headers. The problem shows
up clearly when you try to build uclibc based meta-toolchain
since then nativesdk libc and target libc are different

Signed-off-by: Khem Raj <raj.khem@gmail.com>
gcc: Stash the gcc-cross builddir to reuse in libgcc and gcc-runtime

Currently we stash the libgcc install tree and then reuse that
to populate libgcc recipe later. This mechanism does not work
for gcc 4.7/trunk since now libstdc++ needs access to build tree
of libgcc. This patch stashes the gcc-cross build tree
and then reuses this in libgcc as well as in gcc-runtime
recipe builds.

Now we build libgcc in the libgcc recipe instead of just
using the prebuilt install tree

core-image-minimal build/run tested on all qemu machines

Signed-off-by: Khem Raj <raj.khem@gmail.com>
gcc-configure: Render --with-local-prefix harmless

this option by default points to /usr/local no matter
what so we cant let it sit on sidelines otherwise it
will access host machine's /usr/local which may not
be desired. So disable this option. This also helps in making
gcc's shared state more consistent

Signed-off-by: Khem Raj <raj.khem@gmail.com>
libgcc_4.6: Package libgcov nativesdk correctly

Signed-off-by: Khem Raj <raj.khem@gmail.com>
gcc-4.6: Remove redundant overrides

Use libc-uclibc override instead of TARGET_OS
override

Signed-off-by: Khem Raj <raj.khem@gmail.com>
gcc-4.6: Specify complete paths in require directive

This is needed for adjusting meta-linaro where linaro
gcc recipes leverage the core recipe infrastructure and
modifies minimal to keep compatibility with OE-Core
so that any changes in OE-Core gcc recipes does not
trigger changes in meta-linaro.

Signed-off-by: Khem Raj <raj.khem@gmail.com>
gcc-configure-common.inc: Use libc-uclibc override

Its better than duplicating the overrides

Signed-off-by: Khem Raj <raj.khem@gmail.com>
gcc-4.7: Add recipes

Add new recipes for gcc-4_7-branch right now gcc 4.7.0
is latest release from this branch

Signed-off-by: Khem Raj <raj.khem@gmail.com>
gcc-4.7: Define own do_configure_prepend

gcc-4.7 does not define STANDARD_INCLUDE_DIR

Signed-off-by: Khem Raj <raj.khem@gmail.com>
gcc-cross-canadian_4.7.bb: Override ARCH_FLAGS_FOR_TARGET

We need -isystem=${target_includedir} in there

Signed-off-by: Khem Raj <raj.khem@gmail.com>
gcc-crosssdk-intermediate: Use --with-native-system-header-dir for 4.7

--with-native-system-header-dir is relative to sysroot which
is what we want --with-headers is deprecated anyway

Signed-off-by: Khem Raj <raj.khem@gmail.com>
gcc-package-target: Add the dangling files to specific packages

create a new package to have lto dev packages bundled

Signed-off-by: Khem Raj <raj.khem@gmail.com>
gcc-4.7: Disable cloog and ppl

If build system has those libraries installed
gcc configure will pick them up. We want
consistent builds so we disable them since we
do not (yet) support them

Signed-off-by: Khem Raj <raj.khem@gmail.com>
gcc-4.7: Lower the internal consistency check level to release

This should help in speeding up compilation at the expense
of a bit less info when gcc ICEs but we dont get many gcc
ICEs and therefore using --enable-checking=release is
right balance

Signed-off-by: Khem Raj <raj.khem@gmail.com>
libgcc-4.7: Package libgcov nativesdk correctly

Signed-off-by: Khem Raj <raj.khem@gmail.com>
gcc-4.7: Use full relative path in require directive

This will help in meta-linaro where it will be able
to utilize maximum recipes from OE-Core and thereby
keep close compatibility with OE-Core gcc recipes

Signed-off-by: Khem Raj <raj.khem@gmail.com>
gcc-4.7: Let cpp specs honor include searches in relocated install tree

Fix from Yocto Bug 2074

Signed-off-by: Khem Raj <raj.khem@gmail.com>
gcc-4.7: Do not use --with-header option for cross-gcc

Signed-off-by: Khem Raj <raj.khem@gmail.com>