Binary Toolchain Requirements

draft r0

This page contains what michaelh1 thinks the requirements for a binary toolchain build are. I've put question marks on areas that need to be comfirmed or checked.

Goal

Provide an up-to-date, validated binary build of the current Linaro Toolchain outputs that run on Linux and Windows and can be used to build programs for the LEB.

Requirements

Languages:

  • C and C++
  • Binutils with ld and gold
  • May include Fortran and Java
  • Turns on all new features to match Ubuntu's style (gold, build IDs, etc)
  • Sysroot comes from the current LEB release (currently Maverick)

Targets:

  • ABI compatible with the LEB
  • Thumb-2
  • Tuned for Cortex-A9
  • Compatible with Cortex-A8, i.e. enables the errata workarounds
  • NEON FPU (VFPv3D16 instead?)
  • Compatible with the LEB runtime libraries which are libgcc, libstdc++, ...?

Environment:

  • Windows and generic Linux
  • Native application, no compatibility layer
  • Windows
    • Supported on all current Windows versions with the latest service pack
    • Windows XP Pro SP3
    • Windows Vista Business SP2
    • Windows 7 Pro
    • Windows 8 Pro
  • Linux
    • Supported on the four most popular Linux distributions
    • Supported on the latest release for all
    • Supported on the LTS equivalent for all
    • Ubuntu 11.04 and later
    • Fedora 14 and later
    • Debian 6.0.?
    • openSUSE 11.4?
  • Supported on 32 bit and 64 bit installations
    • If a 32 bit build, must have the same capabilities as the corresponding 64 bit build
  • Appropriate for use under:
    • Windows NT CMD prompt
    • Cygwin
    • Eclipse Helios CDT 3.6.2
  • Allow community patches for others such as MacOS, FreeBSD
  • Build scripts may be Linux hosted. The Windows build does not have to be buildable on Windows.

Deliverables:

  • Linux tarball
  • Windows zip file
  • Windows installer?
  • Documentation such that an entry level engineer can install and exercise
  • Scripts to reproduce the binary
  • Instructions to reproduce
  • Instructions on basic customisation

Validation:

  • Run the GCC testsuite with real board as target
  • Run the GCC testsuite with QEMU as target
  • No unavoidable regressions compared to a native testsuite run
  • May run these under Cygwin
  • Exercise by building other libraries:
    • zlib
    • Python, providing its dependencies are small
  • Test on a Windows 32 bit host
  • Test on a Ubuntu 11.? ?? bit host

Support:

  • Have a landing page?
  • Provide installation documentation
  • Provide release notes documenting what is in a particular build
  • Support via linaro-toolchain
  • Support via Launchpad bugs
  • The Bug URL and similar shall point to the right place
  • Support is the same as the source release, i.e.:
    • No long-term branches
    • Bugs are fixed in the latest release only
    • Sysroot is updated six monthly when the next release comes out
    • Triage and response times as per the toolchain Flyer

Delivery:

  • Via Launchpad
  • Stable releases every 4 months
  • Build daily snapshots from Jenkins/Cbuildv2.
  • Available within 1 week of source release. Preferably available on the same day.

Excluded:

  • Multilib
  • Non-Cortex-A builds

MichaelHope/Sandbox/BinaryToolchainRequirements (last modified 2013-08-29 00:24:17)