tech-toolchain archive

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

Re: make -- generate missing include files



Hi Tobias,

Am Sun, Nov 06, 2022 at 06:02:23PM +0100 schrieb Tobias Nygren:
> > What does "include file is not found" mean?   Do you mean "foo.h is a
> > dependency of bar.c, but foo.h does not exist, and there is no rule to
> > make foo.h?"   If so, why aren't there rules?  If not, please clarify.
> 
> The feature that is suggested is to make this work:
> 
> ---8<---
> on-the-fly.mk:
> 	printf ".PHONY: greet\ngreet:\n\t@echo Hello, world\n" > $@
> 
> .include "on-the-fly.mk"
> ---8<---
> $ make greet
> 
> This works with GNU make if you change the include line to
> "include on-the-fly.mk".

Correct, that's exactly the feature.

> Is this feature supported by any BSD derived make? At least it doesn't
> seem to work on FreeBSD. It looks difficult to implement because
> parsing and target execution happen in separate stages ...

The way I believe this is implemented is that when a missing include
file is encountered, GNU make stops parsing and pretends the makefile
ends right there.  Then, make tries to build the missing include file
as a target.  If that succeeds, the parsing process is restarted from
the top.  Some logic is added to ensure that each iteration of a
missing include makes progress, preventing infinite loops.

Other implementations are thinkable, but this one seems reasonably
straightforward: just add a mechanism to abort the parsing and substitute
the target given on the command line for the missing include file and
add a flag to tell make "what you just built is a missing include file;
start again with the real target after it has been built."

> Kind regards,
> -Tobias

Yours,
Robert Clausecker

-- 
()  ascii ribbon campaign - for an 8-bit clean world 
/\  - against html email  - against proprietary attachments



Home | Main Index | Thread Index | Old Index