Path: utzoo!attcan!utgpu!jarvis.csri.toronto.edu!cs.utexas.edu!samsung!cg-atla!fredex From: fredex@cg-atla.UUCP (Fred Smith) Newsgroups: comp.lang.c Subject: Re: MSC 5.1 make Message-ID: <8178@cg-atla.UUCP> Date: 18 Dec 89 18:48:39 GMT References: <1989Dec15.021527.18711@sjuphil.uucp> <884@thor.wright.EDU> Reply-To: fredex@cg-atla.UUCP (Fred Smith) Organization: Agfa Compugraphic Division Lines: 29 In article <884@thor.wright.EDU> sdawalt@wright.EDU (Shane Dawalt) writes: > I suspect that Microsoft may have >relaxed the strict rule flow of Unix so that non-Unix users could simply >list their files in any order and make would run without problems ... then >you have the Unix people wondering why MSC's make is so "strange." :-) > > Shane > >sdawalt@cs.wright.edu It seems to me, if I understand you, that you have it backwards. in Unix's make you can list the targets in any old order you please, and as long as you tell make which target to build (and define properly the dependencies) it will know how to do so. It either builds, or acts as if it had built, a dependency tree which, once built, can simply be traversed in-order, building each target as necessary. When done all things required for building the main target will have been built,so that it can then build said target. What MSC's make does is to move the dependency order work from the program to the PROGRAMMER. It is necessary for the objects to be listed in the makefile top to bottom in dependency order. If the first listed target depends on the third one, then you are out of luck, because the stupid thing doesn't know how to build the third one until it has completely finished processing the first `and second ones. It then will NOT go back and do the first, because it is simply traversing the makefile in first to last order. Fred