Home Articles News bleeding-edge-toolchain (r)evolution?
bleeding-edge-toolchain (r)evolution?
User Rating: / 4
PoorBest 
Written by Freddie Chopin   
Wednesday, 12 October 2016 12:07

As I grew tired of solving problems caused by bizarre workflow of ARM employees and also realized that solving incompatibilities between various Linux distributions is probably impossible, I decided to make a next step. So I present you a preview of a new all-in-one shell script for toolchain compilation, which is supposed to slightly change current form of bleeding-edge-toolchain.

For now I've tested this script on Linux only (on my PC, on a different machine and in Travis-CI system - Ubuntu 12.04.5 LTS "precise"), but soon I'm going to test it on Windows. It's quite possible that even now this script would work in MSYS2 on Windows, but this was not tried yet. The idea is to stop distributing toolchains for Linux in "binary" form - this script will allow anyone to build the toolchain that will work for sure on given distribution. I know that such compilation doesn't last 30 seconds, but it also doesn't last half a day - in here everything (including download of all sources) took 22 minutes. On very slow Travis-CI virtual system it took 80 minutes. I think such amount of time can be sacrificed once every few months, especially that you can do anything else during the compilation [; If someone wants to make this time much shorter, then just find a line with "--with-multilib-list=armv6-m,armv7-m,armv7e-m,armv7-r" in the script and remove what you don't use (WARNING - there are two identical lines in the script, they both must stay identical!). Windows versions will most likely be still distributed in "binary" form, as this platform has no such issues with library compatibility.

Anyway - the script generally does everything that is required - it downloads the sources of the toolchain and required libraries in proper versions, extracts them and then configures & compiles each in proper order. This idea is obviously not new and there are many scripts like this one, but all that I know of are either not developed anymore or just not entirely the way they should be. The script should not require anything fancy to work, the standard set present in any Linux distribution should be enough - the only exception are the tools needed to generate documentation ("makeinfo", which usually is a part of a package like "texinfo"). I encourage anyone to try it out, if something doesn't work as expected let me know - either here in the comments or file an issue at GitHub. I'll also be very happy to hear that it is working correctly (;

Current versions of toolchain components are - obviously - most recent (; More recent than in the toolchain from ARM <:

  • gcc-6.2.0 + multilib patch
  • newlib-2.4.0.20160923
  • binutils-2.27
  • gdb-7.12
  • expat-2.2.0
  • gmp-6.1.1
  • isl-0.16
  • libelf-0.8.13
  • mpc-1.0.3
  • mpfr-3.1.5
  • zlib-1.2.8
Last Updated on Friday, 14 October 2016 10:33