discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: FOSDEM and beyond (next stable release of base)


From: Nicola Pero
Subject: Re: FOSDEM and beyond (next stable release of base)
Date: Fri, 12 Feb 2010 22:16:21 +0000


And aggregate projects need a new API to decide whether you want to build the subprojects in parallel or not (a new variable to
 turn on parallel building of them might be enough).

I implemented this.

To build subdirectories, there are two new makefile fragments, parallel-subdirectories.make and serial-subdirectories.make.

Here is a full example --


include $(GNUSTEP_MAKEFILES)/common.make

SERIAL_SUBDIRECTORIES = Additions Source
PARALLEL_SUBDIRECTORIES = Resources SSL Tools

include $(GNUSTEP_MAKEFILES)/serial-subdirectories.make
include $(GNUSTEP_MAKEFILES)/parallel-subdirectories.make


this GNUmakefile will first build Additions and Source in that order (done by serial-subdirectories.make), and then will build Resources, SSL and Tools in parallel (done by parallel-subdirectories.make). Note that, as usual, the order in which you include the makefile fragments determines the order in which project types are
built.  This is still part of the API.

serial-subdirectories.make and parallel-subdirectories.make are meant to replace aggregate.make. I hope the new API is very clear, and should give a decent amount of control over how to build subdirectories. Obviously in a single GNUmakefile you can only have a serial-subdirectories step and a parallel-subdirectories step, but if you use multiple subdirectories you can then basically organize your project however you want in terms of what you want to build serialized or parallelized.

aggregate.make is still available (for backwards compatibility) and now behaves in the same way as serial-subdirectories.make, unless GNUSTEP_USE_PARALLEL_AGGREGATE=yes is set, in which case it behaves in the same way as parallel-subdirectories.make. Obviously if you use aggregate.make, you can not have a serial and a parallel subdirectories step in the same file; it's either one or the other one.

Finally, parallel-subdirectories.make can really speed things up when doing parallel builds on multicpu/multicore machines. Just switching from aggregate.make to parallel-subdirectories.make decreased build time by 2.5 times in a large project we have at work. ;-)

Comments welcome! :-)

There are still a number of issues that I need to work on (eg, race conditions while creating standard installation directories, etc). As the change in the API is pretty significant, I was now thinking of calling the new gnustep-make release 2.4.0 (instead of 2.2.1). :-)

Thanks




reply via email to

[Prev in Thread] Current Thread [Next in Thread]