Path: utzoo!attcan!utgpu!jarvis.csri.toronto.edu!mailrus!uflorida!ufqtp!bernhold
From: bernhold@qtp.ufl.edu (David E. Bernholdt)
Newsgroups: comp.software-eng
Subject: Do people really use Make?
Message-ID: <634@orange.qtp.ufl.edu>
Date: 11 Aug 89 02:45:13 GMT
Reply-To: bernhold@qtp.ufl.edu (David E. Bernholdt)
Organization: University of Florida Quantum Theory Project
Lines: 53


I guess the subject says most of it.  Do people use the generic unix
make utility to build programs?  What alternatives are available/in
use?  I've read about cake -- I'm sure there must be others.

My situation is probably not unique: My group maintains a research
code of > 300,000 lines.  It presently runs on many different
hardware/OS combinations, as many non-unix as unix.  The "master"
source is kept on a single machine and "remote" machines have
pre-processed copies of the source which are compilable on that
hardware/OS.

As you might imagine, making sure all of the changes a propagated to
all machines properly can be a real nightmare.  I am trying to develop
a set of makefiles which are general (I don't want to spend my life
tailoring makefiles for every program tha comes along) and have the
ability to
	1) generate an executable from either un- or pre-processed
	   source (for unix-based machines)
	   NOTE: In some cases, this will involve making a number of
	   different executables even from a single pre-processed
	   source.  For example, a Sun network where you need SPARC,
	   Sun3-FPA and Sun3-68881 executables.
	2) generate a source "update" for non-unix machines (and
	   probably a script for the OS which will build the
	   new/changed pieces and make a new executable to go with it)
The code is mainly fortran, but I would like the makefiles to be able
to handle C, shell, etc. as well.

A colleague (sp?) of mine developed a pretty general set of makefiles
and a "generator" for them.  It satisfies (1) pretty well, but is
inadequate for (2), and does not readily admit of other languages.

He and I are working on an improved version, and the more I try to
make a clean, general makefile, the more frustrated I get.  Our
initial decision was that we should stay with the generic make because
that means one less "support tool" to port to each machine we want to
run on.  It is fairly important to us that a new installation of our
code not require too much baggage, but I am becoming ever more
strongly convinced that make is not the right tool for the job.  What
I know about cake, for example, tells me that it would handle this
*much* better.

I am interested in your own experiences -- with projects of this
"scope" (its not the size of the code, but that we have to run it
wherever we can get time) and with make and make replacements.

Thanks...
-- 
David Bernholdt			bernhold@qtp.ufl.edu
Quantum Theory Project		bernhold@ufpine.bitnet
University of Florida
Gainesville, FL  32611		904/392 6365