help-make
[Top][All Lists]
Advanced

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

Re: A build system using ``Recursive Make Considered harmful''


From: Nicholas Charles Leippe
Subject: Re: A build system using ``Recursive Make Considered harmful''
Date: Thu, 02 Aug 2001 10:17:09 -0600 (MDT)

Scott,

Hi.  I recently reread the paper a couple of months ago as well.
I spent a few weeks on and off and implemented a build system of
my own using the principles mentioned in the paper.  It is not
perfect yet, of course.  I think, however, that perhaps we could
collaborate with our two systems and combine them in some way to
have a more complete system--as they both solve different parts
of the problem.

My build system also:
- Correctly auto-(re)generates dependencies
- Is parallel build safe
- Performs the minimum work required
- Always generates a correct build
- Uses one shell script to generate dependency information
- Ignores portability--it assumes GNU make
- Has the same 'make clean' slowness and fragility (though
  I've eliminated some of it with a (dangerous) blanket
  rm -f `find ./ -name '*.o' -o -name '*.ui.h' -o -name '*.ui.cpp'`

My build system further:
- Handles QT projects including using QT designer .ui files
  (which are used to generate both .h and .cpp files)
- Has rudimentary cross-platform support (It can be used
  with Borland's compiler under Win32 using gcc and gnu
  make under cygwin for dependecy generation and make).
- Handles directory/modules in a completely recursive fashion
  (each included makefile can add to the directory list)

My build system does not:
- Support any option to do incremental linking in subdirs
- Handle multiple/overlapping executable targets (though that
  might be easy)
- Handle library support
- Provide a 'convenient' means to invoke make from within a
  subdirectory. (you'd have to do it from the top level dir
  and specify the full path to the target, or create an alias)
- Work with Autoconf or Automake in anyway (that I know of--it's
  been over a year since I played with them and I don't remember
  what has to be done to use them or provide templates for them)

I also found and fixed some issues with the pathname fixups in
Peter's paper--though I don't remember right now what they were
exactly nor what I did to fix them, just that it now works.
(I could check my cvs logs if it mattered though.)

> But, if we fix these warts, maybe we can convince people to trash the more
> crazy build systems that do use recursive make?
> 
> Its nice for things to 'just work', and in complete parallelization.
> 
> So, what do you think?

I think this is a great idea.  I was thinking of posting my build
system on freshmeat, but I have no place to host it yet, nor have
I really tested it in many configurations nor feel it is generic
enough for every project ppl might want to use it for.  Yours
sounds much further along where this is concerned.

I've even thought of creating a sourceforge project for it.
That might be the most appropriate way to handle getting it
hosted and allowing others an easy way to improve it.

I'm at work (so only access my mail via web interface and can't
get at your attachment to have a look just yet).  Also, my
files are at home and I have no cli mailer installed.  So if
you want to have a look at my files it'll have to wait until I
get home from work tonight.


Nick




reply via email to

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