Re: link: "Recursive Make Considered Harmful"

看板DFBSD_kernel作者時間21年前 (2005/01/11 05:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串5/31 (看更多)
On Sun, 9 Jan 2005 17:16:44 -0500, George Georgalis <george@galis.org> wrote: > HI - > > On Sun, Jan 09, 2005 at 04:49:34PM +0100, Simon 'corecode' Schubert wrote: > >On Sunday, 9. January 2005 16:39, Joerg Sonnenberger wrote: > >> > I've been mulling over the pdf file linked here > >> > http://www.pcug.org.au/~millerp/rmch/recu-make-cons-harm.html > >> > Recursive Make Considered Harmful, Peter Miller > >> This paper outlines a lot of problems of gmake and the use of gmake. > >> It doesn't apply to BSD make so such, because most of our tree uses > >> very small Makefiles which can't be merged into a simple master > >> Makefile without a lot of hassle, possible even reducing speed for > >> certain usage patterns. > > I'm not sure I understand that. Very small targets can fit in a global > Makefile, with addition of path (and still do their one thing very > well); the trees don't have to change... of course you do have to start > from the top and work down, to migrate. > > The paper says there's nothing wrong with "make"; it's addressing > recursive build schemes. > > <snip> > >i think our build system is nice and polished, but sucks wrt speed. it > >runs down the tree multiple times. that's just evil. here, figuring out > >that nothing has to be done (make quickworld after make quickworld) > >needs several minutes. with a complete dependancy graph, this could be > >figured out in seconds (see kernel make). > > > I'm not really qualified to say one way is best, and with my current > project, modular and monolithic approaches helped in their own ways. > I started with a modules, mostly 2 but as many as 3 levels deep. That > helped a lot with organizing and partitioning the tasks for the first > run through, but when I needed to make major changes, following that > was not as easy. About that time I got the link and I've been pushing > the targets back into the global Makefile. So, nevermind the build > time, it seems easier develop modularly but maintain non-recursive > Makefiles... YMMV > > Does recursive make provide any benefits other than human organization? > My feeling is to continue to develop (and I'm scripting, not coding C) > modular (recursive) Makefiles but with the plan of pushing them back to > a global Makefile at some point, which amounts to not assuming $PWD but > defining ./ with a macro. > > // George > > -- > George Georgalis, systems architect, administrator Linux BSD IXOYE > http://galis.org/george/ cell:646-331-2027 mailto:george@galis.org > I can but wonder if ths simple scheme would work: 1. We make some way to do #include on a makefile 2. When we #include a makefile, we alter it's target and dependencies so that they get the proper path 3. At the end of reading the top-tree makefile memory has a master makefile and we don't have to change any of the inner ones. Example just in case I din't explain: top/Makefile --- @include fs/Makefile @include kernel/Makefile all: kernel link -o kernel fs/all.ar kernel/all.ar --- top/fs/Makefile --- all.ar: inodes.o superblock.o --- top/kernel/Makefile --- all.ar: timer.o sched.o list.o --- resulting in-memory master makefile: --- # pwd = top # @include fs/Makefile # pwd == top/fs # original: all.ar: inodes.o superblock.o # replacing: $PWD/all.ar: $PWD/inodes.o $PWD/superblocks.o #replaced: top/fs/all.ar: top/fs/inodes.o top/fs/superblocks.o # @endinclude fs/Makefile # pwd = top # @include kernel/Makefile # pwd == top/kernel # original: all.ar: timer.o sched.o list.o # replacing: $PWD/all.ar: $PWD/timer.o $PWD/sched.o $PWD/list.o #replaced: top/kernel/all.ar: top/kernel/timer.o top/kernel/sched.o top/kernel/list.o # @endinclude kernel/Makefile #pwd = top --- I'm not that big a make hacker, but it can't be that bad internally... did I miss something totally obvious??? -- Greetz, Antonio Vargas aka winden of network http://wind.codepixel.com/ Las cosas no son lo que parecen, excepto cuando parecen lo que si son.
文章代碼(AID): #11ulHN00 (DFBSD_kernel)
討論串 (同標題文章)
文章代碼(AID): #11ulHN00 (DFBSD_kernel)