gnustep-dev
[Top][All Lists]
Advanced

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

core/make redesign


From: Nicola Pero
Subject: core/make redesign
Date: Sat, 9 Feb 2002 12:56:10 +0000 (GMT)

Just thought I would write an email to report on the ongoing work on
gnustep-make.

gnustep-make is undergoing a deep redesigning and reorganization, as you
probably saw on CVS.

The 'old' gnustep-make (by 'old' I'm talking of 1.2.x) was a mature
package, stable, doing its job, but the internals were quite
unsatisfactory to me.  I'm slowly turning the 'old' gnustep-make into a
'new' gnustep-make, which has a much cooler design, and many substantial
advantages, in terms of maintenability and design at least.

The main issues which are addressed by this rewrite are - 

 - making clear what the processing flow inside gnustep-make is.  This is
   essential to go on with any further improvements, in particular with
   the other improvements in this list :-)

 - allowing different projects to share makefile code.  This is an
   essential improvement.  It's too silly that we had the same code to
   install headers repeated in every makefile for a project installing
   headers.  And it's very annoying to maintain it, because each change
   must be repeated many times. (and it's like that for most code we have,
   it's repeated the same everywhere).

 - allowing us to produce new project types which inherit code from
   existing projects very quickly, elegantly and simply. (not that
   the traditional copy&paste is not quick and maybe simple ;-), but it's
   not elegant and makes maintaining the resulting code very boresome,
   tiresome and ugly).

 - a lot of other minor design improvements and wishes

The main areas of work currently are - 

 - separating code for different make invocations.  To help people (and
   myself) visualize what happens, I've given names to the make
   invocations - I called the per-GNUmakefile make invocation the 'Master'
   invocation, and the per-task-to-do submake invocations the 'Instance'
   invocations.

   This is an on-going task.  I'm slowly converting all makefiles to this
   new organization.  The main 'rules.make' etc makefiles are already
   mostly converted.  It is also an occasion to perform optimizations,
   tidyups and cleanings around.

 - factor out common Instance invocation code into Instance/Shared/*.make
   make fragments.  I've factored out java.make and headers.make to now.
   This is all experimental.  Anyway in general the experiment is a
   success, because it works and we are sharing code succesfully and
   elegantly.  I think it's just wonderful.

 - a lot of other minor tasks and reorganizations which I'm performing
   slowly day after day.

Up to now I've been able to keep the whole thing stable and working all
the time ... hope to go on with this in the future.




reply via email to

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