bug-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

losing cached no-such-file messages from includes


From: David Boyce
Subject: losing cached no-such-file messages from includes
Date: Thu, 4 Apr 2019 19:43:07 -0700

I encountered a surprising corner case recently; not clear whether it constitutes a bug.

The documentation is clear that when an include file is not found make sits on the message for a while in case the file can be made. That I understand, but there are two surprising behaviors which result. First, only the most recent missing include file message seems to be cached:

$ cat Makefile
include no_such_file_1
include no_such_file_2
include no_such_file_3
all:;@:

$ make
Makefile:3: no_such_file_3: No such file or directory
make: *** No rule to make target 'no_such_file_3'.  Stop.

Second, if make is aborted by $(error ...) no cached messages are printed at all:

$ cat Makefile
include no_such_file_1
include no_such_file_2
include no_such_file_3
$(error DIE HERE)
all:;@:

$ make
Makefile:4: *** DIE HERE.  Stop.

Imagine a config file which is supposed to set BASEDIR followed by an assert to make sure it's present:

include cfgfile
$(if $(BASEDIR),,$(error Error: BASEDIR not set))

The result of not finding cfgfile is *only* the "BASEDIR not set" error - nothing about the include file. It's easy to see how a person could waste lots of time going through the code in cfgfile trying to figure out why it doesn't set BASEDIR before eventually realizing it isn't included at all. So: bug or just-how-it-is?

David

reply via email to

[Prev in Thread] Current Thread [Next in Thread]