This is an overview of what building and adding a compiler to the site looks like, using GCC as an example, but note that the process is similar for all other types of compilers.
- Build GCC versions with the relevant magic. We build all our own GCCs using Docker from this repo
- For non-trunk builds we manually run the docker image. For trunk dailies we have a cron job that runs a script to build them.
- Built tarballs are uploaded to S3, and installed by our custom tool from a YAML configuration file
- The installation puts compilers on a shared NFS drive at
/opt/compiler-explorer/gcc-some-version/
- We then configure CE to look for the compiler here.
- If we need to customise the way we execute the compiler and/or display the results, then we can change the "driver" for the compiler. Usually we can just override a few aspects of the driver, relying on the defaults from the base driver.
- Any UI changes are a bit more work.
More info still in Adding a Compiler, and if you can bear listening to Matt, here's a talk about some behind the scenes stuff, with slides online.