Re: Idea: Allow $(name ...) as an abbrevation of $(call name ....)

2019-06-10 Thread Masahiro Yamada
On Mon, Jun 10, 2019 at 12:46 PM David A. Wheeler wrote: > > On Mon, 10 Jun 2019 11:56:04 +0900, Masahiro Yamada > wrote: > > It is a design. > > Sure, but we can add to it. > > > In summary, there is slight difference between > > a variable and a user-defined function. > > Omitting 'call' makes

Re: Idea: Add .COMMANDCHANGE and .CACHE

2019-06-10 Thread David A. Wheeler
On further reflection I noticed a bug in my .CACHE proposal. Below is a discussion of the bug, and my proposed solution to it. The proposed solution turns out to be a minor change, but it might not be obvious why it needed changing. So I'm explaining that in detail below. TL; DR version: If .CACH

Re: Idea: Add .COMMANDCHANGE and .CACHE

2019-06-10 Thread David A. Wheeler
On Mon, 10 Jun 2019 15:40:53 -0800, Britton Kerin wrote: > No, just the rules that :Makefile, which you can easily tune if it matters. > Heck, you can include some_fragment.mk that has the recipes that > are a concern and depend on that if you really need that granularity, > and then the dependen

Re: Idea: Enable .ONESHELL to be per-target

2019-06-10 Thread David Boyce
> You can probably make a case for either one, but .ONESHELL already exists, so let's just expand what's already there. It's also worth noting that .ONESHELL is a recommendation from POSIX. There's a note in POSIX.2 that says something along the lines of "Recipes should have been passed to a singl

Re: Idea: Add .COMMANDCHANGE and .CACHE

2019-06-10 Thread Britton Kerin
On Mon, Jun 10, 2019 at 2:18 PM David A. Wheeler wrote: > > On Mon, 10 Jun 2019 12:10:26 -0800, Britton Kerin > wrote: > > The trickery required is not too fancy: > > > > foo.o: foo.c Makefile > > ... > > or > > > > foo.o: foo.c $(PARANOID_REBUILD) > > ... > >

Re: Idea: Enable .ONESHELL to be per-target

2019-06-10 Thread David A. Wheeler
> On Mon, Jun 10, 2019 at 4:56 AM David A. Wheeler > wrote: > > Another idea: Enable .ONESHELL to be per-target. On Mon, 10 Jun 2019 11:47:19 -0800, Britton Kerin wrote: > Strongly seconded, I would definitely use this. I've been > attracted to it many times but never dared try globally. > Wo

Re: Idea: Allow $(name ...) as an abbrevation of $(call name ....)

2019-06-10 Thread David A. Wheeler
On Mon, 10 Jun 2019 22:46:23 +0100, Tim Murphy wrote: > If you can't make first-class functions that are the equal of $(filter) or > $(subst) or whatever, or indeed replace them, then it seems like a bit of a > fudge for the sake of 4 characters. You can make functions that do the work of $(filte

Re: Idea: Add .COMMANDCHANGE and .CACHE

2019-06-10 Thread David A. Wheeler
On Mon, 10 Jun 2019 12:10:26 -0800, Britton Kerin wrote: > The trickery required is not too fancy: > > foo.o: foo.c Makefile > ... > or > > foo.o: foo.c $(PARANOID_REBUILD) > ... > > Then use when desired: > (export PARANOID_REBUILD=Makefile && Make) N

Re: Idea: Allow $(name ...) as an abbrevation of $(call name ....)

2019-06-10 Thread Tim Murphy
If you can't make first-class functions that are the equal of $(filter) or $(subst) or whatever, or indeed replace them, then it seems like a bit of a fudge for the sake of 4 characters. I think one could end up having huge discussions about this to a pretty limited benefit and miss spending the t

Re: Idea: Add .COMMANDCHANGE and .CACHE

2019-06-10 Thread Britton Kerin
On Mon, Jun 10, 2019 at 9:20 AM David A. Wheeler wrote: > > Idea: Add .COMMANDCHANGE and .CACHE > > Problem: > > Paul Smith noted on Sun, 09 Jun 2019 22:11:32 -0400: > > Most of the requests I see these days that would require a "last state > > database" wouldn't be helped by md5 checks: mainly th

Re: Idea: Enable .ONESHELL to be per-target

2019-06-10 Thread Britton Kerin
On Mon, Jun 10, 2019 at 4:56 AM David A. Wheeler wrote: > > Another idea: Enable .ONESHELL to be per-target. > > Problem: According to the docs .ONESHELL is global in effect, > so using it in an existing makefile requires a lot of rework. Strongly seconded, I would definitely use this. I've been

Idea: Add .COMMANDCHANGE and .CACHE

2019-06-10 Thread David A. Wheeler
Idea: Add .COMMANDCHANGE and .CACHE Problem: Paul Smith noted on Sun, 09 Jun 2019 22:11:32 -0400: > Most of the requests I see these days that would require a "last state > database" wouldn't be helped by md5 checks: mainly they're asking for > things like rebuilding targets automatically when co

Idea: Enable .ONESHELL to be per-target

2019-06-10 Thread David A. Wheeler
Another idea: Enable .ONESHELL to be per-target. Problem: According to the docs .ONESHELL is global in effect, so using it in an existing makefile requires a lot of rework. In many cases .ONESHELL is primarily only useful only for specific rules, and there's no need to rewrite the rest. The curre

Re: Idea: Automatically correct timestamps

2019-06-10 Thread dmitrii . pasechnik
On Sun, Jun 09, 2019 at 10:11:32PM -0400, Paul Smith wrote: > On Sun, 2019-06-09 at 18:24 -0400, David A. Wheeler wrote: > > Proposed solution: > > By default, make should check the timestamp of the non-.PHONY target(s) > > produced after > > executing a rule, and ensure that their timestamps are

Re: Idea: Allow $(name ...) as an abbrevation of $(call name ....)

2019-06-10 Thread Masahiro Yamada
Hi. On Mon, Jun 10, 2019 at 10:55 AM Paul Smith wrote: > > On Sun, 2019-06-09 at 18:53 -0400, David A. Wheeler wrote: > > There's also no need for it. If "name" is followed by whitespace it *cannot* > > be a POSIX variable reference, because POSIX doesn't allow that. > > > > Solution: > > Just al

Re: Idea: Allow certain special targets as dependencies

2019-06-10 Thread Britton Kerin
On Sun, Jun 9, 2019 at 7:46 PM Masahiro Yamada wrote: > > On Mon, Jun 10, 2019 at 10:38 AM Paul Smith wrote: > > > > On Sun, 2019-06-09 at 18:46 -0400, David A. Wheeler wrote: > > > As syntactic sugar, > > > I'd like to see selected special targets allowed as dependencies. > > > When this happens

Re: Idea: Allow certain special targets as dependencies

2019-06-10 Thread Britton Kerin
On Sun, Jun 9, 2019 at 2:47 PM David A. Wheeler wrote: > > Idea: Allow certain special targets as dependencies > > Problem: > It's often the case that a target also needs to be a special target. E.g.: > .PHONY: all > all: do-this do-that > > Obviously this *works*, but it consumes many extra lines