crosstool-NG: initial support for powerpc-softfloat-uclibc toolchain

High Level Changes:

- Use crosstool-NG to build a toolchain for powerpc-softfloat-uclibc
- Update Makefiles to use powerpc-softfloat-uclibc toolchain

Each machine.make file now must specify an ONIE architecture by
setting the ONIE_ARCH variable.  The current crop of PowerPC based
machines will have this:

  ONIE_ARCH = powerpc-softfloat

The powerpc-softfloat-uclibc toolchain is configured with the
following:

- CPU architecture:  PowerPC Classic
- Sub architecture:  soft floating point, SPE disabled
- Linux Kernel Ver:  3.2.35
- C Library       :  uClibc 0.9.32.1

See build-config/conf/crosstool.$(ONIE_ARCH).config for the complete
details of the toolchain configuration.

Toolchain prefix, prepended to gcc, g++ and the binutils:

  powerpc-onie-linux-uclibc-<tool>

The following alias is also available:

  powerpc-softfloat-<tool>

Building the toolchain
======================

When building ONIE for a specific machine the toolchain for that
architecture will also be built if it has not been built already.  For
example, building the FSL evaluation board:

  build:~/onie$ make MACHINEROOT=../machine MACHINE=fsl_p2020rdbpca all

Since the toolchain takes a while to build you do not want rebuild it
every time you build ONIE.  To that end 'make clean' will *not* delete
the toolchain.  'make clean' will only remove the build products for
the specific machine:

  build:~/onie$ make MACHINEROOT=../machine MACHINE=fsl_p2020rdbpca clean
  # only cleans up the fsl_p2020rdbpca machine

To also delete the toolchain and completely start over make the
'distclean' target:

  build:~/onie$ make distclean
  # removes all toolchains and all machine build products

Note:  You must rebuild the toolchain if any of the following change:

  - Linux kernel version
  - uClibc version
  - uClibc configuration

Architecture Files
==================

The build-config/arch directory contains architecture specific files
sourced by the main Makefile at run time:

  build-config/arch/powerpc-softfloat.make

Some interesting variables in powerpc-softfloat.make:

  ARCH        ?= powerpc
  TARGET      ?= $(ARCH)-onie-linux-uclibc
  CROSSPREFIX ?= $(TARGET)-
  CROSSBIN    ?= $(XTOOLS_INSTALL_DIR)/$(TARGET)/bin

  KERNEL_ARCH = powerpc
  KERNEL_NEEDS_DTB = yes

  UBOOT_ENABLE = yes

TARGET and CROSSPREFIX are used when configuring and building the
various ONIE sub-components.

KERNEL_ARCH controls how to configure the Linux kernel during compilation.

KERNEL_NEEDS_DTB controls whether to build the device tree binary (DTB)
files for this architecture.  Not all architectures require DTB files.

UBOOT_ENABLE controls whether to build U-Boot for this architecture.
Not all architectures require U-Boot.

Configuration Files
===================

The $(ONIE_ARCH) variable is used to located the configuration files
for crosstool-NG, the Linux kernel and for uClibc:

  build-config/conf/crosstool.$(ONIE_ARCH).config
  build-config/conf/linux.$(ONIE_ARCH).config
  build-config/conf/uclibc.$(ONIE_ARCH).config

Additional compiler and linker options
======================================

You can add additional compiler and linker flags by editing
build-config/make/compiler.make.

  ONIE_CFLAGS	= -Os --sysroot=$(DEV_SYSROOT)
  ONIE_LDFLAGS	= --sysroot=$(DEV_SYSROOT)

To add extra CFLAGS or LDFLAGS use the "+=" operator on the
above variables.  For example to add debug information:

  ONIE_CFLAGS += -g

Various sysroots used for building ONIE
=======================================

3 sysroots are involved in building the final ONIE product:

- toolchain sysroot -- Built when the toolchain is built.  Contains
                       all the files needed by the toolchain.

- development sysroot -- Starts as an exact copy of the toolchain
                         sysroot.  Intermediate build products and
                         libraries are installed here.

- final sysroot -- final executables and libraries we really want
                   are installed here plus any additional files
                   required from the toolchain sysroot.  The final
                   sysroot has all of its binaries stripped.

Testing
=======

Compiled images and ran ONIE on machines with the following Freescale
CPUs:

- MPC8541 (e500)
- MPC8536 (e500v2)
- MPC8548 (e500v2)
- P2020   (e500v2)

Reviewed By: Dustin Byford <dustin@cumulusnetworks.com>