The GNU make jobserver Implementation (2015)

The paper delves into GNU make jobserver implementation, explaining how GNU make can invoke multiple commands in parallel and how jobserver solves the problem of coordinating jobs across different instances of make in a recursive build environment. The jobserver feature uses a simple pipe system, with unique considerations for handling signals and file descriptor events simultaneously. The process is thoroughly detailed with emphasis on reliability, portability, and simplicity. The implementation, developed in collaboration with Howard Chu, Paul Eggert, Tim Magill, and Roland McGrath, was optimized over time to handle race conditions and issues with signal handling on different operating systems like Solaris. Various alternative solutions, including using threads and an internal pipe with select, were considered and dismissed.

https://make.mad-scientist.net/papers/jobserver-implementation/

To top