Internals

Backends

GCC ARM Embedded Backend

This backend builds bare metal compilers for ARM. It downloads the GCC ARM Embedded toolchains sources from the srcURL specified in config.json. It also downloads the prebuilt build tools from nativeTools. As these build tools are for i686 machines, we replace the gcc directory in the build tools folder with a x86_64-linux-gnu GDC native build. This also gives access to a gdc compiler which will be necessary for DDMD. We then also have to rebuild python for x86_64. nsis and installjammer work fine as 32bit binaries, so we can keep those. For MinGW builds we also replace the mingw-w64-gcc directory with a x86_64-w64-mingw32 gdc build.

We then extract the toolchain sources. Before calling the standard GCC ARM Embedded buildscript we apply gdc.diff. This is necessary to add the d option to the languages configure argument. We also add --disable-libphobos and --disable-werror flags using this patch. --disable-werror is necessary as we build with a newer mingw GCC which generates more warnings in binutils.

Note: unlike the original build scripts we do not build for i686 linux, we build for x86_64 linux. This is caused by a limitation of the build scripts which always build for the native machine arch.

devkitPro Backend

This backend builds bare metal compilers based on devkitpro.org build scripts. DevkitPro generates compilers for Nintendo GBA, Nintendo DS, Nintendo 3DS, Nintendo Gamecube, Nintendo Wii, Nintendo WiiU as well as Sony PSP. All these toolchains except for the PSP tooclhain are supported by the GDC docker build container. The GCC version used in the PSP toolchain is not supported by GDC. The build container builds an addon which the toolchain user has to install in addition to the devkitpro.org base toolchains.