For those not aware of what Crosstool-NG is, it is certainly the most up-to-date and useful tool to build cross-compilation toolchains. It provides a menuconfig interface (similar to the one used in the Linux kernel) to define the various parameters of the cross-compilation toolchain you intend to build (architecture, C library to use, versions of the C library, gcc, gdb, and many more configurable items), and then will automatically fetch, extract, patch, configure, build and install all the different elements of a toolchain into a working cross-compilation toolchain.
Internally, Crosstool-NG is essentially a set of shell scripts that automate the building process, and also a number of patches that gets applied to the different toolchain components in order to fix known issues.
The toolchains produced by Crosstool-NG are relocatable (you can install them wherever you want), and can be used directly, or integrated into a embedded Linux build system. A good sign of Crosstool-NG quality and popularity is the fact that Linaro has been using it since quite some time to generate its ARM, and more recently AArch64 toolchains.
This last Crosstool-NG release brings a number of interesting things:
- Update of many components: add support for Linaro GCC 2012.08, 2012.09, 2012.10, Linaro GDB 2012.09, official GCC 4.7.2, and Newlib 1.20.0.
- Many fixes to gcc, binutils, eglibc, backported from upstream, particularly thanks to Florian Fainelli from the OpenWRT project.
- Support for the Microblaze architecture. Interestingly, this support, and a number of other changes, have been contributed by David Holsgrove who works for Xilinx, the company designing the Microblaze architecture.
- Better support for the m68k architecture, especially through the addition of a known-working m68k-unknown-uclinux-uclibc sample. These have been contributed by Esben Haabendal, from Prevas, and who also maintains the OE-Lite embedded Linux build system.
- Custom location infrastructure. Contributed by David Holsgrove, this mechanism allows to tell Crosstool-NG to use locally-stored source trees for the compilation of gcc, gdb, binutils, elf2flt or newlib. This makes Crosstool-NG more convenient for people doing active development (and therefore source code modification) on the toolchain components.
In his release e-mail, Yann also notes:
To be noted, the samples now account for a much lower percentage of the changes. This, thanks to the switch to using defconfigs for samples, instead of full config files.
Also, I’m now using pathwork to manage the patches that are sent to the list. For those interested, I’ll detail my new workflow in a separate message (as a reply to this one). Globally, I’m very happy to be using patchwork, it has made things a bit easier to manage!