Attached is an update for the port of jobserver to Windows that I originally submitted in October of 2010. The updated patch includes the following changes.
1) Added ChangeLog entries for each function that was changed or added. 2) Updated jobserver semaphore function calls to include GetLastError() in error messages. 3) If -jN is specified to the child gmake, close the jobserver semaphore when we disable the jobserver. 4) Limit number of simultaneous jobs to (MAXIMUM_WAIT_OBJECTS - 1), which is currently 63. Unfortunately, there have been problems with the copyright assignment for the original patch. The issue is currently in the hands of the FSF lawyers and I'm waiting to hear back from them. However, I've received multiple requests for an updated version of the jobserver patch so I'm submitting this for anybody who'd like to give it a try. Once the copyright assignment issues are resolve, this is the patch that should be included in the GNU make trunk. For anyone who's interested, Paul Smith has an excellent write-up of what the GNU make jobserver is and how it works which can be found here: http://mad-scientist.net/make/jobserver.html. The original UNIX pipe jobserver implementation doesn't work well on Windows so this patch implements the jobserver mechanism using a Windows named semaphore. Most of the code that implements the GNU make jobserver is the same for UNIX and Windows. The differences mainly have to do with creating/destroying/acquiring/releasing the semaphore and integrating the semaphore into GNU make's Windows process control layer. --Troy Runkel
windows_jobserver.diff
Description: windows_jobserver.diff
_______________________________________________ Make-w32 mailing list Make-w32@gnu.org https://lists.gnu.org/mailman/listinfo/make-w32