Both Link Time Optimization (LTO) and C++20 Modules will benefit from a closer interaction between build system and compiler. LTO benefits from parallelizing the LTO step by spawning separate compilations and Modules can discover new dependencies during compilation. Both of these task are traditionally under control of a build system.

Currently, GCC's LTO can use GNUMake's jobserver protocol to control its direct spawning subjobs. C++20 modules can make use of a proposed protocol[*], or use pre-scanning. This project aims to unify these approaches providing (a) client/server librar{y,ies} to manage communication (b) extend the proposed protocol to cover LTO requirements (c) provide a sample implementation for GCC/GNUmake.



John Ravi


  • Nathan Sidwell
  • Martin Li┼íka