[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
Re: FOSDEM and beyond (next stable release of base), Quentin Mathé, 2010/02/09
Re: FOSDEM and beyond (next stable release of base), Riccardo Mottola, 2010/02/09
Re: FOSDEM and beyond (next stable release of base), Lars Sonchocky-Helldorf, 2010/02/10