Re: make ".if exists" problem/question

From: Emanuel Strobl <Emanuel.strobl_at_gmx.net>
Date: Thu, 25 Aug 2005 20:36:52 +0200
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

Received on Thu Aug 25 2005 - 16:37:11 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:42 UTC