UPX Compression of libLLVM
Recently we published CI to build cross-platform builds of libLLVM with universal Mac binaries and statically-linked libstdc++ on Windows. We have done some simple optimisation but the length of the build cycle means we haven’t explored that as thoroughly as we want to and have gone mostly for low-hanging fruit.
One of the tools that we used was UPX, a high-performance executable packer for several executable formats. Unfortunately, we encountered difficulties in optimising the Mac builds, which is already large since it contains two architectures. Linux saw a significant improvement but on Windows the compression was so significant that I was initially concerned it had failed.
| Platform | Built | UPX |
|---|---|---|
| Linux | 115Mb | 75Mb |
| MacOS | 203Mb | - |
| Windows | 75Mb | 20Mb |
If you can suggest better ways of optimising these builds, pull requests are welcome!
Two new public repos: