Vesta SCM @ risicato.org

Cross Compilers in Vesta

Software development at risicato.org uses a collection of cross compilers. Traditionally, the vesta runtool is ported to the target platform, and applications are compiled natively. This option isn't ideal when targeting embedded devices. Typically, the CPU in embedded devices has limited CPU and memory resources, making the compiler slow. Also, using runtool ported to each CPU architecture requires that a machine with that architecture be available to process build commands. By using cross-compilers, build speed is good, and only PC's running GNU/Linux on and AMD64 CPU are needed to build for any of the supported architectures. The cross-compiler scheme also allows targeting both 32 bit and 64 bit Windows without having to port Vesta to Windows.

Desktop and Server Software Development

Desktop and server software targeting GNU/Linux on an amd64 CPU use native GCC compilers. For GNU/Linix on an i386, or all MS Windows targets (32 bit and 64 bit) a cross-compiler is used. All targets mentioned here have cross compilers in the main Debian GNU/Linux repository.

  • 64 bit GNU/Linux (amd64)
  • 32 bit GNU/Linux (i386)
  • 64 bit MS Windows (amd4)
  • 32 bit MS Windows (i686)

Embedded Software Development

Cross compilers for embedded development are obtained from the Cross Toolchain pages from the Debian project. These compilers are built from the same sources used to create Debian's desktop compilers.

The following embedded platforms are expected to be configured in the risicato.org repository.

  • 32 bit i586 GNU/Linux (i386)
  • 32 bit ARMv7 GNU/Linux (armhf)
  • 32 bit MIPS GNU/Linux (mipsel)

Other targets are fairly easy to include. The only reasons they haven't been included is that they are not used at risicato.org, are obsolete, are still in development, and/or there's no hardware available on site to me to test cross compilers output.

The following cross development tools are available from Debian and can be easily added to the build system.

  • 32 bit ARM GNU/Linux (armel)
  • 64 bit ARMv8 GNU/Linux (aarch64 / arm64)
  • 64 bit Itainium GNU/Linux (ia64)
  • 32 bit MIPS GNU/Linux (mips)
  • 32 bit PowerPC GNU/Linux (powerpc)
  • 64 bit PowerPC GNU/Linux (ppc64el)
  • IBM S/390 GNU/Linux (s390)
  • IBM System z GNU/Linux (s390x)

The following environments are in development at Debian, and can be added with the possibility that the tools aren't 100% stable.

  • 64 bit MIPS EL GNU/Linux (mips64el)
  • OpenRISC 1200 GNU/Linux (or1k)
  • PowerPC SPE GNU/Linux (powerpcspe)
  • 64 bit SPARC GNU/Linux (sparc64)
  • SuperH GNU/Linux (sh)
  • 32/64bit amd64 GNU/Linux (x32)

The following environments are no longer supported by Debian.

  • DEC Alpha GNU/Linux (alpha)
  • ARM GNU/Linux (arm), replaced by armel
  • SPARC GNU/Linux (sparc)
  • 32 bit Atmel AVR32 GNU/Linux (avr32)
  • HP PA-RISC GNU/Linux (hppa)
  • M32R GNU/Linux (m32)
  • 68000 GNU/Linux (m68k), being revived
Last Updated on  April 27th, 2017