Binary Toolchain Steps

draft r0 michaelh

This page has some rough blueprints towards making a binary toolchain. Once reviewed these will be split out into real blueprints.

The same tools should be used for both Windows and Linux hosts, and baremetal and GLIBC targets.

We want others to be able to reproduce our results. In general we should use open source programs for everything including for the infrastructure.

Qualify Tools

  • Check, understand, and clarify the requirements
  • Cover any pending areas on build host, method, or requirements
  • Document qualities the build system must have such as:
    • Reliability
    • Reproducability
    • Extensability
    • Ability to add the GCC testsuite
    • Ability to add other testsuites
    • Health of the upstream project
    • Licensing (see TSC/LicenseSelection)

    • Re-use for baremetal vs libc and Windows vs Linux
  • Investigate crosstool-ng
  • Investigate tool #2
  • Investigate tool #3
  • Write up tools vs how they match our requirements and qualities

Note that tool #2 and #3 are to be found. Possibilities include the Android toolchain scripts, buildroot, Ubuntu packaging, and OpenEmbedded.

The write may be an email to linaro-toolchain saying "I've decided on tool A as it has X, Y, and Z. I checked tool B but it's missing P and Q, but does R really well..."

michaelh originally wanted to roll our own but now wants to reuse.

Initial build

  • Set up the build tool in version control (probably

  • Configure a bare-metal Linux hosted toolchain
  • Document what requirements aren't covered by the tool
  • Build
  • Exercise the toolchain
  • Set up a CI build

Initial Windows build

  • Acquire a MSDN license
  • Acquire VirtualBox or an alternative open source VM host

  • Set up and document the test virtual machines
  • Set up and document any support tools such as MSYS or Cygwin
  • On Linux, build a bare-metal Windows hosted Canadian-cross toolchain
  • Exercise
  • Discuss with DS-5 and Linaro

A Visual Studio Professional with MSDN license lets us install all current versions of Windows under a VM and use them for test.

Initial Linux build

  • Acquire a RHEL 5 license
  • Acquire VirtualBox or an alternative open source VM host

  • Set up and document the virtual machines
  • Build a bare-metal Linux hosted toolchain
  • Exercise
  • Discuss with DS-5 and Linaro

Note that this uses the tools existing GLIBC, if any. We need to switch to a Linaro LEB compatible GLIBC before release.


  • Add support for a dynamically linked Windows toolchain
  • Add support for a dynamically linked Linux toolchain
  • Add support for the correct multilibs
  • Add support for the Linaro LEB
  • Add support for any other advanced features not covered by the tool

The dynamically linked Linux toolchain will use rpath and $ORIGIN to find the .so's automatically.


  • Create a release test plan
  • Create a release note template
  • Create a release test report template
  • Build for Windows

MichaelHope/Sandbox/BinaryToolchainSteps (last modified 2011-10-02 21:37:45)