Am Donnerstag, 25. August 2005 20:10 CEST schrieb David Kirchner: > On 8/25/05, Emanuel Strobl <Emanuel.strobl_at_gmx.net> wrote: > > Dear make gurus (bsd make, not gmake), > > > > it seems that make checks .if directives only at statrup. How can I > > trigger a "reread"? > > I have the problem that in one target I create a filetree, another > > target checks if it exists, if not it creates itself again. Now it > > works perfectly when I call the two targets both externally > > (installcfworld installcfconfig) but when the internal higher > > "install" gets to the installcfconfig target it fails! > > I'm really desperate, I need to check this. Is this a nasty bug? > > This Makefile shows the problem: > > all: > .if ! exists(./foobar) > _at_echo foobar does not exist > .endif > touch foobar > .if ! exists(./foobar) > _at_echo foobar does not exist > .endif > > If you run make in this directory, and foobar does not already exist > beforehand: > > $ make > foobar does not exist > touch foobar > foobar does not exist > > Looking at the make source, it appears that it maintains a cache for > file lookups, and I don't see a way to have it flush the hash via some > makefile command. I dunno if it is a bug but the man page does not > mention a cache. > > I wonder if you'll have to start a separate make process for each > stage of that target's handling. Thanks for your suggestion, you described exactly what I mean. So if there's no way to flush the cache, it's IMHO a wrong behaviour and should be considered as bug. I'm not too experienced in make, so I don't know if I want to call sub makes... Do you have an idea whom to contact regarding the "bug"? Thanks, -Harry
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:42 UTC