Re: make ".if exists" problem/question

From: Giorgos Keramidas <keramida_at_freebsd.org>
Date: Thu, 25 Aug 2005 21:46:14 +0300
On 2005-08-25 20:36, Emanuel Strobl <Emanuel.strobl_at_gmx.net> wrote:
> Am Donnerstag, 25. August 2005 20:10 CEST schrieb David Kirchner:
> > 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"?

You can call a sub-make with the help of an ``auxiliary'' target:

%       all: create-file show-file
%
%       create-file:
%       .if ! exists(./foobar)
%               _at_echo foobar does not exist
%       .endif
%               touch foobar
%
%       show-file:
%               _at_$(MAKE) show-file-aux
%
%       show-file-aux:
%       .if ! exists(./foobar)
%               _at_echo foobar does not exist
%       .else
%               _at_ls -l foobar
%       .endif

This should result in something like this:

%       orion:/tmp/foobar$ make
%       foobar does not exist
%       touch foobar
%       -rw-rw-r--  1 keramida  wheel  0 Aug 25 21:44 foobar
%       orion:/tmp/foobar$
Received on Thu Aug 25 2005 - 16:46:22 UTC

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