Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!uunet!munnari.oz.au!metro!natmlab.dap.csiro.au!hades!greyham From: greyham@hades.ausonics.oz.au (Greyham Stoney) Newsgroups: comp.software-eng Subject: Anyone know of a "better" 'make' than vanilla System-V's?. Message-ID: <1990Oct3.000440.5275@hades.ausonics.oz.au> Date: 3 Oct 90 00:04:40 GMT Organization: Ausonics Pty Ltd, Sydney, Australia Lines: 34 My company is working on a medium-to-large software project for which we use standard System-V 'make' to specify the rules by which objects are made from source files, and for specifying the source file dependancies. There are some problems with this however, which lead me to ask if there is anything better we could use; In particular, 'make' seems to have the following annoying problems & deficencies: * The Makefile is assumed to reside in the current directory and each Makefile must contain the rules saying how to make objects, since make's built-in rules aren't right. We have well over 100 Makefiles in one project; most of which contain basically the same information; but with minor differences. Eg: they all contain the same command to put an object in a library, although the library name differs. Changing the name of the librarian utility (if we needed to) would be impossible (have to change 100+ Makefiles just to do that). * Dependancies must be explicitly listed in the Makefile; and they are never kept up to date: No ammount of forcing people is going to keep them up to date, and it's a pretty pointless exercise anyway. In order to control the rules with which our objects are made, we delta Makefiles which makes it even worse since to update the depenancies you have to get the thing for editing. Why can't the dependancies be discerned from the source file at make time?. Are there any make-like systems that conquer these two basic problems?. Greyham. -- /* Greyham Stoney: Australia: (02) 428 6476 * greyham@hades.ausonics.oz.au - Ausonics Pty Ltd, Lane Cove, Sydney, Oz. * Neurone Server: Brain Cell not Responding. */