Re: Idea: Automatically correct timestamps

2019-06-09 Thread Jeffrey Walton
On Sun, Jun 9, 2019 at 10:38 PM Paul Smith wrote: > On Sun, 2019-06-09 at 18:24 -0400, David A. Wheeler wrote: > > ... > > In many cases I suspect this would eliminate calls for using md5 > > hashes and special state; I suspect many of those requests are really > > trying to deal with problems of

Re: Idea: Allow certain special targets as dependencies

2019-06-09 Thread Masahiro Yamada
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, it's the same thing as if the target was listed > > as a dependency

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

2019-06-09 Thread David A. Wheeler
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 obscure the difference between them. I don't think it obscures the differe

Re: Idea: Automatically correct timestamps

2019-06-09 Thread David A. Wheeler
On Sun, 09 Jun 2019 22:11:32 -0400, Paul Smith wrote: > I don't think this can work, as-is. > > It's a common paradigm in make (including POSIX make) where there is a > rule that could cause a very expensive operation to be started, to > instead make a cheap test and if it determines the expensiv

Re: Idea: Automatically correct timestamps

2019-06-09 Thread Paul Smith
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 at least equal to the > timestamps to the files that caused execution

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

2019-06-09 Thread Paul Smith
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 allow $(name ...), where 1+ whitespace follows name, to be considered >

Re: Idea: .MUSTCREATE

2019-06-09 Thread Paul Smith
On Sun, 2019-06-09 at 19:21 -0400, David A. Wheeler wrote: > If I understand correctly, that means that a single: > .WONTCREATE: > will be enough to detect a problem if *all* my rules > are supposed to always create the non-PHONY targets. Yes, that's the idea. ___

Re: Idea: Allow certain special targets as dependencies

2019-06-09 Thread Paul Smith
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, it's the same thing as if the target was listed > as a dependency of the special target. E.g., you could express > the same thing

Re: Idea: .MUSTCREATE

2019-06-09 Thread David A. Wheeler
On Sun, 09 Jun 2019 18:34:47 -0400, Paul Smith wrote: > A pseudo-target .WONTCREATE: > If that target exists in the makefile then the target existence > checking is enabled, as follows: > - Any PHONY rule is not considered > - After any target is built that actually invoked at least one command, >

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

2019-06-09 Thread David A. Wheeler
I propose allowing $(name ...) as an abbrevation of $(call name ). Problem: You currently have to use the somewhat ugly construct $(call name...) to call something. If you use functions a lot that's a little ugly. There's also no need for it. If "name" is followed by whitespace it *cannot* b

Idea: Allow certain special targets as dependencies

2019-06-09 Thread David A. Wheeler
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 & requires duplication of target names. For example, if you misspell t

Re: Idea: .MUSTCREATE

2019-06-09 Thread Paul Smith
On Sun, 2019-06-09 at 17:13 -0400, David A. Wheeler wrote: > I propose a new special target .MUSTCREATE. > Its prerequisites would list the targets that would fail in error > if the target rule is run and it fails to create the target. > If there's nothing on the list, then all non-.PHONY targets w

Re: Idea: Automatically correct timestamps

2019-06-09 Thread David A. Wheeler
Replying to myself: If people are uncomfortable making this the default behavior, then MAKETIMEADJUSTMAX could default to undefined or 0, and then the outer check would be if {defined(MAKETIMEADJUST) && MAKETIMEADJUST>0) { ... } That would mean that people would have to opt into the behavior

Idea: Automatically correct timestamps

2019-06-09 Thread David A. Wheeler
I'd like to propose that "make" automatically correct timestamps by default. Details below. Problem: Distributed systems are cheap now, enabling "make" to gets lots done in a short amount of wall clock. Unfortunately, it's impossible to keep clocks exactly aligned in a distributed system. Network

Idea: .MUSTCREATE

2019-06-09 Thread David A. Wheeler
I've had several ideas I'd like to run them by everyone. I'm posting them as separate emails so they can be discussed separately. In this email I'd like to propose a new special target .MUSTCREATE. Background: In my makefiles a target should *always* be either .PHONY or create that file when its r